From 571ceffeefa002f49b238e093bd3237b69420e55 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 27 Apr 2022 17:10:09 +0000 Subject: [PATCH] Update to comunica/comunica-feature-reasoning#f98b46b17ca1bf373bbf438e07b19d6b422cebc5. --- builds/default/queries.json | 2 +- builds/default/scripts/ldf-client-worker.min.js.map | 2 +- builds/file-browser/queries.json | 2 +- builds/file-browser/scripts/ldf-client-worker.min.js | 2 +- builds/file-browser/scripts/ldf-client-worker.min.js.map | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/builds/default/queries.json b/builds/default/queries.json index 996347516..590177238 100644 --- a/builds/default/queries.json +++ b/builds/default/queries.json @@ -1 +1 @@ -{"queryFormats":{"sparql":true,"graphql":true},"context":{"@comunica/bus-rdf-reason:rules":"@comunica/bus-rdf-dereference:constant-hylar-rdfs"},"branding":{"title":"Comunica Reasoning","title_href":"https://comunica.dev/research/reasoning/","subtitle":"Using default config","subtitle_href":"https://github.com/comunica/comunica-feature-reasoning/blob/c91faa83bcef220117bf15070356fa7551390db2/engines/config-reasoning/config/config-default.json"},"map":{"url":"https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw","attribution":"Map data © OpenStreetMap contributors, Imagery © Mapbox"},"solidAuth":{"settingsOnly":false,"defaultIdp":"https://broker.pod.inrupt.com/"},"datasources":[{"name":"DBpedia 2016-04","url":"//fragments.dbpedia.org/2016-04/en"},{"name":"Ruben Verborgh's Profile","url":"https://ruben.verborgh.org/profile/"},{"name":"Ruben Taelman's Profile","url":"https://www.rubensworks.net/"},{"name":"Ruben Taelman's Publications","url":"https://www.rubensworks.net/publications/"},{"name":"Ruben Taelman's Experimental Profile","url":"https://rubensworks.solidcommunity.net/profile/card"},{"name":"Tim Berners-Lee's Profile","url":"https://www.w3.org/People/Berners-Lee/card"},{"name":"SPARQL 1.1 test suite manifest","url":"//w3c.github.io/rdf-tests/sparql11/data-sparql11/manifest-all.ttl"},{"name":"DBpedia SPARQL","url":"https://dbpedia.org/sparql"},{"name":"DBpedia 2015-10","url":"//fragments.dbpedia.org/2015-10/en"},{"name":"DBpedia 2015-04","url":"//fragments.dbpedia.org/2015/en"},{"name":"DBpedia 2014","url":"//fragments.dbpedia.org/2014/en"},{"name":"Ghent University Academic Bibliography","url":"//data.linkeddatafragments.org/ugent-biblio"},{"name":"Linked Open Vocabularies","url":"//data.linkeddatafragments.org/lov"},{"name":"Virtual International Authority File (VIAF)","url":"//data.linkeddatafragments.org/viaf"},{"name":"Harvard Library","url":"//data.linkeddatafragments.org/harvard"}],"prefixes":{"rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdfs":"http://www.w3.org/2000/01/rdf-schema#","owl":"http://www.w3.org/2002/07/owl#","skos":"http://www.w3.org/2004/02/skos/core#","xsd":"http://www.w3.org/2001/XMLSchema#","dc":"http://purl.org/dc/terms/","foaf":"http://xmlns.com/foaf/0.1/","dbpedia":"http://dbpedia.org/resource/","dbpedia-owl":"http://dbpedia.org/ontology/","dbpprop":"http://dbpedia.org/property/","wdprop":"http://www.wikidata.org/prop/direct/","ruben":"https://ruben.verborgh.org/profile/#","rubent":"https://www.rubensworks.net/#","schema":"http://schema.org/","bow":"https://betweenourworlds.org/ontology/","lc":"http://semweb.mmlab.be/ns/linkedconnections#","mf":"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#"},"queries":[{"name":"All labels","datasources":[],"queryFormat":"graphql","query":"{\n label\n}","context":"{\n \"@context\": {\n \"label\": { \"@id\": \"http://www.w3.org/2000/01/rdf-schema#label\" }\n }\n}"},{"name":"Show 100 triples","datasources":[],"queryFormat":"sparql","query":"CONSTRUCT WHERE {\n ?s ?p ?o.\n}\nLIMIT 100"},{"name":"List things and their labels","datasources":[],"queryFormat":"sparql","query":"SELECT DISTINCT ?subject ?label WHERE {\n { ?subject dc:title ?label }\n UNION\n { ?subject rdfs:label ?label }\n}\nLIMIT 100"},{"name":"Explore object types","datasources":[],"queryFormat":"sparql","query":"SELECT DISTINCT ?type ?label WHERE {\n ?s a ?type.\n OPTIONAL {\n ?type rdfs:label ?label.\n }\n FILTER LANGMATCHES(LANG(?label), \"EN\")\n}\nLIMIT 100"}]} \ No newline at end of file +{"queryFormats":{"sparql":true,"graphql":true},"context":{"@comunica/bus-rdf-reason:rules":"@comunica/bus-rdf-dereference:constant-hylar-rdfs"},"branding":{"title":"Comunica Reasoning","title_href":"https://comunica.dev/research/reasoning/","subtitle":"Using default config","subtitle_href":"https://github.com/comunica/comunica-feature-reasoning/blob/f98b46b17ca1bf373bbf438e07b19d6b422cebc5/engines/config-reasoning/config/config-default.json"},"map":{"url":"https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw","attribution":"Map data © OpenStreetMap contributors, Imagery © Mapbox"},"solidAuth":{"settingsOnly":false,"defaultIdp":"https://broker.pod.inrupt.com/"},"datasources":[{"name":"DBpedia 2016-04","url":"//fragments.dbpedia.org/2016-04/en"},{"name":"Ruben Verborgh's Profile","url":"https://ruben.verborgh.org/profile/"},{"name":"Ruben Taelman's Profile","url":"https://www.rubensworks.net/"},{"name":"Ruben Taelman's Publications","url":"https://www.rubensworks.net/publications/"},{"name":"Ruben Taelman's Experimental Profile","url":"https://rubensworks.solidcommunity.net/profile/card"},{"name":"Tim Berners-Lee's Profile","url":"https://www.w3.org/People/Berners-Lee/card"},{"name":"SPARQL 1.1 test suite manifest","url":"//w3c.github.io/rdf-tests/sparql11/data-sparql11/manifest-all.ttl"},{"name":"DBpedia SPARQL","url":"https://dbpedia.org/sparql"},{"name":"DBpedia 2015-10","url":"//fragments.dbpedia.org/2015-10/en"},{"name":"DBpedia 2015-04","url":"//fragments.dbpedia.org/2015/en"},{"name":"DBpedia 2014","url":"//fragments.dbpedia.org/2014/en"},{"name":"Ghent University Academic Bibliography","url":"//data.linkeddatafragments.org/ugent-biblio"},{"name":"Linked Open Vocabularies","url":"//data.linkeddatafragments.org/lov"},{"name":"Virtual International Authority File (VIAF)","url":"//data.linkeddatafragments.org/viaf"},{"name":"Harvard Library","url":"//data.linkeddatafragments.org/harvard"}],"prefixes":{"rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdfs":"http://www.w3.org/2000/01/rdf-schema#","owl":"http://www.w3.org/2002/07/owl#","skos":"http://www.w3.org/2004/02/skos/core#","xsd":"http://www.w3.org/2001/XMLSchema#","dc":"http://purl.org/dc/terms/","foaf":"http://xmlns.com/foaf/0.1/","dbpedia":"http://dbpedia.org/resource/","dbpedia-owl":"http://dbpedia.org/ontology/","dbpprop":"http://dbpedia.org/property/","wdprop":"http://www.wikidata.org/prop/direct/","ruben":"https://ruben.verborgh.org/profile/#","rubent":"https://www.rubensworks.net/#","schema":"http://schema.org/","bow":"https://betweenourworlds.org/ontology/","lc":"http://semweb.mmlab.be/ns/linkedconnections#","mf":"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#"},"queries":[{"name":"All labels","datasources":[],"queryFormat":"graphql","query":"{\n label\n}","context":"{\n \"@context\": {\n \"label\": { \"@id\": \"http://www.w3.org/2000/01/rdf-schema#label\" }\n }\n}"},{"name":"Show 100 triples","datasources":[],"queryFormat":"sparql","query":"CONSTRUCT WHERE {\n ?s ?p ?o.\n}\nLIMIT 100"},{"name":"List things and their labels","datasources":[],"queryFormat":"sparql","query":"SELECT DISTINCT ?subject ?label WHERE {\n { ?subject dc:title ?label }\n UNION\n { ?subject rdfs:label ?label }\n}\nLIMIT 100"},{"name":"Explore object types","datasources":[],"queryFormat":"sparql","query":"SELECT DISTINCT ?type ?label WHERE {\n ?s a ?type.\n OPTIONAL {\n ?type rdfs:label ?label.\n }\n FILTER LANGMATCHES(LANG(?label), \"EN\")\n}\nLIMIT 100"}]} \ No newline at end of file diff --git a/builds/default/scripts/ldf-client-worker.min.js.map b/builds/default/scripts/ldf-client-worker.min.js.map index 7f1f9e1fa..3466b540a 100644 --- a/builds/default/scripts/ldf-client-worker.min.js.map +++ b/builds/default/scripts/ldf-client-worker.min.js.map @@ -1 +1 @@ -{"version":3,"file":"scripts/ldf-client-worker.min.js","mappings":"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AAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,GAAG,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,IAAI,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAA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AAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,I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OAAO,GAEd,KAAK,EAAE,OAAO,IAEd,KAAK,EAAE,OAAO,IAEd,KAAK,EAAE,OAAO,GAEd,KAAK,EAAE,OAAO,GAEd,KAAK,EAAE,OAAO,GAEd,KAAK,EAAE,OAAO,GAEd,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,GAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,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KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,GAAI,GAAI,MAAO,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,MAAO,KAAM,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,MAAO,KAAM,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,MAAO,KAAM,KAAM,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,IAAK,EAAG,EAAG,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,KAAM,EAAG,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,EAAG,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,KAAM,KAAM,EAAG,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,GAAI,GAAI,MAAO,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,EAAG,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,KAAM,EAAG,KAAM,EAAG,EAAG,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,MAAO,GAAI,GAAI,MAAO,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,EAAG,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,EAAG,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,GAAI,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,KAAM,EAAG,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,MAAO,GAAI,GAAI,MAAO,GAAI,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,KAAM,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,MAAO,GAAI,GAAI,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,KAAM,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,GAAI,KAAM,KAAM,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,KAAM,EAAG,EAAG,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,GAAI,GAAI,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,GAAI,MAAO,EAAG,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,KAAM,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,KAAM,EAAG,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,KAAM,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,GAAI,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,KAAM,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,KAAM,KAAM,EAAG,EAAG,EAAG,EAAG,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,GAAI,MAAO,GAAI,KAAM,KAAM,EAAG,EAAG,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,KAAM,EAAG,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,EAAG,KAAM,IAAK,KAAM,EAAG,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,GAAI,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,GAAI,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,MAAO,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,MAAO,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,KAAM,KAAM,EAAG,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,KAAM,EAAG,EAAG,KAAM,EAAG,EAAG,KAAM,EAAG,EAAG,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,MAAO,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,EAAG,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,KAAM,EAAG,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,GAAI,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,KAAM,KAAM,EAAG,EAAG,KAAM,GAAI,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,GAAI,GAAI,MAAO,GAAI,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,EAAG,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,KAAM,KAAM,EAAG,EAAG,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,EAAG,EAAG,KAAM,IAAK,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,KAAM,KAAM,EAAG,EAAG,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,IAAK,GAAI,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,KAAM,EAAG,EAAG,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,MAAO,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,KAAM,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,KAAM,EAAG,EAAG,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,GAAI,KAAM,KAAM,MAAO,KAAM,GAAI,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,GAAI,MAAO,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,KAAM,EAAG,KAAM,EAAG,KAAM,KAAM,EAAG,EAAG,KAAM,KAAM,EAAG,KAAM,EAAG,KAAM,KAAM,KAAM,EAAG,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,KAAM,EAAG,EAAG,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,KAAM,EAAG,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,KAAM,EAAG,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,KAAM,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,GAAI,MAAO,KAAM,IAAK,KAAM,EAAG,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,MAAO,IAAK,GAAI,IAAK,KAAM,KAAM,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,GAAI,IAAK,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAI,IAAK,GAAI,IAAK,KAAM,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,MAAO,GAAI,GAAI,MAAO,KAAM,MAAO,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,MAAO,EAAG,MAAO,EAAG,MAAO,MAAO,MAAO,EAAG,MAAO,MAAO,EAAG,EAAG,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,MAAO,EAAG,MAAO,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,MAAO,EAAG,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,KAAM,MAAO,EAAG,MAAO,EAAG,MAAO,EAAG,EAAG,EAAG,EAAG,EAAG,MAAO,MAAO,EAAG,MAAO,MAAO,MAAO,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,MAAO,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,GAAI,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,MAAO,GAAI,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,MAAO,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,MAAO,GAAI,GAAI,MAAO,KAAM,MAAO,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,MAAO,EAAG,MAAO,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,MAAO,EAAG,MAAO,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,KAAM,MAAO,EAAG,EAAG,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,KAAM,GAAI,MAAO,GAAI,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,GAAI,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,KAAM,MAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAO,EAAG,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,MAAO,MAAO,EAAG,MAAO,MAAO,EAAG,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,KAAM,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,KAAM,MAAO,EAAG,EAAG,MAAO,EAAG,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,MAAO,IAAK,GAAI,MAAO,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,GAAI,IAAK,GAAI,MAAO,KAAM,KAAM,MAAO,EAAG,MAAO,EAAG,MAAO,MAAO,EAAG,MAAO,MAAO,EAAG,EAAG,MAAO,MAAO,EAAG,MAAO,EAAG,EAAG,MAAO,MAAO,EAAG,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,MAAO,EAAG,EAAG,MAAO,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,MAAO,GAAI,GAAI,MAAO,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,MAAO,GAAI,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,MAAO,MAAO,EAAG,EAAG,MAAO,MAAO,EAAG,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,EAAG,MAAO,EAAG,EAAG,MAAO,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,MAAO,EAAG,MAAO,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,GAAI,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,KAAM,MAAO,EAAG,EAAG,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,KAAM,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,GAAI,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,MAAO,MAAO,EAAG,EAAG,EAAG,EAAG,EAAG,MAAO,MAAO,EAAG,MAAO,MAAO,EAAG,EAAG,EAAG,MAAO,KAAM,MAAO,EAAG,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,MAAO,EAAG,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,GAAI,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,MAAO,EAAG,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,GAAI,MAAO,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,KAAM,MAAO,EAAG,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,KAAM,MAAO,EAAG,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,MAAO,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,MAAO,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,KAAM,GAAI,MAAO,KAAM,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,IAAK,MAAO,MAAO,MAAO,KAAM,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,EAAG,MAAO,EAAG,MAAO,MAAO,EAAG,EAAG,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,MAAO,MAAO,EAAG,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,MAAO,IAAK,IAAK,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,MAAO,IAAK,GAAI,MAAO,IAAK,KAAM,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,MAAO,KAAM,GAAI,GAAI,MAAO,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,MAAO,KAAM,IAAK,IAAK,GAAI,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,MAAO,MAAO,GAAI,MAAO,KAAM,IAAK,GAAI,MAAO,mCCHnkhG/+F,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IAGtDD,EAAA,QAAkB,IAAI6+F,YAAY,CAAC,KAAM,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,GAAI,KAAM,GAAI,EAAG,EAAG,GAAI,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,GAAI,MAAO,GAAI,IAAK,GAAI,MAAO,GAAI,IAAK,GAAI,MAAO,GAAI,IAAK,IAAK,IAAK,GAAI,MAAO,yCCH9M,IAAI1mB,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgpF,YAAS,EACjB,IAAI08G,EAAcvtH,EAAgB,EAAQ,QACtCwtH,EAAW,IAAIv3L,IAAI,CACnB,QACA,SACA,WACA,SACA,SACA,WACA,aAEAw3L,EAAO,IAAIx3L,IAAI,CAAC,MAChBy3L,EAAmB,IAAIz3L,IAAI,CAAC,QAAS,UACrC03L,EAAU,IAAI13L,IAAI,CAAC,KAAM,OACzB23L,EAAU,IAAI33L,IAAI,CAAC,KAAM,OACzB43L,EAAmB,IAAIvgM,IAAI,CAC3B,CAAC,KAAM,IAAI2I,IAAI,CAAC,KAAM,KAAM,QAC5B,CAAC,KAAM,IAAIA,IAAI,CAAC,QAChB,CAAC,KAAM,IAAIA,IAAI,CAAC,QAAS,KAAM,QAC/B,CAAC,OAAQ,IAAIA,IAAI,CAAC,OAAQ,OAAQ,YAClC,CAAC,KAAM,IAAIA,IAAI,CAAC,QAChB,CAAC,IAAKw3L,GACN,CAAC,KAAMA,GACP,CAAC,KAAMA,GACP,CAAC,KAAMA,GACP,CAAC,KAAMA,GACP,CAAC,KAAMA,GACP,CAAC,KAAMA,GACP,CAAC,SAAUD,GACX,CAAC,QAASA,GACV,CAAC,SAAUA,GACX,CAAC,SAAUA,GACX,CAAC,WAAYA,GACb,CAAC,WAAYA,GACb,CAAC,SAAU,IAAIv3L,IAAI,CAAC,YACpB,CAAC,WAAY,IAAIA,IAAI,CAAC,WAAY,YAClC,CAAC,KAAM03L,GACP,CAAC,KAAMA,GACP,CAAC,UAAWF,GACZ,CAAC,UAAWA,GACZ,CAAC,QAASA,GACV,CAAC,aAAcA,GACf,CAAC,UAAWA,GACZ,CAAC,MAAOA,GACR,CAAC,KAAMA,GACP,CAAC,WAAYA,GACb,CAAC,aAAcA,GACf,CAAC,SAAUA,GACX,CAAC,SAAUA,GACX,CAAC,OAAQA,GACT,CAAC,SAAUA,GACX,CAAC,KAAMA,GACP,CAAC,OAAQA,GACT,CAAC,MAAOA,GACR,CAAC,KAAMA,GACP,CAAC,MAAOA,GACR,CAAC,UAAWA,GACZ,CAAC,QAASA,GACV,CAAC,KAAMA,GACP,CAAC,KAAMG,GACP,CAAC,KAAMA,GACP,CAAC,QAASF,GACV,CAAC,QAASA,KAEVI,EAAe,IAAI73L,IAAI,CACvB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,QAEA83L,EAAyB,IAAI93L,IAAI,CAAC,OAAQ,QAC1C+3L,EAA0B,IAAI/3L,IAAI,CAClC,KACA,KACA,KACA,KACA,QACA,iBACA,gBACA,OACA,UAEAg4L,EAAY,QACZp9G,EAAwB,WACxB,SAASA,EAAOq9G,EAAKp0L,GAEjB,IAAI4P,EAAI6C,EAAI6qD,EAAIC,EAAI0Q,OADJ,IAAZjuE,IAAsBA,EAAU,IAEpCrR,KAAKqR,QAAUA,EAEfrR,KAAK0lM,WAAa,EAElB1lM,KAAK2lM,SAAW,EAKhB3lM,KAAK4lM,aAAe,EACpB5lM,KAAK6lM,QAAU,GACf7lM,KAAK8lM,WAAa,GAClB9lM,KAAK+lM,YAAc,GACnB/lM,KAAKgmM,QAAU,KACfhmM,KAAK+mF,MAAQ,GACb/mF,KAAKimM,eAAiB,GACtBjmM,KAAKylM,IAAMA,MAAAA,EAAiCA,EAAM,GAClDzlM,KAAKkmM,kBAAqD,QAAhCjlL,EAAK5P,EAAQ80L,qBAAkC,IAAPllL,EAAgBA,GAAM5P,EAAQ2uL,QAChGhgM,KAAKomM,wBAC0C,QAA1CtiL,EAAKzS,EAAQ+0L,+BAA4C,IAAPtiL,EAAgBA,GAAMzS,EAAQ2uL,QACrFhgM,KAAKqmM,UAAY,IAAkC,QAA5B13H,EAAKt9D,EAAQi1L,iBAA8B,IAAP33H,EAAgBA,EAAKm2H,EAAYvtK,SAASv3B,KAAKqR,QAASrR,MAC3E,QAAvCs/E,GAAM1Q,EAAK5uE,KAAKylM,KAAKc,oBAAiC,IAAPjnH,GAAyBA,EAAG58E,KAAKksE,EAAI5uE,MAqSzF,OAjSAooF,EAAO5lF,UAAUqgM,OAAS,SAAU35L,GAChC,IAAI+X,EAAI6C,EACJg2F,EAAM95G,KAAKqmM,UAAUG,mBACzBxmM,KAAK2lM,SAAW7rF,EAAM,EACY,QAAjCh2F,GAAM7C,EAAKjhB,KAAKylM,KAAK5C,cAA2B,IAAP/+K,GAAyBA,EAAGphB,KAAKue,EAAI/X,GAC/ElJ,KAAK0lM,WAAa5rF,GAEtB1xB,EAAO5lF,UAAUikM,cAAgB,SAAUvjM,GACvC,OAAQlD,KAAKqR,QAAQ2uL,SAAWqF,EAAan9L,IAAIhF,IAGrDklF,EAAO5lF,UAAUkkM,cAAgB,SAAUxjM,GACvClD,KAAK2lM,SAAW3lM,KAAKqmM,UAAUG,mBAC3BxmM,KAAKkmM,oBACLhjM,EAAOA,EAAKwwB,eAEhB1zB,KAAK2mM,YAAYzjM,IAErBklF,EAAO5lF,UAAUmkM,YAAc,SAAUzjM,GACrC,IAAI+d,EAAI6C,EAAI6qD,EAAIC,EAChB5uE,KAAK4lM,aAAe5lM,KAAK0lM,WACzB1lM,KAAK6lM,QAAU3iM,EACf,IAAI0jM,GAAgB5mM,KAAKqR,QAAQ2uL,SAAWoF,EAAiB/iM,IAAIa,GACjE,GAAI0jM,EACA,KAAO5mM,KAAK+mF,MAAMhhF,OAAS,GACvB6gM,EAAa1+L,IAAIlI,KAAK+mF,MAAM/mF,KAAK+mF,MAAMhhF,OAAS,KAAK,CACrD,IAAIkgG,EAAKjmG,KAAK+mF,MAAMvkE,MACkB,QAArCsB,GAAM7C,EAAKjhB,KAAKylM,KAAK/C,kBAA+B,IAAP5+K,GAAyBA,EAAGphB,KAAKue,EAAIglF,GAAI,GAG1FjmG,KAAKymM,cAAcvjM,KACpBlD,KAAK+mF,MAAMthF,KAAKvC,GACZoiM,EAAuBp9L,IAAIhF,GAC3BlD,KAAKimM,eAAexgM,MAAK,GAEpB8/L,EAAwBr9L,IAAIhF,IACjClD,KAAKimM,eAAexgM,MAAK,IAGQ,QAAxCmpE,GAAMD,EAAK3uE,KAAKylM,KAAKiB,qBAAkC,IAAP93H,GAAyBA,EAAGlsE,KAAKisE,EAAIzrE,GAClFlD,KAAKylM,IAAI7C,YACT5iM,KAAKgmM,QAAU,KAEvB59G,EAAO5lF,UAAUqkM,WAAa,SAAUC,GACpC,IAAI7lL,EAAI6C,EACR9jB,KAAK0lM,WAAa1lM,KAAK4lM,aACvB5lM,KAAK2lM,SAAW3lM,KAAKqmM,UAAUG,mBAC3BxmM,KAAKgmM,UACgC,QAApCliL,GAAM7C,EAAKjhB,KAAKylM,KAAK7C,iBAA8B,IAAP9+K,GAAyBA,EAAGphB,KAAKue,EAAIjhB,KAAK6lM,QAAS7lM,KAAKgmM,QAASc,GAC9G9mM,KAAKgmM,QAAU,MAEfhmM,KAAKylM,IAAI/C,YAAc1iM,KAAKymM,cAAczmM,KAAK6lM,UAC/C7lM,KAAKylM,IAAI/C,WAAW1iM,KAAK6lM,SAAS,GAEtC7lM,KAAK6lM,QAAU,IAGnBz9G,EAAO5lF,UAAUukM,aAAe,WAC5B/mM,KAAK6mM,YAAW,GAEhB7mM,KAAK0lM,WAAa1lM,KAAK2lM,SAAW,GAGtCv9G,EAAO5lF,UAAUkgM,WAAa,SAAUx/L,GACpC,IAAI+d,EAAI6C,EAAI6qD,EAAIC,EAAI0Q,EAAI0nH,EASxB,GARAhnM,KAAK2lM,SAAW3lM,KAAKqmM,UAAUG,mBAC3BxmM,KAAKkmM,oBACLhjM,EAAOA,EAAKwwB,gBAEZ4xK,EAAuBp9L,IAAIhF,IAC3BqiM,EAAwBr9L,IAAIhF,KAC5BlD,KAAKimM,eAAezjL,MAEnBxiB,KAAKymM,cAAcvjM,GAkBdlD,KAAKqR,QAAQ2uL,SAAoB,OAAT98L,IAEW,QAAxC4gB,GAAM7C,EAAKjhB,KAAKylM,KAAKiB,qBAAkC,IAAP5iL,GAAyBA,EAAGphB,KAAKue,EAAI/d,GACjD,QAApC0rE,GAAMD,EAAK3uE,KAAKylM,KAAK7C,iBAA8B,IAAPh0H,GAAyBA,EAAGlsE,KAAKisE,EAAIzrE,EAAM,IAAI,GACtD,QAArC8jM,GAAM1nH,EAAKt/E,KAAKylM,KAAK/C,kBAA+B,IAAPsE,GAAyBA,EAAGtkM,KAAK48E,EAAIp8E,GAAM,QAtB9D,CAC3B,IAAIgsF,EAAMlvF,KAAK+mF,MAAMjtD,YAAY52B,GACjC,IAAa,IAATgsF,EACA,GAAIlvF,KAAKylM,IAAI/C,WAET,IADA,IAAI3oG,EAAQ/5F,KAAK+mF,MAAMhhF,OAASmpF,EACzB6K,KAEH/5F,KAAKylM,IAAI/C,WAAW1iM,KAAK+mF,MAAMvkE,MAAiB,IAAVu3E,QAI1C/5F,KAAK+mF,MAAMhhF,OAASmpF,OAElBlvF,KAAKqR,QAAQ2uL,SAAoB,MAAT98L,IAC9BlD,KAAK2mM,YAAYzjM,GACjBlD,KAAKinM,iBAAgB,IAU7BjnM,KAAK0lM,WAAa1lM,KAAK2lM,SAAW,GAGtCv9G,EAAO5lF,UAAU0kM,iBAAmB,WAC5BlnM,KAAKqR,QAAQ2uL,SACbhgM,KAAKqR,QAAQ0xL,sBACb/iM,KAAKimM,eAAejmM,KAAKimM,eAAelgM,OAAS,IACjD/F,KAAKinM,iBAAgB,GAErBjnM,KAAK0lM,WAAa1lM,KAAK2lM,SAAW,GAIlC3lM,KAAK+mM,gBAGb3+G,EAAO5lF,UAAUykM,gBAAkB,SAAUE,GACzC,IAAIlmL,EAAI6C,EACJ5gB,EAAOlD,KAAK6lM,QAChB7lM,KAAK6mM,WAAWM,GAEZnnM,KAAK+mF,MAAM/mF,KAAK+mF,MAAMhhF,OAAS,KAAO7C,IAEA,QAArC4gB,GAAM7C,EAAKjhB,KAAKylM,KAAK/C,kBAA+B,IAAP5+K,GAAyBA,EAAGphB,KAAKue,EAAI/d,GAAOikM,GAC1FnnM,KAAK+mF,MAAMvkE,QAInB4lE,EAAO5lF,UAAU4kM,aAAe,SAAUlkM,GACtClD,KAAK0lM,WAAa1lM,KAAKqmM,UAAUgB,0BAC7BrnM,KAAKomM,0BACLljM,EAAOA,EAAKwwB,eAEhB1zB,KAAK8lM,WAAa5iM,GAGtBklF,EAAO5lF,UAAU8kM,aAAe,SAAUjoM,GACtCW,KAAK+lM,aAAe1mM,GAGxB+oF,EAAO5lF,UAAU+kM,YAAc,SAAUtoG,GACrC,IAAIh+E,EAAI6C,EACR9jB,KAAK2lM,SAAW3lM,KAAKqmM,UAAUG,mBACQ,QAAtC1iL,GAAM7C,EAAKjhB,KAAKylM,KAAK+B,mBAAgC,IAAP1jL,GAAyBA,EAAGphB,KAAKue,EAAIjhB,KAAK8lM,WAAY9lM,KAAK+lM,YAAa9mG,GACnHj/F,KAAKgmM,UACJ9mM,OAAOsD,UAAUC,eAAeC,KAAK1C,KAAKgmM,QAAShmM,KAAK8lM,cACzD9lM,KAAKgmM,QAAQhmM,KAAK8lM,YAAc9lM,KAAK+lM,aAEzC/lM,KAAK8lM,WAAa,GAClB9lM,KAAK+lM,YAAc,IAEvB39G,EAAO5lF,UAAUilM,mBAAqB,SAAUpoM,GAC5C,IAAIy6G,EAAMz6G,EAAMsgI,OAAO6lE,GACnBtiM,EAAO42G,EAAM,EAAIz6G,EAAQA,EAAM4iB,OAAO,EAAG63F,GAI7C,OAHI95G,KAAKkmM,oBACLhjM,EAAOA,EAAKwwB,eAETxwB,GAGXklF,EAAO5lF,UAAUklM,cAAgB,SAAUroM,GAEvC,GADAW,KAAK2lM,SAAW3lM,KAAKqmM,UAAUG,mBAC3BxmM,KAAKylM,IAAIkC,wBAAyB,CAClC,IAAIC,EAAS5nM,KAAKynM,mBAAmBpoM,GACrCW,KAAKylM,IAAIkC,wBAAwB,IAAMC,EAAQ,IAAMvoM,GAGzDW,KAAK0lM,WAAa1lM,KAAK2lM,SAAW,GAGtCv9G,EAAO5lF,UAAUmlM,wBAA0B,SAAUtoM,GAEjD,GADAW,KAAK2lM,SAAW3lM,KAAKqmM,UAAUG,mBAC3BxmM,KAAKylM,IAAIkC,wBAAyB,CAClC,IAAIE,EAAS7nM,KAAKynM,mBAAmBpoM,GACrCW,KAAKylM,IAAIkC,wBAAwB,IAAME,EAAQ,IAAMxoM,GAGzDW,KAAK0lM,WAAa1lM,KAAK2lM,SAAW,GAGtCv9G,EAAO5lF,UAAUslM,UAAY,SAAUzoM,GACnC,IAAI4hB,EAAI6C,EAAI6qD,EAAIC,EAChB5uE,KAAK2lM,SAAW3lM,KAAKqmM,UAAUG,mBACM,QAApC1iL,GAAM7C,EAAKjhB,KAAKylM,KAAKqC,iBAA8B,IAAPhkL,GAAyBA,EAAGphB,KAAKue,EAAI5hB,GAC1C,QAAvCuvE,GAAMD,EAAK3uE,KAAKylM,KAAKsC,oBAAiC,IAAPn5H,GAAyBA,EAAGlsE,KAAKisE,GAEjF3uE,KAAK0lM,WAAa1lM,KAAK2lM,SAAW,GAGtCv9G,EAAO5lF,UAAUwlM,QAAU,SAAU3oM,GACjC,IAAI4hB,EAAI6C,EAAI6qD,EAAIC,EAAI0Q,EAAI0nH,EAAIiB,EAAIC,EAAIC,EAAIC,EACxCpoM,KAAK2lM,SAAW3lM,KAAKqmM,UAAUG,mBAC3BxmM,KAAKqR,QAAQ2uL,SAAWhgM,KAAKqR,QAAQg3L,gBACG,QAAvCvkL,GAAM7C,EAAKjhB,KAAKylM,KAAK6C,oBAAiC,IAAPxkL,GAAyBA,EAAGphB,KAAKue,GAC/C,QAAjC2tD,GAAMD,EAAK3uE,KAAKylM,KAAK5C,cAA2B,IAAPj0H,GAAyBA,EAAGlsE,KAAKisE,EAAItvE,GACzC,QAArC2nM,GAAM1nH,EAAKt/E,KAAKylM,KAAK8C,kBAA+B,IAAPvB,GAAyBA,EAAGtkM,KAAK48E,KAG1C,QAApC4oH,GAAMD,EAAKjoM,KAAKylM,KAAKqC,iBAA8B,IAAPI,GAAyBA,EAAGxlM,KAAKulM,EAAI,UAAY5oM,EAAQ,MAC9D,QAAvC+oM,GAAMD,EAAKnoM,KAAKylM,KAAKsC,oBAAiC,IAAPK,GAAyBA,EAAG1lM,KAAKylM,IAGrFnoM,KAAK0lM,WAAa1lM,KAAK2lM,SAAW,GAGtCv9G,EAAO5lF,UAAUq/B,QAAU,SAAU3W,GACjC,IAAIjK,EAAI6C,EAC2B,QAAlCA,GAAM7C,EAAKjhB,KAAKylM,KAAK5jK,eAA4B,IAAP/d,GAAyBA,EAAGphB,KAAKue,EAAIiK,IAGpFk9D,EAAO5lF,UAAUy9H,MAAQ,WACrB,IAAIh/G,EAAI6C,EACR,GAAI9jB,KAAKylM,IAAI/C,WAAY,CAErB1iM,KAAK2lM,SAAW3lM,KAAK0lM,WACrB,IAAK,IAAI9sL,EAAI5Y,KAAK+mF,MAAMhhF,OAAQ6S,EAAI,EAAG5Y,KAAKylM,IAAI/C,WAAW1iM,KAAK+mF,QAAQnuE,IAAI,KAG/C,QAAhCkL,GAAM7C,EAAKjhB,KAAKylM,KAAKxlE,aAA0B,IAAPn8G,GAAyBA,EAAGphB,KAAKue,IAK9EmnE,EAAO5lF,UAAUi1B,MAAQ,WACrB,IAAIxW,EAAI6C,EAAI6qD,EAAIC,EACmB,QAAlC9qD,GAAM7C,EAAKjhB,KAAKylM,KAAK+C,eAA4B,IAAP1kL,GAAyBA,EAAGphB,KAAKue,GAC5EjhB,KAAKqmM,UAAU5uK,QACfz3B,KAAK6lM,QAAU,GACf7lM,KAAK8lM,WAAa,GAClB9lM,KAAKgmM,QAAU,KACfhmM,KAAK+mF,MAAQ,GACb/mF,KAAK0lM,WAAa,EAClB1lM,KAAK2lM,SAAW,EACwB,QAAvC/2H,GAAMD,EAAK3uE,KAAKylM,KAAKc,oBAAiC,IAAP33H,GAAyBA,EAAGlsE,KAAKisE,EAAI3uE,OAQzFooF,EAAO5lF,UAAUimM,cAAgB,SAAUv/L,GACvClJ,KAAKy3B,QACLz3B,KAAK4qF,IAAI1hF,IAObk/E,EAAO5lF,UAAUiY,MAAQ,SAAUiuE,GAC/B1oF,KAAKqmM,UAAU5rL,MAAMiuE,IAOzBN,EAAO5lF,UAAUooF,IAAM,SAAUlC,GAC7B1oF,KAAKqmM,UAAUz7G,IAAIlC,IAKvBN,EAAO5lF,UAAUo8H,MAAQ,WACrB5+H,KAAKqmM,UAAUznE,SAKnBx2C,EAAO5lF,UAAUs8H,OAAS,WACtB9+H,KAAKqmM,UAAUvnE,UAQnB12C,EAAO5lF,UAAUkmM,WAAa,SAAUhgH,GACpC1oF,KAAKya,MAAMiuE,IAQfN,EAAO5lF,UAAUuyF,KAAO,SAAUrM,GAC9B1oF,KAAK4qF,IAAIlC,IAENN,EA9TgB,GAgU3BhpF,EAAQgpF,OAASA,sCCtajB,IAAI7Q,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtD,IAAIqkM,EAAqBnsH,EAAgB,EAAQ,QAC7CoxH,EAAW,EAAQ,OACvB,SAASC,EAAa7nL,GAClB,OAAc,KAANA,GACE,KAANA,GACM,IAANA,GACM,KAANA,GACM,KAANA,EAER,SAAS8nL,EAAkB9nL,GACvB,OAAa,KAANA,GAA8B,KAANA,GAAqB6nL,EAAa7nL,GAErE,SAASw/I,EAASx/I,GACd,OAAOA,GAAK,IAAiBA,GAAK,GAYtC,IAAI+nL,EAAY,CACZC,MAAO,IAAI9qG,YAAY,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,KACtD+qG,SAAU,IAAI/qG,YAAY,CAAC,GAAM,GAAM,KACvCgrG,WAAY,IAAIhrG,YAAY,CAAC,GAAM,GAAM,KACzCirG,UAAW,IAAIjrG,YAAY,CACvB,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,MAE9CkrG,SAAU,IAAIlrG,YAAY,CAAC,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,MAC/DmrG,SAAU,IAAInrG,YAAY,CAAC,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,OAE/DqoG,EAA2B,WAC3B,SAASA,EAAUrlL,EAAIwkL,GACnB,IAAI3hL,EAAK7C,EAAG++K,QAASA,OAAiB,IAAPl8K,GAAwBA,EAAI6qD,EAAK1tD,EAAG6hL,eAAgBA,OAAwB,IAAPn0H,GAAuBA,EAC3H3uE,KAAKylM,IAAMA,EAEXzlM,KAAKurK,OAAS,EAEdvrK,KAAK6e,OAAS,GAEd7e,KAAKqpM,aAAe,EAEpBrpM,KAAKspM,OAAS,EAKdtpM,KAAKupM,aAAe,EAEpBvpM,KAAKwpM,UAAY,EAEjBxpM,KAAKypM,WAAY,EAEjBzpM,KAAK0pM,SAAU,EAEf1pM,KAAKkgI,OAAQ,EACblgI,KAAK2pM,cAAgB,EACrB3pM,KAAK4pM,UAAY,EACjB5pM,KAAK6pM,YAAc,EACnB7pM,KAAK8pM,WAAa,KAClB9pM,KAAK+pM,aAAe,EACpB/pM,KAAKggM,QAAUA,EACfhgM,KAAK8iM,eAAiBA,EACtB9iM,KAAKgqM,WAAahK,EAAU2I,EAASrF,cAAgBqF,EAASpF,eA0uBlE,OAxuBA+C,EAAU9jM,UAAUi1B,MAAQ,WACxBz3B,KAAKurK,OAAS,EACdvrK,KAAK6e,OAAS,GACd7e,KAAKqpM,aAAe,EACpBrpM,KAAKspM,OAAS,EACdtpM,KAAKupM,aAAe,EACpBvpM,KAAKwpM,UAAY,EACjBxpM,KAAKiqM,qBAAkBnoM,EACvB9B,KAAK0pM,SAAU,EACf1pM,KAAKkgI,OAAQ,GAEjBomE,EAAU9jM,UAAUiY,MAAQ,SAAUiuE,GAClC,GAAI1oF,KAAKkgI,MACL,OAAOlgI,KAAKylM,IAAI5jK,QAAQrhC,MAAM,yBAClCR,KAAK6e,QAAU6pE,EACf1oF,KAAK+nB,SAETu+K,EAAU9jM,UAAUooF,IAAM,SAAUlC,GAChC,GAAI1oF,KAAKkgI,MACL,OAAOlgI,KAAKylM,IAAI5jK,QAAQrhC,MAAM,uBAC9BkoF,GACA1oF,KAAKya,MAAMiuE,GACf1oF,KAAKkgI,OAAQ,EACTlgI,KAAK0pM,SACL1pM,KAAKmnI,UAEbm/D,EAAU9jM,UAAUo8H,MAAQ,WACxB5+H,KAAK0pM,SAAU,GAEnBpD,EAAU9jM,UAAUs8H,OAAS,WACzB9+H,KAAK0pM,SAAU,EACX1pM,KAAKspM,OAAStpM,KAAK6e,OAAO9Y,QAC1B/F,KAAK+nB,QAEL/nB,KAAKkgI,OACLlgI,KAAKmnI,UAMbm/D,EAAU9jM,UAAU6kM,wBAA0B,WAC1C,OAAOrnM,KAAKqpM,aAAerpM,KAAKupM,cAKpCjD,EAAU9jM,UAAUgkM,iBAAmB,WACnC,OAAOxmM,KAAKupM,aAAevpM,KAAKspM,QAEpChD,EAAU9jM,UAAU0nM,UAAY,SAAUnpL,GAC5B,KAANA,IACE/gB,KAAK8iM,gBAAkB9iM,KAAKmqM,cAAc,KACxCnqM,KAAKspM,OAAStpM,KAAKqpM,cACnBrpM,KAAKylM,IAAI5C,OAAO7iM,KAAKoqM,cAEzBpqM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,QAEpBtpM,KAAK8iM,gBAAwB,KAAN/hL,IAC5B/gB,KAAKurK,OAAS,KAGtB+6B,EAAU9jM,UAAU6nM,0BAA4B,SAAUtpL,GACtD,IAAIupL,EAAQtqM,KAAK2pM,gBAAkB3pM,KAAKiqM,gBAAgBlkM,OAMxD,GALcukM,EAENzB,EAAkB9nL,IAEb,GAAJA,KAAc/gB,KAAKiqM,gBAAgBjqM,KAAK2pM,gBAI5C,IAAKW,EAEN,YADAtqM,KAAK2pM,qBAHL3pM,KAAKypM,WAAY,EAMrBzpM,KAAK2pM,cAAgB,EACrB3pM,KAAKurK,OAAS,EACdvrK,KAAKuqM,eAAexpL,IAGxBulL,EAAU9jM,UAAUgoM,kBAAoB,SAAUzpL,GAC9C,GAAI/gB,KAAK2pM,gBAAkB3pM,KAAKiqM,gBAAgBlkM,OAAQ,CACpD,GAAU,KAANgb,GAAqB6nL,EAAa7nL,GAAI,CACtC,IAAI0pL,EAAYzqM,KAAKspM,OAAStpM,KAAKiqM,gBAAgBlkM,OACnD,GAAI/F,KAAKqpM,aAAeoB,EAAW,CAE/B,IAAIC,EAAc1qM,KAAKspM,OACvBtpM,KAAKspM,OAASmB,EACdzqM,KAAKylM,IAAI5C,OAAO7iM,KAAKoqM,cACrBpqM,KAAKspM,OAASoB,EAKlB,OAHA1qM,KAAKypM,WAAY,EACjBzpM,KAAKqpM,aAAeoB,EAAY,OAChCzqM,KAAK2qM,sBAAsB5pL,GAG/B/gB,KAAK2pM,cAAgB,GAEhB,GAAJ5oL,KAAc/gB,KAAKiqM,gBAAgBjqM,KAAK2pM,eACzC3pM,KAAK2pM,eAAiB,EAEM,IAAvB3pM,KAAK2pM,cACN3pM,KAAKiqM,kBAAoBnB,EAAUM,SAE/BppM,KAAK8iM,gBAAwB,KAAN/hL,IACvB/gB,KAAKurK,OAAS,IAGbvrK,KAAKmqM,cAAc,MAExBnqM,KAAK2pM,cAAgB,GAKzB3pM,KAAK2pM,cAAgBtmM,OAAa,KAAN0d,IAGpCulL,EAAU9jM,UAAUooM,mBAAqB,SAAU7pL,GAC3CA,IAAM+nL,EAAUC,MAAM/oM,KAAK2pM,iBACrB3pM,KAAK2pM,gBAAkBb,EAAUC,MAAMhjM,SACzC/F,KAAKurK,OAAS,GACdvrK,KAAKiqM,gBAAkBnB,EAAUE,SACjChpM,KAAK2pM,cAAgB,EACrB3pM,KAAKqpM,aAAerpM,KAAKspM,OAAS,IAItCtpM,KAAK2pM,cAAgB,EACrB3pM,KAAKurK,OAAS,GACdvrK,KAAK6qM,mBAAmB9pL,KAShCulL,EAAU9jM,UAAU2nM,cAAgB,SAAUppL,GAC1C,OAAS/gB,KAAKspM,OAAStpM,KAAK6e,OAAO9Y,QAC/B,GAAI/F,KAAK6e,OAAOmC,WAAWhhB,KAAKspM,UAAYvoL,EACxC,OAAO,EAUf,OADA/gB,KAAKspM,OAAStpM,KAAK6e,OAAO9Y,OAAS,GAC5B,GAUXugM,EAAU9jM,UAAUsoM,mBAAqB,SAAU/pL,GAC/C,GAAIA,IAAM/gB,KAAKiqM,gBAAgBjqM,KAAK2pM,gBAChC,KAAM3pM,KAAK2pM,gBAAkB3pM,KAAKiqM,gBAAgBlkM,OAAQ,CAEtD,IAAIglM,EAAU/qM,KAAK6e,OAAOwE,MAAMrjB,KAAKqpM,aAAcrpM,KAAKspM,OAAS,GAC7DtpM,KAAKiqM,kBAAoBnB,EAAUE,SACnChpM,KAAKylM,IAAIuC,QAAQ+C,GAGjB/qM,KAAKylM,IAAIqC,UAAUiD,GAEvB/qM,KAAK2pM,cAAgB,EACrB3pM,KAAKqpM,aAAerpM,KAAKspM,OAAS,EAClCtpM,KAAKurK,OAAS,QAGU,IAAvBvrK,KAAK2pM,cAEN3pM,KAAKmqM,cAAcnqM,KAAKiqM,gBAAgB,MACxCjqM,KAAK2pM,cAAgB,GAGpB5oL,IAAM/gB,KAAKiqM,gBAAgBjqM,KAAK2pM,cAAgB,KAErD3pM,KAAK2pM,cAAgB,IAS7BrD,EAAU9jM,UAAUwoM,eAAiB,SAAUjqL,GAC3C,OAAO/gB,KAAKggM,SAAW6I,EAAkB9nL,GA5PjD,SAAsBA,GAClB,OAASA,GAAK,IAAmBA,GAAK,KACjCA,GAAK,IAAmBA,GAAK,GA0PgBkqL,CAAalqL,IAE/DulL,EAAU9jM,UAAU0oM,aAAe,SAAUl2C,EAAU71I,GACnDnf,KAAKypM,WAAY,EACjBzpM,KAAKiqM,gBAAkBj1C,EACvBh1J,KAAK2pM,cAAgBxqL,EACrBnf,KAAKurK,OAAS,IAElB+6B,EAAU9jM,UAAU2oM,mBAAqB,SAAUpqL,GAC/C,GAAU,KAANA,EACA/gB,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,OAEjC,GAAU,KAANvoL,EACL/gB,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,OAEjC,GAAItpM,KAAKgrM,eAAejqL,GAAI,CAC7B,IAAIqqL,EAAY,GAAJrqL,EACZ/gB,KAAKqpM,aAAerpM,KAAKspM,OACpBtpM,KAAKggM,SAAWoL,IAAUtC,EAAUM,SAAS,GAI9CppM,KAAKurK,OACAvrK,KAAKggM,SAAWoL,IAAUtC,EAAUI,UAAU,GAEzC,EADA,GALVlpM,KAAKkrM,aAAapC,EAAUM,SAAU,QAS/B,KAANroL,EACL/gB,KAAKurK,OAAS,GAGdvrK,KAAKurK,OAAS,EACdvrK,KAAKkqM,UAAUnpL,KAGvBulL,EAAU9jM,UAAU+nM,eAAiB,SAAUxpL,GACvC8nL,EAAkB9nL,KAClB/gB,KAAKylM,IAAIiB,cAAc1mM,KAAKoqM,cAC5BpqM,KAAKqpM,cAAgB,EACrBrpM,KAAKurK,OAAS,EACdvrK,KAAKqrM,yBAAyBtqL,KAGtCulL,EAAU9jM,UAAU8oM,0BAA4B,SAAUvqL,GAClD6nL,EAAa7nL,KAGF,KAANA,EACL/gB,KAAKurK,OAAS,GAGdvrK,KAAKurK,OAASvrK,KAAKgrM,eAAejqL,GAC5B,EACA,GACN/gB,KAAKqpM,aAAerpM,KAAKspM,UAGjChD,EAAU9jM,UAAUmoM,sBAAwB,SAAU5pL,IACxC,KAANA,GAAqB6nL,EAAa7nL,MAClC/gB,KAAKylM,IAAI/C,WAAW1iM,KAAKoqM,cACzBpqM,KAAKqpM,cAAgB,EACrBrpM,KAAKurK,OAAS,EACdvrK,KAAKurM,yBAAyBxqL,KAGtCulL,EAAU9jM,UAAU+oM,yBAA2B,SAAUxqL,IAE3C,KAANA,GAAqB/gB,KAAKmqM,cAAc,OACxCnqM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,IAG1ChD,EAAU9jM,UAAU6oM,yBAA2B,SAAUtqL,GAC3C,KAANA,GACA/gB,KAAKylM,IAAIsB,eACL/mM,KAAKypM,WACLzpM,KAAKurK,OAAS,GACdvrK,KAAK2pM,cAAgB,GAGrB3pM,KAAKurK,OAAS,EAElBvrK,KAAKwpM,UAAYxpM,KAAKurK,OACtBvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAEvB,KAANvoL,EACL/gB,KAAKurK,OAAS,EAERq9B,EAAa7nL,KACnB/gB,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,SAGjChD,EAAU9jM,UAAUgpM,sBAAwB,SAAUzqL,GACxC,KAANA,GACA/gB,KAAKylM,IAAIyB,mBACTlnM,KAAKurK,OAAS,EACdvrK,KAAKwpM,UAAY,EACjBxpM,KAAKqpM,aAAerpM,KAAKspM,OAAS,EAClCtpM,KAAKypM,WAAY,GAEXb,EAAa7nL,KACnB/gB,KAAKurK,OAAS,EACdvrK,KAAKqrM,yBAAyBtqL,KAGtCulL,EAAU9jM,UAAUipM,qBAAuB,SAAU1qL,IACvC,KAANA,GAAqB8nL,EAAkB9nL,MACvC/gB,KAAKylM,IAAI2B,aAAapnM,KAAKoqM,cAC3BpqM,KAAKqpM,cAAgB,EACrBrpM,KAAKurK,OAAS,GACdvrK,KAAK0rM,wBAAwB3qL,KAGrCulL,EAAU9jM,UAAUkpM,wBAA0B,SAAU3qL,GAC1C,KAANA,EACA/gB,KAAKurK,OAAS,GAEH,KAANxqJ,GAA8B,KAANA,GAC7B/gB,KAAKylM,IAAI8B,iBAAYzlM,GACrB9B,KAAKurK,OAAS,EACdvrK,KAAKqrM,yBAAyBtqL,IAExB6nL,EAAa7nL,KACnB/gB,KAAKylM,IAAI8B,iBAAYzlM,GACrB9B,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,SAGjChD,EAAU9jM,UAAUmpM,0BAA4B,SAAU5qL,GAC5C,KAANA,GACA/gB,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAEvB,KAANvoL,GACL/gB,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAE5BV,EAAa7nL,KACnB/gB,KAAKqpM,aAAerpM,KAAKspM,OACzBtpM,KAAKurK,OAAS,GACdvrK,KAAK4rM,8BAA8B7qL,KAG3CulL,EAAU9jM,UAAUqpM,uBAAyB,SAAU9qL,EAAGk+E,GAClDl+E,IAAMk+E,IACJj/F,KAAK8iM,gBAAkB9iM,KAAKmqM,cAAclrG,IAC5Cj/F,KAAKylM,IAAI6B,aAAatnM,KAAKoqM,cAC3BpqM,KAAKqpM,cAAgB,EACrBrpM,KAAKylM,IAAI8B,YAAYpnL,OAAOC,aAAa6+E,IACzCj/F,KAAKurK,OAAS,GAETvrK,KAAK8iM,gBAAwB,KAAN/hL,IAC5B/gB,KAAKwpM,UAAYxpM,KAAKurK,OACtBvrK,KAAKurK,OAAS,KAGtB+6B,EAAU9jM,UAAUspM,kCAAoC,SAAU/qL,GAC9D/gB,KAAK6rM,uBAAuB9qL,EAAG,KAEnCulL,EAAU9jM,UAAUupM,kCAAoC,SAAUhrL,GAC9D/gB,KAAK6rM,uBAAuB9qL,EAAG,KAEnCulL,EAAU9jM,UAAUopM,8BAAgC,SAAU7qL,GACtD6nL,EAAa7nL,IAAY,KAANA,GACnB/gB,KAAKylM,IAAI6B,aAAatnM,KAAKoqM,cAC3BpqM,KAAKqpM,cAAgB,EACrBrpM,KAAKylM,IAAI8B,YAAY,MACrBvnM,KAAKurK,OAAS,EACdvrK,KAAKqrM,yBAAyBtqL,IAEzB/gB,KAAK8iM,gBAAwB,KAAN/hL,IAC5B/gB,KAAKwpM,UAAYxpM,KAAKurK,OACtBvrK,KAAKurK,OAAS,KAGtB+6B,EAAU9jM,UAAUwpM,uBAAyB,SAAUjrL,GACzC,KAANA,GACA/gB,KAAKurK,OAAS,GACdvrK,KAAK2pM,cAAgB,GAGrB3pM,KAAKurK,OACK,KAANxqJ,EACM,GACA,IAGlBulL,EAAU9jM,UAAUqoM,mBAAqB,SAAU9pL,IACrC,KAANA,GAAqB/gB,KAAKmqM,cAAc,OACxCnqM,KAAKylM,IAAIiC,cAAc1nM,KAAKoqM,cAC5BpqM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,IAG1ChD,EAAU9jM,UAAUypM,6BAA+B,SAAUlrL,IAC/C,KAANA,GAAqB/gB,KAAKmqM,cAAc,OACxCnqM,KAAKylM,IAAIkC,wBAAwB3nM,KAAKoqM,cACtCpqM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,IAG1ChD,EAAU9jM,UAAU0pM,mBAAqB,SAAUnrL,GACrC,KAANA,GACA/gB,KAAKurK,OAAS,GACdvrK,KAAKiqM,gBAAkBnB,EAAUG,WAEjCjpM,KAAK2pM,cAAgB,EACrB3pM,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAGlCtpM,KAAKurK,OAAS,IAGtB+6B,EAAU9jM,UAAU2pM,sBAAwB,SAAUprL,IACxC,KAANA,GAAqB/gB,KAAKmqM,cAAc,OACxCnqM,KAAKylM,IAAIqC,UAAU9nM,KAAKoqM,cACxBpqM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,IAG1ChD,EAAU9jM,UAAU4pM,oBAAsB,SAAUrrL,GAChD,IAAIqqL,EAAY,GAAJrqL,EACRqqL,IAAUtC,EAAUI,UAAU,GAC9BlpM,KAAKkrM,aAAapC,EAAUI,UAAW,GAElCkC,IAAUtC,EAAUK,SAAS,GAClCnpM,KAAKkrM,aAAapC,EAAUK,SAAU,IAGtCnpM,KAAKurK,OAAS,EACdvrK,KAAKuqM,eAAexpL,KAG5BulL,EAAU9jM,UAAU6pM,kBAAoB,SAAUtrL,GAE9C/gB,KAAK+pM,aAAe,EACV,KAANhpL,EACA/gB,KAAKurK,OAAS,GAEH,KAANxqJ,IAIL/gB,KAAK4pM,UAAY,EACjB5pM,KAAK6pM,YAAc7pM,KAAKgqM,WAAW,GACnChqM,KAAK8pM,WAAa,KAClB9pM,KAAKurK,OAAS,GACdvrK,KAAKssM,mBAAmBvrL,KAGhCulL,EAAU9jM,UAAU8pM,mBAAqB,SAAUvrL,GAG/C,GAFA/gB,KAAK+pM,cAAgB,EACrB/pM,KAAK4pM,WAAY,EAAIjB,EAASxF,iBAAiBnjM,KAAKgqM,WAAYhqM,KAAK6pM,YAAa7pM,KAAK4pM,UAAY,EAAG7oL,GAClG/gB,KAAK4pM,UAAY,EAGjB,OAFA5pM,KAAKusM,uBACLvsM,KAAKspM,SAKT,GAFAtpM,KAAK6pM,YAAc7pM,KAAKgqM,WAAWhqM,KAAK4pM,WAEpC5pM,KAAK6pM,YAAclB,EAAStF,aAAaY,UAEzC,GAAKjkM,KAAKwsM,qBAA6B,KAANzrL,EAI5B,CAED,IAAI0rL,EAAczsM,KAAKspM,OAAStpM,KAAK+pM,aAAe,EAChD0C,EAAczsM,KAAKqpM,cACnBrpM,KAAK0sM,YAAY1sM,KAAK6e,OAAOoY,UAAUj3B,KAAKqpM,aAAcoD,IAG9DzsM,KAAK8pM,WACD9pM,KAAK6pM,YAAclB,EAAStF,aAAaa,WACnC/jL,OAAOC,aAAapgB,KAAKgqM,aAAahqM,KAAK4pM,WAAY5pM,KAAKgqM,aAAahqM,KAAK4pM,YAC9EzpL,OAAOC,aAAapgB,KAAKgqM,aAAahqM,KAAK4pM,YACrD5pM,KAAK+pM,aAAe,EACpB/pM,KAAKqpM,aAAerpM,KAAKspM,OAAS,OAdlCtpM,KAAK4pM,WAAa,GAkB9BtD,EAAU9jM,UAAU+pM,gBAAkB,WAC9BvsM,KAAK8pM,YACL9pM,KAAK0sM,YAAY1sM,KAAK8pM,YAE1B9pM,KAAKurK,OAASvrK,KAAKwpM,WAEvBlD,EAAU9jM,UAAUmqM,yBAA2B,SAAU5rL,GAClC,MAAV,GAAJA,IACD/gB,KAAK+pM,eACL/pM,KAAKurK,OAAS,KAGdvrK,KAAKurK,OAAS,GACdvrK,KAAK4sM,qBAAqB7rL,KAGlCulL,EAAU9jM,UAAUqqM,oBAAsB,SAAUzqD,EAAMt9D,GACtD,IAAI2nH,EAAczsM,KAAKspM,OAAStpM,KAAK+pM,aAAe,EAChD+C,EAAcL,EAAc,GAAKrqD,GAAQ,GAC7C,GAAI0qD,IAAgB9sM,KAAKspM,OAAQ,CAEzBmD,EAAczsM,KAAKqpM,cACnBrpM,KAAK0sM,YAAY1sM,KAAK6e,OAAOoY,UAAUj3B,KAAKqpM,aAAcoD,IAG9D,IAAI19C,EAAS/uJ,KAAK6e,OAAOoY,UAAU61K,EAAa9sM,KAAKspM,QACjD57G,EAAS1rE,SAAS+sI,EAAQ3M,GAC9BpiJ,KAAK0sM,aAAY,EAAIhJ,EAAmBnsK,SAASm2D,IACjD1tF,KAAKqpM,aAAerpM,KAAKspM,OAASjmM,OAAOyhF,GAE7C9kF,KAAKurK,OAASvrK,KAAKwpM,WAEvBlD,EAAU9jM,UAAUoqM,qBAAuB,SAAU7rL,GACvC,KAANA,EACA/gB,KAAK6sM,oBAAoB,IAAI,GAEvBtsC,EAASx/I,GAUf/gB,KAAK+pM,gBATD/pM,KAAKwsM,oBACLxsM,KAAK6sM,oBAAoB,IAAI,GAG7B7sM,KAAKurK,OAASvrK,KAAKwpM,UAEvBxpM,KAAKspM,WAMbhD,EAAU9jM,UAAUuqM,iBAAmB,SAAUhsL,GACnC,KAANA,EACA/gB,KAAK6sM,oBAAoB,IAAI,IAEvB9rL,EAAI,IAAmBA,EAAI,OAChCA,EAAI,IAAmBA,EAAI,MAC3Bw/I,EAASx/I,IACN/gB,KAAKwsM,oBACLxsM,KAAK6sM,oBAAoB,IAAI,GAG7B7sM,KAAKurK,OAASvrK,KAAKwpM,UAEvBxpM,KAAKspM,UAGLtpM,KAAK+pM,gBAGbzD,EAAU9jM,UAAUgqM,kBAAoB,WACpC,OAASxsM,KAAKggM,UACU,IAAnBhgM,KAAKwpM,WACiB,KAAnBxpM,KAAKwpM,YAKjBlD,EAAU9jM,UAAUy3J,QAAU,WAEtBj6J,KAAK0pM,SACL1pM,KAAKqpM,eAAiBrpM,KAAKspM,SACV,IAAhBtpM,KAAKurK,QACe,KAAhBvrK,KAAKurK,QACqB,IAAvBvrK,KAAK2pM,iBAEb3pM,KAAKylM,IAAI5C,OAAO7iM,KAAK6e,OAAOoD,OAAOjiB,KAAKqpM,eACxCrpM,KAAKqpM,aAAerpM,KAAKspM,QAE7B,IAAI5gK,EAAQ1oC,KAAKqpM,aAAe,EAAIrpM,KAAKspM,OAAStpM,KAAKqpM,aACvDrpM,KAAK6e,OACD6pB,IAAU1oC,KAAK6e,OAAO9Y,OAAS,GAAK/F,KAAK6e,OAAOoD,OAAOymB,GAC3D1oC,KAAKspM,QAAU5gK,EACf1oC,KAAKupM,cAAgB7gK,EACjB1oC,KAAKqpM,aAAe,IACpBrpM,KAAKqpM,aAAe,IAG5B/C,EAAU9jM,UAAUwqM,eAAiB,WACjC,OAAOhtM,KAAKspM,OAAStpM,KAAK6e,OAAO9Y,QAAU/F,KAAK0pM,SAOpDpD,EAAU9jM,UAAUulB,MAAQ,WACxB,KAAO/nB,KAAKgtM,kBAAkB,CAC1B,IAAIjsL,EAAI/gB,KAAK6e,OAAOmC,WAAWhhB,KAAKspM,QAChB,IAAhBtpM,KAAKurK,OACLvrK,KAAKkqM,UAAUnpL,GAEM,KAAhB/gB,KAAKurK,OACVvrK,KAAKqqM,0BAA0BtpL,GAEV,KAAhB/gB,KAAKurK,OACVvrK,KAAKwqM,kBAAkBzpL,GAEF,KAAhB/gB,KAAKurK,OACVvrK,KAAK4qM,mBAAmB7pL,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAK8rM,kCAAkC/qL,GAElB,IAAhB/gB,KAAKurK,OACVvrK,KAAKyrM,qBAAqB1qL,GAEL,KAAhB/gB,KAAKurK,OACVvrK,KAAK8qM,mBAAmB/pL,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAKmsM,sBAAsBprL,GAEN,IAAhB/gB,KAAKurK,OACVvrK,KAAKqrM,yBAAyBtqL,GAET,IAAhB/gB,KAAKurK,OACVvrK,KAAKuqM,eAAexpL,GAEC,IAAhB/gB,KAAKurK,OACVvrK,KAAK2qM,sBAAsB5pL,GAEN,IAAhB/gB,KAAKurK,OACVvrK,KAAKmrM,mBAAmBpqL,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAK0rM,wBAAwB3qL,GAER,KAAhB/gB,KAAKurK,OACVvrK,KAAK+rM,kCAAkChrL,GAElB,KAAhB/gB,KAAKurK,OACVvrK,KAAK2rM,0BAA0B5qL,GAEV,IAAhB/gB,KAAKurK,OACVvrK,KAAKsrM,0BAA0BvqL,GAEV,IAAhB/gB,KAAKurK,OACVvrK,KAAKurM,yBAAyBxqL,GAET,KAAhB/gB,KAAKurK,OACVvrK,KAAKosM,oBAAoBrrL,GAEJ,KAAhB/gB,KAAKurK,OACVvrK,KAAK4rM,8BAA8B7qL,GAEd,IAAhB/gB,KAAKurK,OACVvrK,KAAKwrM,sBAAsBzqL,GAEN,KAAhB/gB,KAAKurK,OACVvrK,KAAK6qM,mBAAmB9pL,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAKgsM,uBAAuBjrL,GAEP,KAAhB/gB,KAAKurK,OACVvrK,KAAKksM,mBAAmBnrL,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAKisM,6BAA6BlrL,GAEb,KAAhB/gB,KAAKurK,OACVvrK,KAAKssM,mBAAmBvrL,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAKqsM,kBAAkBtrL,GAEF,KAAhB/gB,KAAKurK,OACVvrK,KAAK+sM,iBAAiBhsL,GAED,KAAhB/gB,KAAKurK,OACVvrK,KAAK4sM,qBAAqB7rL,GAI1B/gB,KAAK2sM,yBAAyB5rL,GAElC/gB,KAAKspM,SAETtpM,KAAKi6J,WAETqsC,EAAU9jM,UAAU2kI,OAAS,WACL,KAAhBnnI,KAAKurK,QACLvrK,KAAKusM,kBAGLvsM,KAAKqpM,aAAerpM,KAAKspM,QACzBtpM,KAAKitM,qBAETjtM,KAAKylM,IAAIxlE,SAGbqmE,EAAU9jM,UAAUyqM,mBAAqB,WACrC,IAAI/jM,EAAOlJ,KAAK6e,OAAOoD,OAAOjiB,KAAKqpM,cACf,KAAhBrpM,KAAKurK,OACDvrK,KAAKiqM,kBAAoBnB,EAAUE,SACnChpM,KAAKylM,IAAIuC,QAAQ9+L,GAGjBlJ,KAAKylM,IAAIqC,UAAU5+L,GAGF,KAAhBlJ,KAAKurK,QACVvrK,KAAKwsM,oBACLxsM,KAAK6sM,oBAAoB,IAAI,GAGR,KAAhB7sM,KAAKurK,QACVvrK,KAAKwsM,oBACLxsM,KAAK6sM,oBAAoB,IAAI,GAGR,IAAhB7sM,KAAKurK,QACM,IAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,QACW,IAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,QACW,IAAhBvrK,KAAKurK,QAOLvrK,KAAKylM,IAAI5C,OAAO35L,IAGxBo9L,EAAU9jM,UAAU4nM,WAAa,WAC7B,OAAOpqM,KAAK6e,OAAOoY,UAAUj3B,KAAKqpM,aAAcrpM,KAAKspM,SAEzDhD,EAAU9jM,UAAUkqM,YAAc,SAAUrtM,GACjB,IAAnBW,KAAKwpM,WACc,KAAnBxpM,KAAKwpM,UACLxpM,KAAKylM,IAAI6B,aAAajoM,GAGtBW,KAAKylM,IAAI5C,OAAOxjM,IAGjBinM,EA1wBmB,GA4wB9BlnM,EAAA,QAAkBknM,sCCnzBlB,IACQ4G,EADJC,EAAantM,MAAQA,KAAKmtM,YACtBD,EAAgB,SAAU/kL,EAAG1E,GAI7B,OAHAypL,EAAgBhuM,OAAOgmC,gBAClB,CAAEC,UAAW,cAAgBrpB,OAAS,SAAUqM,EAAG1E,GAAK0E,EAAEgd,UAAY1hB,IACvE,SAAU0E,EAAG1E,GAAK,IAAK,IAAIlhB,KAAKkhB,EAAOvkB,OAAOsD,UAAUC,eAAeC,KAAK+gB,EAAGlhB,KAAI4lB,EAAE5lB,GAAKkhB,EAAElhB,KACzF2qM,EAAc/kL,EAAG1E,IAErB,SAAU0E,EAAG1E,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIvC,UAAU,uBAAyBf,OAAOsD,GAAK,iCAE7D,SAAS2pL,IAAOptM,KAAKP,YAAc0oB,EADnC+kL,EAAc/kL,EAAG1E,GAEjB0E,EAAE3lB,UAAkB,OAANihB,EAAavkB,OAAOuC,OAAOgiB,IAAM2pL,EAAG5qM,UAAYihB,EAAEjhB,UAAW,IAAI4qM,KAGvFluM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmnK,oBAAiB,EACzB,IAAI8mC,EAAW,EAAQ,OAKnB1iM,EAAW,EAAQ,OACnB2iM,EAAmB,EAAQ,OAU3B/mC,EAAgC,SAAUgnC,GAE1C,SAAShnC,EAAek/B,EAAKp0L,GACzB,IAAI00H,EAAQwnE,EAAO7qM,KAAK1C,KAAM,CAAEsoI,eAAe,KAAYtoI,KAG3D,OAFA+lI,EAAMynE,SAAW,IAAIF,EAAiBxsE,cACtCiF,EAAM0nE,QAAU,IAAIJ,EAASjlH,OAAOq9G,EAAKp0L,GAClC00H,EAUX,OAfAonE,EAAU5mC,EAAgBgnC,GAO1BhnC,EAAe/jK,UAAU0qH,OAAS,SAAUxkC,EAAO2C,EAAU0yC,GACzD/9H,KAAKytM,QAAQhzL,MAjBrB,SAAkBizL,EAAQriH,GACtB,MAAoB,WAAbA,EAgBgB5qB,CAASioB,EAAO2C,GAAYrrF,KAAKwtM,SAAS/yL,MAAMiuE,GAASA,GAC5Eq1C,KAEJwoC,EAAe/jK,UAAUknI,OAAS,SAAU3L,GACxC/9H,KAAKytM,QAAQ7iH,IAAI5qF,KAAKwtM,SAAS5iH,OAC/BmzC,KAEGwoC,EAhBwB,CAiBjC57J,EAASo1H,UACX3gI,EAAQmnK,eAAiBA,gCCnDzBrnK,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQuuM,yBAAsB,EAC9B,MAAMxL,EAAkB,EAAQ,OAC1Bt/L,EAAoB,EAAQ,MAC5B+qM,EAA4B,EAAQ,OACpCC,EAA2B,EAAQ,OAMzC,MAAMF,UAA4BxL,EAAgBE,6BAY9C5iM,YAAYC,GACRC,MAAMD,GAEVE,iBAAiBC,EAAQyB,EAAWnB,GAChC,GAAIA,EAAQ+H,IAAIrF,EAAkB6Q,uBAAuBqB,uBAAuC,wBAAdzT,EAC9E,MAAM,IAAId,MAAM,yEAEpB,KAAMc,KAAatB,KAAKgB,uBAAyBM,EAAUo/E,SAAS,SAChE,MAAM,IAAIlgF,MAAM,4BAA4Bc,KAEhD,aAAatB,KAAKuB,kBAAkB1B,GAExCD,gBAAgBC,EAAQyB,EAAWuG,GAQ/B,MAAO,CAAEqB,KAPM0kM,EAA0BE,aAAaC,iBAAiBluM,EAAOuF,UAAUkD,SAAW,GAAIhH,EAAWzB,EAAOiE,QAAS,CAC9H8Q,eAAgB/M,EAAcxF,IAAIQ,EAAkB8Q,mBAAmBiB,iBACnE,IAAIi5L,EAAyBG,uBAAuBhuM,KAAK2D,aAAckE,GAC3EgN,aAAchN,EAAcxF,IAAIQ,EAAkB8Q,mBAAmBkB,iBAClEhN,EAAcxF,IAAIQ,EAAkB8Q,mBAAmBmB,iBAE1Cm5L,OAAOpuM,EAAOqJ,QAI1C9J,EAAQuuM,oBAAsBA,gCC9C9BzuM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4uM,4BAAyB,EACjC,MAAMprM,EAAa,EAAQ,OACrBsrM,EAA0B,EAAQ,MAClCjvB,EAAkB,EAAQ,OAIhC,MAAM+uB,UAA+BE,EAAwBC,oBACzD1uM,YAAYkE,EAAcxD,GACtBR,MAAMquM,EAAuBI,cAAczqM,EAAcxD,IACzDH,KAAK2D,aAAeA,EACpB3D,KAAKG,QAAUA,EAEnBiK,qBAAqBzG,EAAcxD,GAC/B,OAAOP,MAAO6D,EAAKS,KACf,MAAMusB,QAAiB9sB,EAAaC,QAAQ,CAAEJ,MAAOC,EAAKS,KAAAA,EAAM/D,QAAAA,IAEhE,OADAswB,EAASQ,KAAOrxB,SAAYwM,KAAK2b,YAAYk3J,EAAgBr8K,EAAWE,UAAU68K,eAAelvJ,EAAS5hB,QACnG4hB,IAInBrxB,EAAQ4uM,uBAAyBA,sCCtBjC,IAAIxsM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA0BlD,GAC/CkD,EAAa,EAAQ,OAA6BlD,iCChBlDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQivM,qBAAkB,EAC1B,MAAMlM,EAAkB,EAAQ,OAC1BmM,EAAO,EAAQ,OAMrB,MAAMD,UAAwBlM,EAAgBE,6BAkB1C5iM,YAAYC,GACRC,MAAMD,GAEVE,gBAAgBC,EAAQyB,EAAWnB,GAC/BN,EAAOqJ,KAAKsC,GAAG,SAASO,GAAS7C,EAAK8C,KAAK,QAASD,KACpD,MAAM7C,EAAOrJ,EAAOqJ,KAAK+jH,KAAK,IAAIqhF,EAAKC,aAAa,CAAEjmM,QAASzI,EAAOuF,UAAUkD,WAChF,MAAO,CACHY,KAAAA,EACA9D,SAAU,CACNoyI,QAAuB,gBAAdl2I,GACS,0BAAdA,GACc,YAAdA,KAKpBlC,EAAQivM,gBAAkBA,sCC3C1B,IAAI7sM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAsBlD,iCCf3CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQovM,yBAAsB,EAC9B,MAAMrM,EAAkB,EAAQ,OAC1BsM,EAA4B,EAAQ,OAI1C,MAAMD,UAA4BrM,EAAgBE,6BAU9C5iM,YAAYC,GACRC,MAAMD,GAEVE,gBAAgBC,EAAQyB,EAAWnB,GAC/BN,EAAOqJ,KAAKsC,GAAG,SAASO,GAAS7C,EAAK8C,KAAK,QAASD,KACpD,MAAM7C,EAAOrJ,EAAOqJ,KAAK+jH,KAAK,IAAIwhF,EAA0BC,aAAa,CAAEpmM,QAASzI,EAAOuF,UAAUkD,WACrG,MAAO,CACHY,KAAAA,EACA9D,SAAU,CAAEoyI,SAAS,KAIjCp4I,EAAQovM,oBAAsBA,sCC7B9B,IAAIhtM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA0BlD,iCCf/CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQuvM,0BAAuB,EAC/B,MAAMxM,EAAkB,EAAQ,OAC1B7B,EAA0B,EAAQ,MAIxC,MAAMqO,UAA6BxM,EAAgBE,6BAc/C5iM,YAAYC,GACRC,MAAMD,GAEVE,gBAAgBC,EAAQyB,EAAWnB,GAC/B,MAAM6H,GAAYnI,EAAOiE,SAAWjE,EAAOiE,QAAQzB,IAAI,2BAAwBP,EAC/EjC,EAAOqJ,KAAKsC,GAAG,SAASO,GAAS7C,EAAK8C,KAAK,QAASD,KACpD,MAAM7C,EAAOrJ,EAAOqJ,KAAK+jH,KAAK,IAAIqzE,EAAwBC,WAAW,CAAEj4L,QAASzI,EAAOuF,UAAUkD,QAASy9B,QAAS,MAAO/9B,SAAAA,KAC1H,MAAO,CAAEkB,KAAAA,EAAM9D,SAAU,CAAEoyI,SAAS,KAG5Cp4I,EAAQuvM,qBAAuBA,sCC/B/B,IAAIntM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA2BlD,iCCfhDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwvM,wCAAqC,EAC7C,MAAMC,EAAqC,EAAQ,OAInD,MAAMD,UAA2CC,EAAmCC,+BAChFrvM,YAAYC,GACRC,MAAMD,GAEVE,WAAWC,GACP,IAAKA,EAAOuF,SAASqxC,KACjB,MAAM,IAAIj2C,MAAM,SAASR,KAAKkD,0CAElC,OAAO,EAEXtD,UAAUC,GACN,MAAO,CAAE29L,MAAO,CAAC,CAAE/5L,IAAK5D,EAAOuF,SAASqxC,SAGhDr3C,EAAQwvM,mCAAqCA,sCCpB7C,IAAIptM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAyClD,iCCf9DF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2vM,6CAA0C,EAClD,MAAMC,EAA2C,EAAQ,OACnDC,EAAkB,EAAQ,OAIhC,MAAMF,UAAgDC,EAAyCE,oCAC3FzvM,YAAYC,GACRC,MAAMD,GAEVE,WAAWC,GACP,OAAO,EAEXD,UAAUC,GACN,MAAO,CAAEsvM,UAAW,IAAIF,EAAgBG,gBAGhDhwM,EAAQ2vM,wCAA0CA,8BClBlD7vM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgwM,mBAAgB,EAyBxBhwM,EAAQgwM,cArBR,MACI3vM,cACIO,KAAKw9L,MAAQ,GAEjB/3L,KAAK83L,GAED,OADAv9L,KAAKw9L,MAAM/3L,KAAK83L,IACT,EAEX8R,UACI,OAAOrvM,KAAKw9L,MAAMz3L,OAEtB+/G,UACI,OAA6B,IAAtB9lH,KAAKw9L,MAAMz3L,OAEtByc,MACI,OAAOxiB,KAAKw9L,MAAMrjJ,QAEtBynE,OACI,OAAO5hH,KAAKw9L,MAAM,yCCvB1B,IAAIh8L,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA8ClD,GACnEkD,EAAa,EAAQ,OAAoBlD,iCChBzCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQkwM,mCAAgC,EACxC,MAAMC,EAAgD,EAAQ,OACxDC,EAA+B,EAAQ,OACvCC,EAAqB,EAAQ,OAInC,MAAMH,UAAsCE,EAA6BE,0BACrEjwM,YAAYC,GACRC,MAAMD,EAAM,QAEhBE,mBAAmBC,GACf,MAAO,CAAE8vM,aAAc,GAE3B/vM,UAAUC,GAEN,OADAG,KAAK+W,QAAQlX,EAAOM,QAAS,8BAA8BN,EAAO4D,OAC3D,CAAEyR,OAAQ,IAAIq6L,EAA8CK,sBAAsB,EAAIH,EAAmBI,aAAahwM,EAAOs4H,UAG5I/4H,EAAQkwM,8BAAgCA,sCCpBxC,IAAI9tM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAoClD,iCCfzDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0wM,kCAA+B,EACvC,MAAMN,EAA+B,EAAQ,OACvCO,EAAiB,EAAQ,OAI/B,MAAMD,UAAqCN,EAA6BE,0BACpEjwM,YAAYC,GACRC,MAAMD,EAAM,OAEhBE,mBAAmBC,GACf,MAAM,WAAEmwM,GAAehwM,KAAKiwM,aAAapwM,EAAOuF,SAAUvF,EAAOM,SACjE,GAAIN,EAAOqwM,iBAAmBrwM,EAAOqwM,gBAAgBF,EAAWlS,SAC5D,MAAM,IAAIt9L,MAAM,SAASR,KAAKkD,iEAElC,MAAO,CAAEysM,aAAc,GAO3B/vM,UAAUC,GACNG,KAAK+W,QAAQlX,EAAOM,QAAS,6BAA6BN,EAAO4D,OACjE,MAAMyR,EAASlV,KAAKiwM,aAAapwM,EAAOuF,SAAUvF,EAAOM,QAASN,EAAOs4H,OACzE,MAAO,CAAEjjH,OAAAA,EAAQ4oL,QAAS5oL,EAAO86L,WAAWlS,SAEhDmS,aAAa7qM,EAAUjF,EAASg4H,GAC5B,OAAO,IAAI43E,EAAeI,aAAanwM,KAAKowM,iBAAkBpwM,KAAKqwM,wBAAyBrwM,KAAKswM,uBAAwBtwM,KAAKuwM,WAAYvwM,KAAKwwM,aAAcxwM,KAAKywM,UAAWzwM,KAAK0wM,SAAUtrM,EAAUjF,EAASg4H,IAGvN/4H,EAAQ0wM,6BAA+BA,gCChCvC5wM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+wM,kBAAe,EACvB,MAAM3zB,EAAkB,EAAQ,OAC1BruK,EAAqB,EAAQ,OAC7BxJ,EAAe,EAAQ,MACvBuxH,EAAc,EAAQ,OACtBuD,EAAK,IAAItrH,EAAmBE,YA2KlCjP,EAAQ+wM,aAvKR,MACI1wM,YAAY2wM,EAAkBC,EAAyBC,EAAwBC,EAAYC,EAAcC,EAAWC,EAAUtrM,EAAUjF,EAASwwM,GAC7I3wM,KAAKowM,iBAAmBA,EACxBpwM,KAAKqwM,wBAA0BA,EAC/BrwM,KAAKswM,uBAAyBA,EAC9BtwM,KAAKuwM,WAAaA,EAClBvwM,KAAKwwM,aAAeA,EACpBxwM,KAAKywM,UAAYA,EACjBzwM,KAAK0wM,SAAWA,EAChB1wM,KAAKG,QAAUA,EACfH,KAAK4wM,YAAc,GACnB,MAAMZ,EAAahwM,KAAK6wM,cAAczrM,GACtC,IAAK4qM,EACD,MAAM,IAAIxvM,MAAM,oEAIpB,GAFAR,KAAKgwM,WAAaA,EAClBhwM,KAAKq0H,aAAejvH,EAASivH,aAAeoF,EAAG3F,UAAU1uH,EAASivH,mBAAgBvyH,EAC9E6uM,EAAc,CACd,IAAIG,GAAe,EAAIt0B,EAAgBhvJ,MAAMmjL,GACzC3wM,KAAKq0H,eACLy8E,EAAe9wM,KAAK+wM,8BAA8BD,IAEtDA,EAAaE,YAAY,WAAY5rM,GACrCpF,KAAKixM,WAAWH,EAAcr3E,EAAGlzH,SAAS,IAAKkzH,EAAGlzH,SAAS,IAAKkzH,EAAGlzH,SAAS,IAAKkzH,EAAGlzH,SAAS,MAQrGsqM,cAAczrM,GACV,IAAKA,EAASy4L,cAAgBz4L,EAASy4L,YAAY9wL,OAC/C,OAGJ,MAAM,YAAE8wL,GAAgBz4L,EACxB,IAAK,MAAM4qM,KAAcnS,EAAY9wL,OAAQ,CACzC,GAAI/M,KAAK0wM,UACL1wM,KAAKuwM,cAAcP,EAAW9R,UAC9Bl+L,KAAKwwM,gBAAgBR,EAAW9R,UAChCl+L,KAAKywM,aAAaT,EAAW9R,UAC7Bl+L,KAAK0wM,YAAYV,EAAW9R,UACgB,IAA5Ch/L,OAAO0N,KAAKojM,EAAW9R,UAAUn4L,OACjC,OAAOiqM,EAEX,GAAIhwM,KAAKuwM,cAAcP,EAAW9R,UAC9Bl+L,KAAKwwM,gBAAgBR,EAAW9R,UAChCl+L,KAAKywM,aAAaT,EAAW9R,UACe,IAA5Ch/L,OAAO0N,KAAKojM,EAAW9R,UAAUn4L,OACjC,OAAOiqM,GAanBkB,kBAAkBlB,EAAYtpM,EAASC,EAAWC,EAAQC,GACtD,MAAM5F,EAAU,GACVuC,EAAQ,CACV,CAAEgwD,IAAKxzD,KAAKuwM,WAAYn/L,KAAM1K,GAC9B,CAAE8sD,IAAKxzD,KAAKwwM,aAAcp/L,KAAMzK,GAChC,CAAE6sD,IAAKxzD,KAAKywM,UAAWr/L,KAAMxK,GAC7B,CAAE4sD,IAAKxzD,KAAK0wM,SAAUt/L,KAAMvK,IAEhC,IAAK,MAAM0L,KAAS/O,EACZ+O,EAAMihD,KAA+B,aAAxBjhD,EAAMnB,KAAKtK,WACxB7F,EAAQsR,EAAMihD,MAAO,EAAI7uD,EAAa8B,cAAc8L,EAAMnB,OAGlE,OAAO4+L,EAAW5R,OAAOn9L,GAE7B6nB,MAAMpiB,EAASC,EAAWC,EAAQC,GAI9B,IAAIsqM,GAAgB,EAChBnxM,KAAKq0H,cAAmC,iBAAnBxtH,EAAMC,WAC3BqqM,GAAgB,EAChBtqM,EAAQ7G,KAAKq0H,cAGjB,MAAMpkG,EAASjwB,KAAKoxM,eAAe1qM,EAASC,EAAWC,EAAQC,GAC/D,GAAIopB,EACA,OAAOA,EAEX,MAAMkoG,EAAQ,IAAIqkD,EAAgBU,mBAAkBt9K,UAChD,IAAI6D,EAAMzD,KAAKkxM,kBAAkBlxM,KAAKgwM,WAAYtpM,EAASC,EAAWC,EAAQC,GAC9E,MAAMwqM,QAA6BrxM,KAAKswM,uBAAuB1sM,QAAQ,CAAEzD,QAASH,KAAKG,QAASsD,IAAAA,IAChGA,EAAM4tM,EAAqB5tM,IAE3B,MAAM6tM,QAAyBtxM,KAAKowM,iBAAiBxsM,QAAQ,CAAEzD,QAASH,KAAKG,QACzEsD,IAAAA,EACA00H,MAAOk5E,EAAqBnoM,KAC5BsuI,QAAS65D,EAAqBjsM,UAAUoyI,UACtC+5D,EAAyBvxM,KAAKqwM,wBAC/BzsM,QAAQ,CACTzD,QAASH,KAAKG,QACdsD,IAAAA,EACA2B,SAAUksM,EAAiBlsM,SAC3Bq6K,YAAa4xB,EAAqB5xB,cAEjCtzK,MAAK,EAAG/G,SAAAA,KAAe+yH,EACvB64E,YAAY,WAAY,IAAK5rM,EAAUy9K,kBAAkB,MAIxD2uB,EAAqB/3E,EAAGpF,eAC9B,IAAI83D,GAAiB,EAAI3P,EAAgBhvJ,MAAM8jL,EAAiBpoM,MAC3DqkH,UAAU,CACXjgH,OAAO9G,MACC,EAAI0vH,EAAY2G,cAAcr2H,EAAME,EAASC,EAAWC,EAAQC,IAK7DsqM,IAAiB,EAAIj7E,EAAY2G,cAAcr2H,EAAME,EAASC,EAAWC,EAAQ4qM,KAchG,OAXIL,GAAoC,aAAnBtqM,EAAMC,YAEvBqlL,EAAiBnsL,KAAK+wM,8BAA8B5kB,IAIxDA,EAAe3gL,GAAG,SAAS,eAIrB+lM,EACCplB,IACR,CAAE7O,WAAW,IAEhB,OADAt9K,KAAKixM,WAAW94E,EAAOzxH,EAASC,EAAWC,EAAQC,GAC5C7G,KAAKoxM,eAAe1qM,EAASC,EAAWC,EAAQC,GAE3DkqM,8BAA8B54E,GAC1B,MAAMq5E,EAAqB/3E,EAAGpF,eAC9B,OAAO8D,EAAMnyH,KAAIQ,IAAQ,EAAI0vH,EAAYmG,UAAU71H,GAAM,CAAC4K,EAAMjQ,IAAgB,UAARA,GAAmBiQ,EAAKhE,OAAOpN,KAAKq0H,cAAgBm9E,EAAqBpgM,MAErJqgM,aAAa/qM,EAASC,EAAWC,EAAQC,GAErC,OAAOuF,KAAKC,UAAU,CAClBwd,EAAwB,aAArBnjB,EAAQI,SAA0B,IAAK,EAAInC,EAAa8B,cAAcC,GACzEnE,EAA0B,aAAvBoE,EAAUG,SAA0B,IAAK,EAAInC,EAAa8B,cAAcE,GAC3EjF,EAAuB,aAApBkF,EAAOE,SAA0B,IAAK,EAAInC,EAAa8B,cAAcG,GACxE8zB,EAAsB,aAAnB7zB,EAAMC,SAA0B,IAAK,EAAInC,EAAa8B,cAAcI,KAI/EoqM,WAAW94E,EAAOzxH,EAASC,EAAWC,EAAQC,GAC1C,MAAM6qM,EAAY1xM,KAAKyxM,aAAa/qM,EAASC,EAAWC,EAAQC,GAChE7G,KAAK4wM,YAAYc,GAAav5E,EAAMhqF,QAExCijK,eAAe1qM,EAASC,EAAWC,EAAQC,GACvC,MAAM6qM,EAAY1xM,KAAKyxM,aAAa/qM,EAASC,EAAWC,EAAQC,GAC1DsxH,EAAQn4H,KAAK4wM,YAAYc,GAC/B,GAAIv5E,EACA,OAAOA,EAAMhqF,8CC7KzB,IAAI3sC,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAmClD,iCCfxDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQuyM,qCAAkC,EAC1C,MAAMnC,EAA+B,EAAQ,OACvCoC,EAAoB,EAAQ,OAIlC,MAAMD,UAAwCnC,EAA6BE,0BACvEjwM,YAAYC,GACRC,MAAMD,EAAM,UAEhBE,mBAAmBC,GACf,KAAKA,EAAOgyM,iBAAoBhyM,EAAOuF,SAAS+5L,eAC1Cn/L,KAAK8xM,gBAAkBjyM,EAAO4D,IAAIi9E,SAAS,YAC7C,MAAM,IAAIlgF,MAAM,SAASR,KAAKkD,gFAElC,MAAO,CAAEysM,aAAc,GAE3B/vM,UAAUC,GAGN,OAFAG,KAAK+W,QAAQlX,EAAOM,QAAS,gCAAgCN,EAAO4D,OAE7D,CAAEyR,OADM,IAAI08L,EAAkBG,gBAAgBlyM,EAAOuF,SAAS+5L,eAAiBt/L,EAAO4D,IAAK5D,EAAOM,QAASH,KAAK2D,aAAc3D,KAAKytL,gBAIlJruL,EAAQuyM,gCAAkCA,gCCxB1CzyM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2yM,qBAAkB,EAC1B,MAAM9gM,EAAqB,EAAQ,OAC7BurK,EAAkB,EAAQ,OAC1B8Q,EAA0B,EAAQ,OAClCn/K,EAAqB,EAAQ,OAC7B+nH,EAAc,EAAQ,OACtBhlH,EAAoB,EAAQ,MAC5BuoH,EAAK,IAAItrH,EAAmBE,YAC5B8C,EAAK,IAAIF,EAAmB/C,gBAC5B8jM,EAAYv4E,EAAGlzH,SAAS,SAC9B,MAAMwrM,EACFtyM,YAAYgE,EAAKtD,EAASwD,EAAc8pL,GACpCztL,KAAKyD,IAAMA,EACXzD,KAAKG,QAAUA,EACfH,KAAK2D,aAAeA,EACpB3D,KAAKutL,gBAAkB,IAAID,EAAwBE,sBAAsB,CACrEz8J,OAAQ08J,EAAe,MAAQ,OAC/Bv5K,MAAO,CAAC1Q,EAAOU,IAASlE,KAAK2D,aAAaC,QAAQ,CAAEJ,MAAAA,EAAOU,KAAAA,EAAM/D,QAASH,KAAKG,UAC/E63J,4BAA4B,IASpC5tJ,yBAAyBhE,GACrB,MAAM6rM,GAAgB,EAAI/7E,EAAY6G,eAAc,EAAI7G,EAAY8C,UAAU5yH,IAAUJ,KAAIksM,GAAgBA,EAAa7yM,QAEnH8yM,EAAW,GACjB,IAAIC,GAAU,EAEd,MAAM9qM,GAAS,EAAI4uH,EAAYmG,UAAUj2H,GAASgL,IAC9C,GAAsB,cAAlBA,EAAKtK,SAA0B,CAC/B,IAAI5D,EAAOkO,EAAK/R,MAChB,GAAI8yM,EAASjvM,GACTA,EAAOivM,EAASjvM,OAEf,CACD,GAAI+uM,EAAcn5L,SAAS5V,GAAO,CAE9B,IAAI42G,EAAM,EACV,KAAOm4F,EAAcn5L,SAAS,GAAG5V,IAAO42G,QAClCA,EAEN52G,GAAQ42G,EAEZq4F,EAAS/gM,EAAK/R,OAAS6D,EACvB+uM,EAAcxsM,KAAKvC,GAGvB,OADAkvM,GAAU,EACH34E,EAAGlzH,SAASrD,GAEvB,OAAOkO,KAEX,OAAOghM,EAAU9qM,EAASlB,EAO9BgE,oBAAoBhE,GAChB,OAAO2rM,EAAgBl2E,QAAQgV,UAAU,CAACkhE,EAAgBl2E,QACjD9pH,cAAc3L,EAAQM,QAASN,EAAQO,UAAWP,EAAQQ,OAAQR,EAAQS,SAOvFuD,4BAA4BhE,GACxB,MAAME,GAAY,EAAI4vH,EAAY6G,eAAc,EAAI7G,EAAY8C,UAAU5yH,IAC1E,OAAO,EAAI8K,EAAkBu+H,UAAUsiE,EAAgBl2E,QAAQppH,cAAcs/L,EAAgBM,aAAajsM,GAAUE,IAOxH8D,2BAA2BhE,GACvB,OAAO,EAAI8K,EAAkBu+H,UAAUsiE,EAAgBl2E,QAAQppH,cAAcs/L,EAAgBl2E,QAAQ0V,aAAawgE,EAAgBl2E,QAAQ3pH,YAAY6/L,EAAgBM,aAAajsM,GAAU,GAAI,CAAC2rM,EAAgBl2E,QAAQ4U,qBAAqBhX,EAAGlzH,SAAS,QAAS,QAASwrM,EAAgBl2E,QAAQqZ,4BAA4B,KAAUzb,EAAGlzH,SAAS,SAAUwrM,EAAgBl2E,QAAQ5oH,qBAAqBwmH,EAAGlzH,SAAS,UAAW,CAACkzH,EAAGlzH,SAAS,YAQtb8V,cAAcswK,EAAUxlL,GACpB,MAAMmrM,EAAYtyM,KAAKutL,gBAAgBuB,cAAcnC,EAAUxlL,GAC/D,OAAO,EAAIq1K,EAAgBhvJ,MAAM8kL,EAAW,CAAEh1B,WAAW,EAAOD,cAAeh6K,OAAOC,oBACjF0C,KAAK+oL,GAAY59K,EAAG1F,SAASvM,OAAO+B,QAAQ8tL,GAC5C/oL,KAAI,EAAE7E,EAAK9B,KAAW,CAACo6H,EAAGlzH,SAASpF,EAAIkiB,MAAM,IAAKhkB,QAE3DypB,MAAMpiB,EAASC,EAAWC,EAAQC,GAC9B,MAAMT,EAAU2rM,EAAgBQ,kBAAkBR,EAAgBl2E,QAAQ9pH,cAAcrL,EAASC,EAAWC,EAAQC,IAC9G2rM,EAAaT,EAAgBU,oBAAoBrsM,GACjDssM,EAAcX,EAAgBY,qBAAqBvsM,GAGzD,IAAI4E,SAAQC,IACR,MAAMX,EAAiBtK,KAAKqc,cAAcrc,KAAKyD,IAAK+uM,GACpDloM,EAAekB,GAAG,QAASC,IACvB,MAAMsuF,EAAQtuF,EAASpJ,IAAI2vM,GAC3B,GAAIj4G,EAAO,CACP,MAAM6oF,EAAcv/K,OAAO2e,SAAS+3E,EAAM16F,MAAO,IACjD,OAAIgE,OAAOu9D,MAAMgiH,GACN33K,EAAQ,CAAE23K,YAAav/K,OAAOC,oBAElC2H,EAAQ,CAAE23K,YAAAA,IAErB,OAAO33K,EAAQ,CAAE23K,YAAav/K,OAAOC,uBAEzCgH,EAAekB,GAAG,SAAS,IAAMP,EAAQ,CAAE23K,YAAav/K,OAAOC,sBAC/DgH,EAAekB,GAAG,OAAO,IAAMP,EAAQ,CAAE23K,YAAav/K,OAAOC,yBAE5D6I,MAAK/G,GAAY+yH,EAAM64E,YAAY,WAAY,IAAK5rM,EAAUy9K,kBAAkB,MAErF,MAAM1qD,EAAQn4H,KAAKqc,cAAcrc,KAAKyD,IAAKivM,GACtC1sM,KAAKyF,IAAa,EAAIyqH,EAAYmG,UAAUj2H,GAAU/G,IACvD,GAAuB,aAAnBA,EAAMyH,SAAyB,CAC/B,MAAM8rM,EAAannM,EAASpJ,IAAIhD,GAIhC,OAHKuzM,GACDz6E,EAAMj8G,QAAQ,IAAI1b,MAAM,gBAAgBR,KAAKyD,uCAAuCpE,EAAMA,WAEvFuzM,EAEX,OAAOvzM,OAEX,OAAO84H,GAGf/4H,EAAQ2yM,gBAAkBA,EAC1BA,EAAgBl2E,QAAU,IAAI3qH,EAAkBw+H,4CCxIhD,IAAIluI,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAsClD,iCCf3DF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQyzM,yCAAsC,EAC9C,MAAMzlB,EAAiC,EAAQ,OACzC0lB,EAAwB,EAAQ,OAItC,MAAMD,UAA4CzlB,EAA+B2lB,iCAC7EtzM,YAAYC,GACRC,MAAMD,GACNM,KAAKgzM,cAAgB,IAAInuM,IAE7BjF,WAAWC,GAEP,KADgB,EAAIutL,EAA+B6lB,mBAAmBpzM,EAAOM,SAEzE,MAAM,IAAIK,MAAM,SAASR,KAAKkD,uEAElC,OAAO,EAEXtD,gBAAgBO,GACZ,OAAO,IAAI2yM,EAAsBI,oBAAoBlzM,KAAKisL,2BAA4B9rL,EAASH,KAAKgzM,cAAehzM,KAAKmzM,oBAGhI/zM,EAAQyzM,oCAAsCA,gCCvB9C3zM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8zM,yBAAsB,EAC9B,MAAM9lB,EAAiC,EAAQ,OACzCvqL,EAAoB,EAAQ,MAC5BoM,EAAiB,EAAQ,OACzButK,EAAkB,EAAQ,OAC1BruK,EAAqB,EAAQ,OAC7B+nH,EAAc,EAAQ,OACtBhlH,EAAoB,EAAQ,MAC5BuoH,EAAK,IAAItrH,EAAmBE,YAKlC,MAAM6kM,EACFzzM,YAAYwsL,EAA4B9rL,EAAS6yM,EAAeG,GAS5D,GARAnzM,KAAKisL,2BAA6BA,EAClCjsL,KAAKiV,QAAU9U,EAAQkC,IAAIQ,EAAkB4F,0BAA0BwM,SACvEjV,KAAKozM,eAAiBjzM,EAAQ0D,OAAOhB,EAAkB4F,0BAA0BwM,SACjFjV,KAAKgzM,cAAgBA,EACrBhzM,KAAK0I,UAAYvI,EAAQkC,IAAIQ,EAAkB4F,0BAA0BC,YAAc,IAAI7D,IAC3F7E,KAAKmzM,kBAAoBA,EACzBnzM,KAAKqzM,eAAiB,IAAIniM,EAAkBw+H,QAExC1vI,KAAKmzM,kBACL,IAAK,MAAMj+L,KAAUlV,KAAKiV,QACjBjV,KAAKgzM,cAAc9qM,IAAIgN,IACxBlV,KAAKgzM,cAAcztM,IAAI2P,EAAQ,IAW/C9K,mBAAmBgH,GACf,MAAyB,aAAlBA,EAAKtK,SAShBsD,sBAAsBnE,EAAOskE,GACzB,QAAS2oI,EAAoBI,YAAY/oI,EAAO7jE,UAAY6jE,EAAO7jE,QAAQ0G,OAAOnH,EAAMS,aAClFwsM,EAAoBI,YAAY/oI,EAAO5jE,YAAc4jE,EAAO5jE,UAAUyG,OAAOnH,EAAMU,eACnFusM,EAAoBI,YAAY/oI,EAAO3jE,SAAW2jE,EAAO3jE,OAAOwG,OAAOnH,EAAMW,YAC7EssM,EAAoBI,YAAY/oI,EAAO1jE,QAAU0jE,EAAO1jE,MAAMuG,OAAOnH,EAAMY,QASrFuD,qBAAqBgH,EAAMmiM,GACvB,MAAsB,cAAlBniM,EAAKtK,SACE,IAAImI,EAAegL,gBAAgB,MAAMs5L,KAAYniM,EAAK/R,QAASo6H,EAAG3F,UAAU,GAAGo/E,EAAoBM,gBAAgBD,KAAYniM,EAAK/R,UAE5I+R,EAQXhH,qBAAqB5D,EAAM+sM,GACvB,OAAO,EAAIr9E,EAAYmG,UAAU71H,GAAM4K,GAAQ8hM,EAAoBO,cAAcriM,EAAMmiM,KAU3FnpM,uBAAuBgH,EAAMmiM,GAIzB,GAHsB,cAAlBniM,EAAKtK,UAA4B,eAAgBsK,IACjDA,EAAOA,EAAK8I,YAEM,cAAlB9I,EAAKtK,UAA4BsK,EAAK/R,MAAMioB,WAAW4rL,EAAoBM,eAAgB,CAC3F,MAAME,EAAiBtiM,EAAK/R,MAAMyY,QAAQ,IAAKo7L,EAAoBM,cAAcztM,QAGjF,GAFqBqL,EAAK/R,MAAMgkB,MAAM6vL,EAAoBM,cAAcztM,OAAQ2tM,KAE3DH,EAAU,CAE3B,MAAMI,EAAYviM,EAAK/R,MAAMgkB,MAAMqwL,EAAiB,EAAGtiM,EAAK/R,MAAM0G,QAClE,OAAO0zH,EAAGzF,UAAU2/E,GAGxB,OAAO,KAEX,OAAOviM,EAQXhH,uBAAuB5D,EAAM+sM,GACzB,OAAO,EAAIr9E,EAAYmG,UAAU71H,GAAO4K,GACpB8hM,EAAoBU,gBAAgBxiM,EAAMmiM,IAExCniM,IAe1ByiM,cAAc3+L,EAAQ9O,GAClB,IAAKpG,KAAKmzM,kBACN,OAAO,EAEX,MAAMH,EAAgBhzM,KAAKgzM,cAAc3wM,IAAI6S,GAC7C,GAAI89L,EACA,IAAK,MAAMc,KAAgBd,EACvB,GAAIE,EAAoBa,eAAe3tM,EAAS0tM,GAC5C,OAAO,EAInB,OAAO,EAOXE,YAAY9+L,GACR,IAAIq+L,EAAWvzM,KAAK0I,UAAUrG,IAAI6S,GAKlC,YAJiBpT,IAAbyxM,IACAA,EAAW,GAAGvzM,KAAK0I,UAAUuE,OAC7BjN,KAAK0I,UAAUnD,IAAI2P,EAAQq+L,IAExBA,EAEXzqL,MAAMpiB,EAASC,EAAWC,EAAQC,GAE9B,MAAMzB,EAAW,CAAEw9K,YAAa,CAAEz8K,KAAM,QAAS9G,MAAO,GAAKwjL,kBAAkB,GAC/E,IAAIoxB,EAAmBj0M,KAAKiV,QAAQlP,OAEpC,MAAMmuM,EAAoB,CAACC,EAAmBj/L,EAAQ9O,EAASguM,KACvDp0M,KAAKmzM,oBAAsBgB,GAAqB/tM,IAAYpG,KAAK6zM,cAAc3+L,EAAQ9O,IACvFpG,KAAKgzM,cAAc3wM,IAAI6S,GAAQzP,KAAKW,GAEnC6tM,IACGG,GAAwC,IAAxBp0M,KAAKiV,QAAQlP,OAE7Bm8I,EAAG8uD,YAAY,WAAYoD,GAG3BlyD,EAAG8uD,YAAY,WAAY5rM,KAIjCivM,EAAUrpM,QAAQ4nB,IAAI5yB,KAAKiV,QAAQjP,KAAIpG,MAAOsV,IAChD,MAAMq+L,EAAWvzM,KAAKg0M,YAAY9+L,GAG5Bo/L,EAAWpB,EAAoBU,gBAAgBltM,EAAS6sM,GACxDgB,EAAWrB,EAAoBU,gBAAgBjtM,EAAW4sM,GAC1DiB,EAAWtB,EAAoBU,gBAAgBhtM,EAAQ2sM,GACvDkB,EAAWvB,EAAoBU,gBAAgB/sM,EAAO0sM,GAC5D,IAAIntM,EAIA1C,EAFAvD,GAAU,EAAIitL,EAA+BsnB,sBAAsBx/L,EAAQlV,KAAKozM,gBACpFjzM,EAAUA,EAAQoF,IAAI1C,EAAkB4F,0BAA0ByM,OAAQ,CAAE/O,MAAM,EAAIinL,EAA+BS,mBAAmB34K,GAAS7V,OAAO,EAAI+tL,EAA+Ba,oBAAoB/4K,KAK1Mo/L,GAAaC,GAAaC,GAAaC,IAExCz0M,KAAK6zM,cAAc3+L,EAAQ9O,EAAUpG,KAAKqzM,eACrCthM,cAAcuiM,EAAUC,EAAUC,EAAUC,IAKjD/wM,QAAe1D,KAAKisL,2BAA2BroL,QAAQ,CAAEwC,QAAAA,EAASjG,QAAAA,KAJlEuD,EAAS,CAAEwF,KAAM,IAAIszK,EAAgBgH,cAAc,GAAI,CAAElG,WAAW,KACpE55K,EAAOwF,KAAK8nM,YAAY,WAAY,CAAEpuB,YAAa,EAAGC,kBAAkB,KAM5En/K,EAAOwF,KAAKoiL,YAAY,YAAa4B,IAC5BA,EAAYtK,aAAgBv/K,OAAO0+D,SAASmrH,EAAYtK,YAAYvjL,QAOhC,aAAjC6tL,EAAYtK,YAAYz8K,OACxBf,EAASw9K,YAAYz8K,KAAO,YAEhCf,EAASw9K,YAAYvjL,OAAS6tL,EAAYtK,YAAYvjL,MACtD40M,MATA7uM,EAASw9K,YAAYz8K,KAAO,WAC5Bf,EAASw9K,YAAYvjL,MAAQgE,OAAOC,kBACpC2wM,EAAmB,IASnB7uM,EAASq6K,aAAeyN,EAAYzN,eACpCr6K,EAASq6K,YAAcr6K,EAASq6K,aAAe,EAC/CyN,EAAYzN,YAAcyN,EAAYzN,aAAe,EACrDr6K,EAASq6K,aAAeyN,EAAYzN,cAEpCr6K,EAASw5L,UAAY1R,EAAY0R,YACjCx5L,EAASw5L,SAAWx5L,EAASw5L,UAAY,EACzC1R,EAAY0R,SAAW1R,EAAY0R,UAAY,EAC/Cx5L,EAASw5L,UAAY1R,EAAY0R,UAEjC1R,EAAYrK,mBACZz9K,EAASy9K,kBAAmB,GAEhCqxB,EAAkB9uM,EAASw9K,YAAYvjL,MAAO6V,EAAQ9O,EAAS8mL,MAGnE,IAAIhkL,EAAOxF,EAAOwF,KAAKlD,KAAIQ,GAAQ0sM,EAAoByB,cAAcnuM,EAAM+sM,KAO3E,MALuB,aAAnB1sM,EAAMC,WACNoC,EAAOA,EAAKoE,QAAO9G,GAAgC,iBAAxBA,EAAKK,MAAMC,YAG1CoC,EAAKsC,GAAG,SAASO,GAASm2I,EAAGl2I,KAAK,QAASD,KACpC7C,MAGLg5I,EAAK,IAAIs6B,EAAgBU,mBAAkBt9K,SAAY,IAAI48K,EAAgBuH,oBAAoBswB,IAAU,CAAE/2B,WAAW,IAK5H,OAH4B,IAAxBt9K,KAAKiV,QAAQlP,QACbm8I,EAAG8uD,YAAY,WAAY5rM,GAExB88I,GAGf9iJ,EAAQ8zM,oBAAsBA,EAC9BA,EAAoBM,cAAgB,kECzPpC,IAAIhyM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA0ClD,GAC/DkD,EAAa,EAAQ,OAA0BlD,gCChB/CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQw1M,0CAAuC,EAC/C,MAAMxnB,EAAiC,EAAQ,OACzCynB,EAAW,EAAQ,OACnBC,EAAuB,EAAQ,OAIrC,MAAMF,UAA6CxnB,EAA+B2lB,iCAC9EtzM,YAAYC,GACRC,MAAMD,GACNM,KAAKitG,MAAQjtG,KAAKysL,UAAY,IAAIooB,EAAS,CAAE3lK,IAAKlvC,KAAKysL,iBAAe3qL,EACtE,MAAMmrG,EAAQjtG,KAAKitG,MACfA,GACAjtG,KAAK+0M,gBAAgBC,uBAAsB,EAAGvxM,IAAAA,KAAUA,EAAMwpG,EAAMgoG,IAAIxxM,GAAOwpG,EAAMx1E,UAG7F73B,WAAWC,GAEP,KADgB,EAAIutL,EAA+B8nB,wBAAwBr1M,EAAOM,SAE9E,MAAM,IAAIK,MAAM,SAASR,KAAKkD,uEAElC,OAAO,EAEXiyM,UAAUh1M,EAAS+F,GACf,MAAMkvM,GAAgB,EAAIhoB,EAA+BioB,kBAAkBl1M,GACrEsD,GAAM,EAAI2pL,EAA+BkoB,qBAAqBF,GACpE,IAAIlgM,EAoBJ,OAlBIlV,KAAKitG,OAASjtG,KAAKitG,MAAM/kG,IAAIzE,GAC7ByR,EAASlV,KAAKitG,MAAM5qG,IAAIoB,IAIxByR,EAAS,IAAI4/L,EAAqBS,mBAAmBv1M,KAAKysL,UAAWtsL,EAASsD,GAAK,EAAI2pL,EAA+BS,mBAAmBunB,GAAgBp1M,KAAKw1M,aAAc,CACxKpF,iBAAkBpwM,KAAKowM,iBACvBC,wBAAyBrwM,KAAKqwM,wBAC9BC,uBAAwBtwM,KAAKswM,uBAC7BmF,6BAA8Bz1M,KAAKy1M,6BACnCC,kCAAmC11M,KAAK01M,kCACxCC,uCAAwC31M,KAAK21M,yCAG7C31M,KAAKitG,OACLjtG,KAAKitG,MAAM1nG,IAAI9B,EAAKyR,IAGrBlK,QAAQC,QAAQiK,IAG/B9V,EAAQw1M,qCAAuCA,gCClD/C11M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQw2M,sCAAmC,EAC3C,MAAMp5B,EAAkB,EAAQ,OAC1Bq4B,EAAW,EAAQ,OACzB,MAAMe,UAAyCp5B,EAAgBW,iBAC3D19K,YAAYgtL,EAAW/lL,EAASC,EAAWC,EAAQC,EAAOgvM,EAAUL,GAUhE,GATA71M,MAAM,CAAE29K,WAAW,IACnBt9K,KAAK81M,SAAU,EACf91M,KAAKysL,UAAYA,EACjBzsL,KAAK0G,QAAUA,EACf1G,KAAK2G,UAAYA,EACjB3G,KAAK4G,OAASA,EACd5G,KAAK6G,MAAQA,EACb7G,KAAK61M,SAAWA,EAChB71M,KAAKw1M,aAAeA,EAChBx1M,KAAKw1M,cAAgB,EACrB,MAAM,IAAIh1M,MAAM,mFAAmFR,KAAKw1M,gBAE5Gx1M,KAAK+1M,iBAAmB,GACxB/1M,KAAKg2M,yBAA2B,EAepCC,gBAAgBC,GACRA,EACAl2M,KAAKk2M,aAAeA,GAGpBl2M,KAAKk2M,aAAe,CAChBjhM,QAAS,IAAI4/L,EAAS,CAAE3lK,IAAKlvC,KAAKysL,aAGtCzsL,KAAKm2M,gBAAgB,CAAE1yM,IAAKzD,KAAK61M,UAAY,IACxCvpM,OAAMP,GAAS/L,KAAKkc,QAAQnQ,MASzCoqM,gBAAgB5Y,EAAM2S,GAClB,IAAIh7L,EAASlV,KAAKk2M,aAAajhM,QAAQ5S,IAAIk7L,EAAK95L,KAChD,OAAIyR,IAGJA,EAASlV,KAAKm1M,UAAU5X,EAAM2S,GAC9BlwM,KAAKk2M,aAAajhM,QAAQ1P,IAAIg4L,EAAK95L,IAAKyR,GACjCA,GAEXrJ,MAAMkuF,EAAOhF,GACT,GAAK/0F,KAAK81M,QAkBL,CAED,IAAK,MAAM3oM,KAAYnN,KAAK+1M,iBAAkB,CAC1C,KAAOh8G,EAAQ,GAAG,CACd,MAAM/2B,EAAO71D,EAAS61D,OACtB,GAAa,OAATA,EAKA,MAJA+2B,IACA/5F,KAAKy9K,MAAMz6G,GAMnB,GAAI+2B,GAAS,EACT,MAIJA,GAAS,GAAK/5F,KAAKo2M,sBACnBp2M,KAAKm2M,gBAAgB,CAAE1yM,IAAKzD,KAAK61M,UAAY,IACxC1pM,MAAKkqM,IACNr2M,KAAKs2M,0BAA0BD,EAAYnG,iBAAiB,GAC5Dn7G,OAECzoF,OAAMP,GAAS/L,KAAKkc,QAAQnQ,KAGjCgpF,SA3CJ/0F,KAAK81M,SAAU,EAEV91M,KAAKk2M,cACNl2M,KAAKi2M,kBAGTj2M,KAAKm2M,gBAAgB,CAAE1yM,IAAKzD,KAAK61M,UAAY,IACxC1pM,MAAKkqM,IACNr2M,KAAKu2M,cAAcF,GAAa,GAChCthH,OAECzoF,OAAMP,IAEPgpF,OAkCZqhH,sBACI,OAAQp2M,KAAK+1M,iBAAiBhwM,OAAS/F,KAAKg2M,yBAA4Bh2M,KAAKw1M,eAAiBx1M,KAAKotH,SAEvGopF,sBACI,OAAQx2M,KAAK+1M,iBAAiBhwM,OAAS/F,KAAKg2M,yBAA4B,EAQ5EO,cAAcE,EAAaC,GAEvB,MAAMvpM,EAAWspM,EAAYvhM,OACxB4T,MAAM9oB,KAAK0G,QAAS1G,KAAK2G,UAAW3G,KAAK4G,OAAQ5G,KAAK6G,OAC3D7G,KAAK+1M,iBAAiBtwM,KAAK0H,GAC3B,IAAIwpM,GAAmB,EAEvBxpM,EAASypM,aAAe52M,KACxBmN,EAAS3B,GAAG,SAAUO,GAAU/L,KAAKkc,QAAQnQ,KAC7CoB,EAAS3B,GAAG,YAAY,IAAMxL,KAAKivL,gBACnC9hL,EAAS3B,GAAG,OAAO,KACfxL,KAAK+1M,iBAAiBh+L,OAAO/X,KAAK+1M,iBAAiBj+L,QAAQ3K,GAAW,GAElEwpM,GACA32M,KAAKs2M,0BAA0BG,EAAYvG,iBAAiB,MAKpE/iM,EAASm+K,YAAY,YAAalmL,IAC9BqxM,EAAYrxM,SAAW,IAAKqxM,EAAYrxM,YAAaA,GAEjDsxM,GACA12M,KAAKgxM,YAAY,WAAYyF,EAAYrxM,UAG7CpF,KAAK62M,eAAeJ,EAAYrxM,UAC3B+G,MAAM2qM,GAAa9rM,QAAQ4nB,IAAIkkL,KAC/B3qM,MAAKvM,MAAOk3M,IAEb,MAAM3H,QAAkBnvM,KAAK+2M,eAC7B,IAAK,MAAMC,KAAWF,EAClB3H,EAAU1pM,KAAKuxM,EAASP,EAAYlZ,MAExCoZ,GAAmB,EACnB32M,KAAKs2M,0BAA0BG,EAAYvG,iBAAiB,MAC7D5jM,OAAMP,GAAS/L,KAAKkc,QAAQnQ,QAUvCuqM,0BAA0BpG,EAAiB+G,GACvCj3M,KAAK+2M,eACA5qM,MAAKgjM,IAEN,KAAOnvM,KAAKo2M,wBAA0Bp2M,KAAK+0F,MAAM,CAC7C,MAAMmiH,EAAW/H,EAAU3sL,MAC3B,IAAI00L,EAUA,MATAl3M,KAAKg2M,2BACLh2M,KAAKm2M,gBAAgBe,EAAUhH,GAC1B/jM,MAAKgrM,IACNn3M,KAAKg2M,2BACLh2M,KAAKu2M,cAAcY,GAAiB,MAEnC7qM,OAAMP,GAAS/L,KAAKkc,QAAQnQ,KAOrCkrM,GAAY9H,EAAUrpF,YAAc9lH,KAAKw2M,uBACzCx2M,KAAKkQ,WAGR5D,OAAMP,GAAS/L,KAAKkc,QAAQnQ,MAGzC3M,EAAQw2M,iCAAmCA,gCCrM3C12M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQg4M,8CAA2C,EACnD,MAAMzsM,EAAW,EAAQ,OACnB0sM,EAAqC,EAAQ,OAOnD,MAAMD,UAAiDC,EAAmCzB,iCACtFn2M,YAAYgtL,EAAWtsL,EAAS0xM,EAAiBnrM,EAASC,EAAWC,EAAQC,EAAOgvM,EAAUL,EAAc8B,GACxG33M,MAAM8sL,EAAW/lL,EAASC,EAAWC,EAAQC,EAAOgvM,EAAUL,GAC9Dx1M,KAAKG,QAAUA,EACfH,KAAK6xM,gBAAkBA,EACvB7xM,KAAKswM,uBAAyBgH,EAAUhH,uBACxCtwM,KAAKowM,iBAAmBkH,EAAUlH,iBAClCpwM,KAAKqwM,wBAA0BiH,EAAUjH,wBACzCrwM,KAAKy1M,6BAA+B6B,EAAU7B,6BAC9Cz1M,KAAK01M,kCAAoC4B,EAAU5B,kCACnD11M,KAAK21M,uCAAyC2B,EAAU3B,uCACxD31M,KAAKu3M,YAAc,CAAE,CAAC1B,IAAW,GAErCkB,eAMI,OALK/2M,KAAKmvM,YACNnvM,KAAKmvM,UAAYnvM,KAAK21M,uCACjB/xM,QAAQ,CAAEiyM,SAAU71M,KAAK61M,SAAU11M,QAASH,KAAKG,UACjDgM,MAAK7E,GAAUA,EAAO6nM,aAExBnvM,KAAKmvM,UAEhBvvM,qBAAqBwF,GACjB,IACI,MAAM,MAAEo4L,SAAgBx9L,KAAK01M,kCAAkC9xM,QAAQ,CAAEzD,QAASH,KAAKG,QAASiF,SAAAA,IAEhG,OAAOo4L,EAAMlwL,QAAOiwL,IACZv9L,KAAKu3M,YAAYha,EAAK95L,OAG1BzD,KAAKu3M,YAAYha,EAAK95L,MAAO,GACtB,KAGf,MAEI,MAAO,IAGf7D,gBAAgB29L,EAAM2S,GAElB,IAAI/vM,EAAUH,KAAKG,QACfo9L,EAAKp9L,UACLA,EAAUA,EAAQoN,MAAMgwL,EAAKp9L,UAGjC,IACIg4H,EACA/yH,EAFA3B,EAAM85L,EAAK95L,IAGf,IACI,MAAM4tM,QAA6BrxM,KAAKswM,uBACnC1sM,QAAQ,CAAEzD,QAAAA,EAASsD,IAAAA,IACxBA,EAAM4tM,EAAqB5tM,IAE3B,MAAM+zM,QAA0Bx3M,KAAKowM,iBAAiBxsM,QAAQ,CAAEzD,QAAAA,EAASsD,IAAAA,EAAK00H,MAAOk5E,EAAqBnoM,KAAMsuI,QAAS65D,EAAqBjsM,UAAUoyI,UACxJggE,EAAkBtuM,KAAKsC,GAAG,SAAS,SAMnCpG,SAAkBpF,KAAKqwM,wBAAwBzsM,QAAQ,CACnDzD,QAAAA,EACAsD,IAAAA,EAEA2B,SAAUoyM,EAAkBpyM,SAC5BtB,QAASutM,EAAqBvtM,QAC9B27K,YAAa4xB,EAAqB5xB,eAClCr6K,SACJ+yH,EAAQq/E,EAAkBtuM,KAEtBq0L,EAAKhwE,YACL4K,QAAcolE,EAAKhwE,UAAU4K,IAGrC,MAAOpsH,GAGHosH,EAAQ,IAAIxtH,EAASiB,SACrBusH,EAAMn1D,KAAO,KACTm1D,EAAMnsH,KAAK,QAASD,GACb,MAEX3G,EAAW,GAGf,MAAM,OAAE8P,EAAM,QAAE4oL,SAAkB99L,KAAKy1M,6BAA6B7xM,QAAQ,CACxEzD,QAAAA,EACA0xM,gBAAiB7xM,KAAK6xM,gBACtB3B,gBAAAA,EACA9qM,SAAAA,EACA+yH,MAAAA,EACA10H,IAAAA,IAQJ,OANIq6L,IAIAoS,EAAgBpS,IAAW,GAExB,CAAEP,KAAAA,EAAMroL,OAAAA,EAAQ9P,SAAAA,EAAU8qM,gBAAAA,IAGzC9wM,EAAQg4M,yCAA2CA,gCChHnDl4M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQm2M,wBAAqB,EAC7B,MAAMkC,EAA6C,EAAQ,OA2B3Dr4M,EAAQm2M,mBArBR,MACI91M,YAAYgtL,EAAWtsL,EAAS01M,EAAUhE,EAAiB2D,EAAc8B,GACrEt3M,KAAKysL,UAAYA,EACjBzsL,KAAKG,QAAUA,EACfH,KAAK61M,SAAWA,EAChB71M,KAAK6xM,gBAAkBA,EACvB7xM,KAAKw1M,aAAeA,EACpBx1M,KAAKs3M,UAAYA,EAErBxuL,MAAMpiB,EAASC,EAAWC,EAAQC,GAC9B,MAAMq7I,EAAK,IAAIu1D,EAA2CL,yCAAyCp3M,KAAKysL,UAAWzsL,KAAKG,QAASH,KAAK6xM,gBAAiBnrM,EAASC,EAAWC,EAAQC,EAAO7G,KAAK61M,SAAU71M,KAAKw1M,aAAcx1M,KAAKs3M,WAQjO,OAPKt3M,KAAKk2M,aAKNh0D,EAAG+zD,gBAAgBj2M,KAAKk2M,eAJxBh0D,EAAG+zD,kBACHj2M,KAAKk2M,aAAeh0D,EAAGg0D,cAKpBh0D,wCC1Bf,IAAI1gJ,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,MAA2ClD,GAChEkD,EAAa,EAAQ,OAAyBlD,iCChB9CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQs4M,2CAAwC,EAChD,MAAMtqB,EAAiC,EAAQ,OACzCuqB,EAAoB,EAAQ,MAIlC,MAAMD,UAA8CtqB,EAA+B2lB,iCAC/EtzM,YAAYC,GACRC,MAAMD,GAEVE,WAAWC,GACP,KAAK,EAAIutL,EAA+BwqB,8BAA8B,cAAe/3M,EAAOM,SACxF,MAAM,IAAIK,MAAM,GAAGR,KAAKkD,mFAE5B,MAAMgS,GAAS,EAAIk4K,EAA+BioB,kBAAkBx1M,EAAOM,SAC3E,IAAK+U,GAA4B,iBAAXA,KAA0B,UAAWA,KAAYA,EAAO7V,MAAMypB,MAChF,MAAM,IAAItoB,MAAM,GAAGR,KAAKkD,yCAE5B,OAAO,EAEXtD,gBAAgBO,GACZ,MAAM+U,GAAS,EAAIk4K,EAA+BioB,kBAAkBl1M,GACpE,OAAO,IAAIw3M,EAAkB/H,gBAAgB,UAAW16L,EAASA,EAASA,EAAO7V,QAGzFD,EAAQs4M,sCAAwCA,8BC1BhDx4M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,iCCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwwM,qBAAkB,EAC1B,MAAMpzB,EAAkB,EAAQ,OAIhC,MAAMozB,EACFnwM,YAAYyV,GACRlV,KAAKkV,OAASA,EAElB9K,wBAAwBgH,GACpB,OAAQA,GAA0B,aAAlBA,EAAKtK,SAAsCsK,OAAZtP,EAEnDgnB,MAAMpiB,EAASC,EAAWC,EAAQC,GAE9B,MAAMyrM,EAAYtyM,KAAKkV,OAAO4T,MAAM8mL,EAAgBiI,iBAAiBnxM,GAAUkpM,EAAgBiI,iBAAiBlxM,GAAYipM,EAAgBiI,iBAAiBjxM,GAASgpM,EAAgBiI,iBAAiBhxM,IACjMq7I,GAAK,EAAIs6B,EAAgBhvJ,MAAM8kL,EAAW,CAAEh1B,WAAW,IAI7D,OAFAt9K,KAAK83M,YAAY51D,EAAIx7I,EAASC,EAAWC,EAAQC,GAC5CyF,OAAMP,GAASm2I,EAAGhmI,QAAQnQ,KACxBm2I,EAEXtiJ,kBAAkBsiJ,EAAIx7I,EAASC,EAAWC,EAAQC,GAC9C,IAAI+7K,EACJ,GAAI5iL,KAAKkV,OAAO6iM,WAEZn1B,QAAoB5iL,KAAKkV,OAAO6iM,WAAWnI,EAAgBiI,iBAAiBnxM,GAAUkpM,EAAgBiI,iBAAiBlxM,GAAYipM,EAAgBiI,iBAAiBjxM,GAASgpM,EAAgBiI,iBAAiBhxM,QAE7M,CAID,IAAI+R,EAAI,EACRgqK,QAAoB,IAAI53K,SAAQ,CAACC,EAASC,KACtC,MAAMyrJ,EAAU32J,KAAKkV,OAAO4T,MAAM8mL,EAAgBiI,iBAAiBnxM,GAAUkpM,EAAgBiI,iBAAiBlxM,GAAYipM,EAAgBiI,iBAAiBjxM,GAASgpM,EAAgBiI,iBAAiBhxM,IACrM8vJ,EAAQnrJ,GAAG,QAASN,GACpByrJ,EAAQnrJ,GAAG,OAAO,IAAMP,EAAQ2N,KAChC+9I,EAAQnrJ,GAAG,QAAQ,IAAMoN,SAGjCspI,EAAG8uD,YAAY,WAAY,CAAEpuB,YAAa,CAAEz8K,KAAM,QAAS9G,MAAOujL,GAAeC,kBAAkB,KAG3GzjL,EAAQwwM,gBAAkBA,sCC3C1B,IAAIpuM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA4ClD,GACjEkD,EAAa,EAAQ,OAA2BlD,GAChDkD,EAAa,EAAQ,MAAsBlD,iCCjB3CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ44M,6BAA0B,EAClC,MAAMC,EAAsB,EAAQ,OAC9BC,EAAgC,EAAQ,OAI9C,MAAMF,UAAgCC,EAAoBE,iCAUtD14M,YAAYC,GACRC,MAAMD,GAEVE,gBAAgBC,EAAQyB,EAAWnB,GAE/B,MAAO,CAAE+I,KADI,IAAIgvM,EAA8BE,iBAAiB,CAAEC,MAAO,IAAIt2J,OAAO/hD,KAAKs4M,6BAA8BrK,OAAOpuM,EAAO0K,cAI7InL,EAAQ44M,wBAA0BA,sCCzBlC,IAAIx2M,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA8BlD,iCCfnDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQm5M,yBAAsB,EAC9B,MAAMN,EAAsB,EAAQ,OAC9B3J,EAAO,EAAQ,OAIrB,MAAMiK,UAA4BN,EAAoBE,iCAkBlD14M,YAAYC,GACRC,MAAMD,GAEVE,gBAAgBC,EAAQyB,EAAWnB,GAE/B,MAAO,CAAE+I,KADI,IAAIolM,EAAKkK,aAAa,CAAElwL,OAAQhnB,IAAa2sM,OAAOpuM,EAAO0K,YAEpEitI,QAAuB,gBAAdl2I,GACS,0BAAdA,GACc,YAAdA,IAGhBlC,EAAQm5M,oBAAsBA,sCCpC9B,IAAI/2M,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA0BlD,iCCf/CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQq5M,+CAA4C,EACpD,MAAMC,EAA8B,EAAQ,OACtCC,EAAqC,EAAQ,OAInD,MAAMF,UAAkDC,EAA4BE,yBAChFn5M,YAAYC,GACRC,MAAMD,EAAM,qBAEhBE,mBAAmBC,GACf,IAAKA,EAAOg5M,uBAAyBh5M,EAAOuF,SAAS05L,kBACjD,MAAM,IAAIt+L,MAAM,SAASR,KAAKkD,kGAElC,IAAKrD,EAAOg5M,uBAAyBh5M,EAAOgQ,OACxC,MAAM,IAAIrP,MAAM,SAASR,KAAKkD,0DAElC,OAAO,EAEXtD,UAAUC,GAEN,OADAG,KAAK+W,QAAQlX,EAAOM,QAAS,gDAAgDN,EAAO4D,OAC7E,CACH0R,YAAa,IAAIwjM,EAAmCG,iCAAiCj5M,EAAO4D,IAAK5D,EAAOM,QAASH,KAAK2D,gBAIlIvE,EAAQq5M,0CAA4CA,gCC3BpDv5M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ05M,sCAAmC,EAC3C,MAAMnuM,EAAW,EAAQ,OACnB/H,EAAa,EAAQ,OACrByqL,EAAyB,EAAQ,OACjChrG,EAAgB,EAAQ,OACxB+vG,EAAmB,EAAQ,MAuDjChzL,EAAQ05M,iCAnDR,MACIr5M,YAAYgE,EAAKtD,EAASwD,GACtB3D,KAAKyD,IAAMA,EACXzD,KAAKG,QAAUA,EACfH,KAAK2D,aAAeA,EAExBy6G,OAAO+Z,GACH,OAAOn4H,KAAK+4M,wBAAwB,SAAU5gF,GAElDv4H,aAAau4H,GACT,OAAOn4H,KAAK+4M,wBAAwB,SAAU5gF,GAElDv4H,8BAA8BuG,EAAMgyH,GAEhC,MAAM6gF,EAAc7gF,EACfnyH,KAAKQ,IACN,IAAI01H,EAAa,IAAG,EAAIk2D,EAAiB3rL,cAAcD,EAAKE,aAAY,EAAI0rL,EAAiB3rL,cAAcD,EAAKG,eAAc,EAAIyrL,EAAiB3rL,cAAcD,EAAKI,YAOtK,OALIs1H,EADwB,iBAAxB11H,EAAKK,MAAMC,SACE,YAAW,EAAIsrL,EAAiB3rL,cAAcD,EAAKK,YAAYq1H,QAG/D,KAAKA,MAEfA,KAENxiC,QAAQ,CAAC,GAAGvzF,eACZo6E,OAAO,CAAC,MACP6sC,EAAW,IAAIziH,EAASiB,SAC9BwhH,EAASvhH,MAAQ,KAAM,EACvBmtM,EAAYxtM,GAAG,QAAShF,GAAS4mH,EAAS3nH,KAAKe,KAC/CwyM,EAAYxtM,GAAG,OAAO,IAAM4hH,EAAS3nH,KAAK,QAE1C,MAAM3B,EAAU,IAAIu+E,EAAcpB,QAAQ,CAAE,eAAgB,8BACtDqD,QAAqBtkF,KAAK2D,aAAaC,QAAQ,CACjDzD,QAASH,KAAKG,QACd+D,KAAM,CACFJ,QAAAA,EACAitB,OAAQ,QACRliB,KAAMjM,EAAWE,UAAU8L,oBAAoBw+G,IAEnD5pH,MAAOxD,KAAKyD,YAEV,EAAI4pL,EAAuB4rB,sBAAsBj5M,KAAKyD,IAAK6gF,GAErE1kF,mBAAmBy5I,EAAQq2C,EAAkBC,GACzC,MAAM,IAAInvL,MAAM,qEAEpBZ,mBAAmBy5I,EAAQ62C,GACvB,MAAM,IAAI1vL,MAAM,2GC1DxB,IAAIgB,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAgDlD,GACrEkD,EAAa,EAAQ,OAAuClD,iCChB5DF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ85M,oCAAiC,EACzC,MAAMR,EAA8B,EAAQ,OACtCS,EAA0B,EAAQ,OAIxC,MAAMD,UAAuCR,EAA4BE,yBACrEn5M,YAAYC,GACRC,MAAMD,EAAM,UAEhBE,mBAAmBC,GACf,IAAKA,EAAOg5M,qBAAsB,CAC9B,IAAKh5M,EAAOuF,SAAS23L,mBAAqBl9L,EAAOuF,SAAS23L,iBAAiBjkL,SAAS,OAChF,MAAM,IAAItY,MAAM,SAASR,KAAKkD,iEAElC,GAAIrD,EAAOgQ,OACP,MAAM,IAAIrP,MAAM,SAASR,KAAKkD,oEAGtC,OAAO,EAEXtD,UAAUC,GAEN,OADAG,KAAK+W,QAAQlX,EAAOM,QAAS,qCAAqCN,EAAO4D,OAClE,CACH0R,YAAa,IAAIgkM,EAAwBC,sBAAsBv5M,EAAO4D,IAAK5D,EAAOM,QAASN,EAAOuF,SAAS45L,aAAe,GAAIh/L,KAAK2D,aAAc3D,KAAKq5M,+BAAgCr5M,KAAK0xL,wBAIvMtyL,EAAQ85M,+BAAiCA,gCC7BzCh6M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQg6M,2BAAwB,EAChC,MAAMx2M,EAAa,EAAQ,OACrByqL,EAAyB,EAAQ,OACjChrG,EAAgB,EAAQ,OAsD9BjjF,EAAQg6M,sBAlDR,MACI35M,YAAYgE,EAAKtD,EAASC,EAAYuD,EAAc01M,EAAgC3nB,GAChF1xL,KAAKyD,IAAMA,EACXzD,KAAKG,QAAUA,EACfH,KAAKI,WAAaA,EAClBJ,KAAK2D,aAAeA,EACpB3D,KAAKq5M,+BAAiCA,EACtCr5M,KAAK0xL,qBAAuBA,EAEhCtzE,OAAO+Z,GACH,OAAOn4H,KAAKs5M,qBAAqB,SAAUnhF,GAE/Cv4H,aAAau4H,GACT,MAAM,IAAI33H,MAAM,sDAEpBZ,2BAA2BuG,EAAMgyH,GAE7B,MAAM,WAAE/3H,SAAqBJ,KAAKq5M,+BAA+Bz1M,QAAQ,CAAEzD,QAASH,KAAKG,QAASC,YAAY,IACxGm5M,EAAsBv5M,KAAKI,WAC5BkN,QAAOhM,GAAaA,KAAalB,IAEhCkB,EAAYi4M,EAAoBxzM,OAAS,EAC3CwzM,EAAoB,GACpBr6M,OAAO0N,KAAKxM,GAAY+/C,MAAK,CAACq5J,EAAOC,IAAUr5M,EAAWq5M,GAASr5M,EAAWo5M,KAAQ,IAElFz5M,QAAQ,KAAEmJ,UAAiBlJ,KAAK0xL,qBAAqB9tL,QAAQ,CACjEzD,QAASH,KAAKG,QACdJ,OAAQ,CAAEwK,WAAY4tH,EAAOh4H,QAASH,KAAKG,SAC3CD,gBAAiBoB,IAGfwC,EAAU,IAAIu+E,EAAcpB,QAAQ,CAAE,eAAgB3/E,IACtDgjF,QAAqBtkF,KAAK2D,aAAaC,QAAQ,CACjDzD,QAASH,KAAKG,QACd+D,KAAM,CACFJ,QAAAA,EACAitB,OAAQ,MACRliB,KAAMjM,EAAWE,UAAU8L,oBAAoB1F,IAEnD1F,MAAOxD,KAAKyD,YAEV,EAAI4pL,EAAuB4rB,sBAAsBj5M,KAAKyD,IAAK6gF,GAErE1kF,mBAAmBy5I,EAAQq2C,EAAkBC,GACzC,MAAM,IAAInvL,MAAM,yDAEpBZ,mBAAmBy5I,EAAQ62C,GACvB,MAAM,IAAI1vL,MAAM,+FCvDxB,IAAIgB,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAqClD,GAC1DkD,EAAa,EAAQ,OAA4BlD,iCChBjDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQs6M,oCAAiC,EACzC,MAAMhB,EAA8B,EAAQ,OACtCiB,EAA0B,EAAQ,OAIxC,MAAMD,UAAuChB,EAA4BE,yBACrEn5M,YAAYC,GACRC,MAAMD,EAAM,UAEhBE,mBAAmBC,GACf,KAAKA,EAAOg5M,sBAAyBh5M,EAAOuF,SAAS+5L,eAC/Cn/L,KAAKouL,sBAAwBvuL,EAAO4D,IAAIi9E,SAAS,YACjD1gF,KAAKquL,sBAAwBxuL,EAAO4D,IAAIi9E,SAAS,YACnD,MAAM,IAAIlgF,MAAM,SAASR,KAAKkD,2FAElC,OAAO,EAEXtD,UAAUC,GAEN,OADAG,KAAK+W,QAAQlX,EAAOM,QAAS,qCAAqCN,EAAO4D,OAClE,CACH0R,YAAa,IAAIwkM,EAAwBC,sBAAsB/5M,EAAOuF,SAAS+5L,eAAiBt/L,EAAO4D,IAAK5D,EAAOM,QAASH,KAAK2D,gBAI7IvE,EAAQs6M,+BAAiCA,gCC1BzCx6M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQw6M,2BAAwB,EAChC,MAAMtsB,EAA0B,EAAQ,OAClC8E,EAAmB,EAAQ,MAC3BnT,EAAkB,EAAQ,OAoEhC7/K,EAAQw6M,sBAhER,MACIn6M,YAAYgE,EAAKtD,EAASwD,GACtB3D,KAAKyD,IAAMA,EACXzD,KAAKG,QAAUA,EACfH,KAAK2D,aAAeA,EACpB3D,KAAKutL,gBAAkB,IAAID,EAAwBE,sBAAsB,CACrEt5K,MAAO,CAAC1Q,EAAOU,IAASlE,KAAK2D,aAAaC,QAAQ,CAAEJ,MAAAA,EAAOU,KAAAA,EAAM/D,QAASH,KAAKG,UAC/E63J,4BAA4B,IAGpC55C,OAAO+Z,GACH,OAAOn4H,KAAK+4M,wBAAwB,SAAU5gF,GAElDv4H,aAAau4H,GACT,OAAOn4H,KAAK+4M,wBAAwB,SAAU5gF,GAElDv4H,8BAA8BuG,EAAMgyH,GAEhC,MAAM6gF,EAAc7gF,EACfnyH,KAAKQ,IACN,IAAI01H,EAAa,IAAG,EAAIk2D,EAAiB3rL,cAAcD,EAAKE,aAAY,EAAI0rL,EAAiB3rL,cAAcD,EAAKG,eAAc,EAAIyrL,EAAiB3rL,cAAcD,EAAKI,YAOtK,OALIs1H,EADwB,iBAAxB11H,EAAKK,MAAMC,SACE,YAAW,EAAIsrL,EAAiB3rL,cAAcD,EAAKK,YAAYq1H,QAG/D,KAAKA,MAEfA,KAENxiC,QAAQ,CAAC,GAAGvzF,eACZo6E,OAAO,CAAC,MAEPp5E,QAAc83K,EAAgB+5B,SAE9Bh5M,KAAKutL,gBAAgBoB,YAAY3uL,KAAKyD,IAAK0D,GAErDvH,mBAAmBi6M,EAAUnqB,EAAkBC,GAC3C,MAAMt2C,EAASv9H,MAAMC,QAAQ89L,GACzBA,EACA,CAACA,GACCC,EAAU,GAChB,IAAK,MAAMjzM,KAASwyI,EAAQ,CACxB,IAAI2jC,EAEAA,EADiB,iBAAVn2K,EACMA,EAEW,iBAAnBA,EAAMC,SACE,UAGA,UAAUD,EAAMxH,SAEjCy6M,EAAQr0M,KAAK,GAAGkqL,EAAa,OAAS,WAAWD,EAAmB,GAAK,YAAY1S,WAEnFh9K,KAAKutL,gBAAgBoB,YAAY3uL,KAAKyD,IAAKq2M,EAAQt5L,KAAK,OAElE5gB,mBAAmBy5I,EAAQ62C,GACvB,MAAM4pB,EAAU,GAChB,IAAK,MAAMjzM,KAASwyI,EAChBygE,EAAQr0M,KAAK,SAASyqL,EAAsB,GAAK,oBAAoBrpL,EAAMxH,gBAEzEW,KAAKutL,gBAAgBoB,YAAY3uL,KAAKyD,IAAKq2M,EAAQt5L,KAAK,6CCrEtE,IAAIhf,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAqClD,GAC1DkD,EAAa,EAAQ,OAA4BlD,iCChBjDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ26M,mCAAgC,EACxC,MAAM1sB,EAAyB,EAAQ,OACjCwnB,EAAW,EAAQ,OAIzB,MAAMkF,UAAsC1sB,EAAuB2sB,+BAC/Dv6M,YAAYC,GACRC,MAAMD,GACNM,KAAKitG,MAAQjtG,KAAKysL,UAAY,IAAIooB,EAAS,CAAE3lK,IAAKlvC,KAAKysL,iBAAe3qL,EACtE,MAAMmrG,EAAQjtG,KAAKitG,MACfA,GACAjtG,KAAK+0M,gBAAgBC,uBAAsB,EAAGvxM,IAAAA,KAAUA,EAAMwpG,EAAMgoG,IAAIxxM,GAAOwpG,EAAMx1E,UAG7F73B,WAAWC,GAEP,KADY,EAAIwtL,EAAuB4sB,2BAA0B,EAAI5sB,EAAuB6sB,uBAAuBr6M,EAAOM,UAEtH,MAAM,IAAIK,MAAM,SAASR,KAAKkD,gEAElC,OAAO,EAEXi3M,eAAeh6M,GACX,MAAMi6M,GAAkB,EAAI/sB,EAAuB6sB,uBAAuB/5M,GAC1E,IAAIsD,GAAM,EAAI4pL,EAAuB4sB,0BAA0BG,GAE/D,GAAIp6M,KAAKitG,OAASjtG,KAAKitG,MAAM/kG,IAAIzE,GAC7B,OAAOzD,KAAKitG,MAAM5qG,IAAIoB,GAG1B,MAAM+rF,EAAM,WACR,IAAIpqF,EACAyK,EACJ,IAEI,MAAMwhM,QAA6BrxM,KAAKswM,uBACnC1sM,QAAQ,CAAEzD,QAAAA,EAASsD,IAAAA,EAAKm8K,cAAc,IAC3C/vK,EAASwhM,EAAqBxhM,OAC9BpM,EAAM4tM,EAAqB5tM,IAE3B,MAAM6tM,QAAyBtxM,KAAKowM,iBAAiBxsM,QAAQ,CAAEzD,QAAAA,EAASsD,IAAAA,EAAK00H,MAAOk5E,EAAqBnoM,KAAMsuI,QAAS65D,EAAqBjsM,UAAUoyI,UACvJpyI,SAAkBpF,KAAKqwM,wBAAwBzsM,QAAQ,CACnDzD,QAAAA,EACAsD,IAAAA,EACA2B,SAAUksM,EAAiBlsM,SAC3BtB,QAASutM,EAAqBvtM,QAC9B27K,YAAa4xB,EAAqB5xB,eAClCr6K,SAER,MACIA,EAAW,GACXyK,GAAS,EAGb,MAAM,YAAEsF,SAAsBnV,KAAKq6M,4BAA4Bz2M,QAAQ,CACnEzD,QAAAA,EACAsD,IAAAA,EACA2B,SAAAA,EACAyK,OAAAA,EACAgpM,sBAAsB,EAAIxrB,EAAuBU,wBAAwBqsB,KAE7E,OAAOjlM,GA/BC,GAoCZ,OAHInV,KAAKitG,OACLjtG,KAAKitG,MAAM1nG,IAAI9B,EAAK+rF,GAEjBA,GAGfpwF,EAAQ26M,8BAAgCA,qCCtExC,IAAIv4M,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAoClD,iCCfzDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQk7M,mCAAgC,EACxC,MAAMjtB,EAAyB,EAAQ,OACjCktB,EAAyB,EAAQ,OAIvC,MAAMD,UAAsCjtB,EAAuB2sB,+BAC/Dv6M,YAAYC,GACRC,MAAMD,GAEVE,WAAWC,GACP,MAAMsV,GAAc,EAAIk4K,EAAuB6sB,uBAAuBr6M,EAAOM,SAC7E,IAAKgV,GAAsC,iBAAhBA,KACpB,WAAYA,IAAgB,UAAWA,IAAgBA,EAAY9V,MAAM4hC,OAC5E,MAAM,IAAIzgC,MAAM,GAAGR,KAAKkD,wCAE5B,OAAO,EAEXtD,qBAAqBO,GACjB,MAAMgV,GAAc,EAAIk4K,EAAuB6sB,uBAAuB/5M,GACtE,OAAO,IAAIo6M,EAAuBC,qBAAqB,WAAYrlM,EAAcA,EAAcA,EAAY9V,QAGnHD,EAAQk7M,8BAAgCA,gCCxBxCp7M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQo7M,0BAAuB,EAC/B,MAAMrsM,EAAqB,EAAQ,OAC7BxJ,EAAe,EAAQ,MACvB80H,EAAK,IAAItrH,EAAmBE,YAsElCjP,EAAQo7M,qBAlER,MACI/6M,YAAYmhC,GACR5gC,KAAK4gC,MAAQA,EAEjB65K,sBAAsBhoI,GAClB,OAAO,IAAIznE,SAAQ,CAACC,EAASC,KACzBunE,EAAajnE,GAAG,MAAOP,GACvBwnE,EAAajnE,GAAG,QAASN,MAGjCrH,OAAOs0H,GACH,OAAOn4H,KAAKy6M,sBAAsBz6M,KAAK4gC,MAAMK,OAAOk3F,IAExD/Z,OAAO+Z,GACH,OAAOn4H,KAAKy6M,sBAAsBz6M,KAAK4gC,MAAMqtK,OAAO91E,IAExDv4H,mBAAmBy5I,EAAQq2C,EAAkBC,GACzC,OAAQt2C,GACJ,IAAK,YAGKr5I,KAAKy6M,sBAAsBz6M,KAAK4gC,MAAM85K,YAAYjhF,EAAGpF,iBAE/D,IAAK,QAKD,MAAMsmF,EAAW36M,KAAK4gC,MAAM9X,QAEtB88J,EAAc,GACpB+0B,EAASnvM,GAAG,QAAShF,IACW,iBAAxBA,EAAKK,MAAMC,WACX8+K,GAAY,EAAIjhL,EAAa8B,cAAcD,EAAKK,SAAU,YAG5D7G,KAAKy6M,sBAAsBE,SAE3B3vM,QAAQ4nB,IAAI1zB,OAAO0N,KAAKg5K,GACzB5/K,KAAI+/K,GAAc/lL,KAAKy6M,sBAAsBz6M,KAAK4gC,MAClD85K,aAAY,EAAI/1M,EAAa62H,cAAcuqD,QAChD,MACJ,QAEI,IAAK,MAAMl/K,KAASiV,MAAMC,QAAQs9H,GAAUA,EAAS,CAACA,SAC5Cr5I,KAAKy6M,sBAAsBz6M,KAAK4gC,MAAM85K,YAAY7zM,KAIxEjH,mBAAmBy5I,EAAQ62C,GAGvB,GAAIA,EACA,IAAK,MAAMrpL,KAASwyI,EAAQ,CACxB,MAAM5mE,EAAezyE,KAAK4gC,MAAM9X,WAAMhnB,OAAWA,OAAWA,EAAW+E,SACjE,IAAImE,SAAQ,CAACC,EAASC,KACxBunE,EAAaimB,KAAK,QAAQ,KACtBxtF,EAAO,IAAI1K,MAAM,0BAA0BqG,EAAMxH,kCAErDozE,EAAajnE,GAAG,MAAOP,GACvBwnE,EAAajnE,GAAG,QAASN,6CCpE7C,IAAI1J,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAoClD,iCCfzDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoN,cAAW,EACnB,MAAMC,EAAc,EAAQ,OACtBC,EAAqB,EAAQ,OAInC,MAAMF,EACF/M,YAAYkN,EAAa1L,GACrBjB,KAAKmG,KAAO,WACZnG,KAAK2M,YAAcA,EACnB3M,KAAKiB,QAAUA,EAEnBiH,IAAI/G,GACA,OAAOnB,KAAKiB,QAAQiH,IAAmB,iBAAR/G,EAAmBA,EAAMA,EAAI9B,OAEhEgD,IAAIlB,GACA,OAAOnB,KAAKiB,QAAQoB,IAAmB,iBAARlB,EAAmBA,EAAMA,EAAI9B,OAEhEkG,IAAIpE,EAAK9B,GACL,OAAO,IAAImN,EAASxM,KAAK2M,YAAa3M,KAAKiB,QAAQsE,IAAmB,iBAARpE,EAAmBA,EAAMA,EAAI9B,MAAOA,IAEtGwE,OAAO1C,GACH,OAAO,IAAIqL,EAASxM,KAAK2M,YAAa3M,KAAKiB,QAAQ4C,OAAsB,iBAAR1C,EAAmBA,EAAMA,EAAI9B,QAElGuN,OACI,OAAO5M,KAAK6M,YAAY7M,KAAK8M,mBAAmB9M,KAAKiB,QAAQ2L,SAASzL,GAAOnB,KAAK2M,YAAYpG,SAASpF,KAE3G4L,SACI,OAAO/M,KAAK8M,mBAAmB9M,KAAKiB,QAAQ8L,UAEhD7L,QAAQ8L,GACJhN,KAAKiB,QAAQC,SAAQ,CAAC7B,EAAO8B,IAAQ6L,EAAG3N,EAAOW,KAAK2M,YAAYpG,SAASpF,MAEzE8L,WACA,OAAOjN,KAAKiB,QAAQgM,KAExB,CAACC,OAAOC,YACJ,OAAOnN,KAAK6M,YAAY7M,KAAK8M,mBAAmB9M,KAAKiB,QAAQA,YAAY,EAAEE,EAAK9B,KAAW,CAACW,KAAK2M,YAAYpG,SAASpF,GAAM9B,KAAQ6N,OAAOC,YAE/IC,OAAOC,GACH,IAAKA,EACD,OAAO,EAEX,GAAIrN,OAASqN,EACT,OAAO,EAGX,GAAIrN,KAAKiN,OAASI,EAAMJ,KACpB,OAAO,EAGX,IAAK,MAAM9L,KAAOnB,KAAK4M,OACnB,IAAK5M,KAAKqC,IAAIlB,IAAMiM,OAAOC,EAAMhL,IAAIlB,IACjC,OAAO,EAGf,OAAO,EAEXmM,OAAON,GACH,OAAO,IAAIR,EAASxM,KAAK2M,aAAa,EAAIF,EAAY5H,KAAK7E,KAAKiB,QAC3DqM,QAAO,CAACjO,EAAO8B,IAAQ6L,EAAG3N,EAAOW,KAAK2M,YAAYpG,SAASpF,QAEpE6E,IAAIgH,GACA,OAAO,IAAIR,EAASxM,KAAK2M,aAAa,EAAIF,EAAY5H,KAAK7E,KAAKiB,QAC3D+E,KAAI,CAAC3G,EAAO8B,IAAQ6L,EAAG3N,EAAOW,KAAK2M,YAAYpG,SAASpF,QAEjEoM,MAAMF,GAEF,MAAMT,EAAO,IAAIY,IAAI,IACdxN,KAAK8M,mBAAmB9M,KAAKiB,QAAQ2L,WACrC,IAAIS,EAAMT,QAAQ5G,KAAI7E,GAAOA,EAAI9B,UAGlC4B,EAAU,GAChB,IAAK,MAAME,KAAOyL,EAAM,CACpB,MAAMa,EAAOzN,KAAKiB,QAAQoB,IAAIlB,GACxBuM,EAAQL,EAAMhL,IAAIrC,KAAK2M,YAAYpG,SAASpF,IAClD,GAAIsM,GAAQC,IAAUD,EAAKL,OAAOM,GAC9B,OAEJ,MAAMrO,EAAQoO,GAAQC,EACtBzM,EAAQwE,KAAK,CAACtE,EAAK9B,IAEvB,OAAO,IAAImN,EAASxM,KAAK2M,aAAa,EAAIF,EAAY5H,KAAK5D,IAE/D0M,UAAUC,EAAQP,GAEd,MAAMT,EAAO,IAAIY,IAAI,IACdxN,KAAK8M,mBAAmB9M,KAAKiB,QAAQ2L,WACrC,IAAIS,EAAMT,QAAQ5G,KAAI7E,GAAOA,EAAI9B,UAGlC4B,EAAU,GAChB,IAAK,MAAME,KAAOyL,EAAM,CACpB,MAAMrG,EAAWvG,KAAK2M,YAAYpG,SAASpF,GACrCsM,EAAOzN,KAAKiB,QAAQoB,IAAIlB,GACxBuM,EAAQL,EAAMhL,IAAIkE,GACxB,IAAIlH,EAEAA,EADAoO,GAAQC,IAAUD,EAAKL,OAAOM,GACtBE,EAAOH,EAAMC,EAAOnH,GAGpBkH,GAAQC,EAEpBzM,EAAQwE,KAAK,CAACtE,EAAK9B,IAEvB,OAAO,IAAImN,EAASxM,KAAK2M,aAAa,EAAIF,EAAY5H,KAAK5D,IAE/D4M,WACI,OAAO,EAAInB,EAAmBoB,kBAAkB9N,MAEpD,aAAa+N,EAAUC,GACnB,IAAK,MAAMC,KAAKF,QAENC,EAASC,GAGvBnB,mBAAmBK,GACf,MAAO,CACH,CAACD,OAAOC,UAAW,IAAMA,IAIrC/N,EAAQoN,SAAWA,gCC5HnBtN,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8O,qBAAkB,EAC1B,MAAMzB,EAAc,EAAQ,OACtB0B,EAAqB,EAAQ,OAC7BC,EAAa,EAAQ,OAkB3BhP,EAAQ8O,gBAdR,MACIzO,YAAYkN,EAAc,IAAIwB,EAAmBE,aAC7CrO,KAAK2M,YAAcA,EAEvBlB,SAASxK,EAAU,IACf,OAAO,IAAImN,EAAW5B,SAASxM,KAAK2M,aAAa,EAAIF,EAAY5H,KAAK5D,EAAQ+E,KAAI,EAAE7E,EAAK9B,KAAW,CAAC8B,EAAI9B,MAAOA,OAEpHiP,aAAa7C,GACT,OAAOzL,KAAKyL,SAAS,IAAIA,IAE7B8C,WAAWC,GACP,OAAOxO,KAAKyL,SAASvM,OAAO+B,QAAQuN,GAAQxI,KAAI,EAAE7E,EAAK9B,KAAW,CAACW,KAAK2M,YAAYpG,SAASpF,GAAM9B,sCCnB3GH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0O,sBAAmB,EAC3B,MAAMnJ,EAAe,EAAQ,MAY7BvF,EAAQ0O,iBAPR,SAA0BrC,GACtB,MAAMgD,EAAM,GACZ,IAAK,MAAMtN,KAAOsK,EAASmB,OACvB6B,EAAItN,EAAI9B,QAAS,EAAIsF,EAAa8B,cAAcgF,EAASpJ,IAAIlB,IAEjE,OAAOiL,KAAKC,UAAUoC,EAAK,KAAM,2CCZrC,IAAIjN,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAelD,GACpCkD,EAAa,EAAQ,OAAsBlD,GAC3CkD,EAAa,EAAQ,OAAuBlD,sBCVqB4sE,EAAO5sE,QAGhE,WAAc,aAAa,IAAIw7M,EAAU9+L,MAAMtZ,UAAU6gB,MAE/D,SAASw3L,EAAYj4F,EAAMwc,GACrBA,IACFxc,EAAKpgH,UAAYtD,OAAOuC,OAAO29H,EAAW58H,YAE5CogH,EAAKpgH,UAAU/C,YAAcmjH,EAG/B,SAASqJ,EAAS5sH,GACd,OAAOulH,EAAWvlH,GAASA,EAAQuqG,EAAIvqG,GAKzC,SAASy7M,EAAcz7M,GACrB,OAAO+pG,EAAQ/pG,GAASA,EAAQyqG,EAASzqG,GAK3C,SAAS07M,EAAgB17M,GACvB,OAAOkqG,EAAUlqG,GAASA,EAAQ2qG,EAAW3qG,GAK/C,SAAS27M,EAAY37M,GACnB,OAAOulH,EAAWvlH,KAAWoqG,EAAcpqG,GAASA,EAAQ6qG,EAAO7qG,GAKvE,SAASulH,EAAWrZ,GAClB,SAAUA,IAAiBA,EAAc0vG,IAG3C,SAAS7xG,EAAQC,GACf,SAAUA,IAAcA,EAAW6xG,IAGrC,SAAS3xG,EAAUC,GACjB,SAAUA,IAAgBA,EAAa2xG,IAGzC,SAAS1xG,EAAcC,GACrB,OAAON,EAAQM,IAAqBH,EAAUG,GAGhD,SAASoB,EAAUC,GACjB,SAAUA,IAAgBA,EAAaqwG,IApCzCP,EAAYC,EAAe7uF,GAM3B4uF,EAAYE,EAAiB9uF,GAM7B4uF,EAAYG,EAAa/uF,GA2BzBA,EAASrH,WAAaA,EACtBqH,EAAS7iB,QAAUA,EACnB6iB,EAAS1iB,UAAYA,EACrB0iB,EAASxiB,cAAgBA,EACzBwiB,EAASnhB,UAAYA,EAErBmhB,EAAS9hB,MAAQ2wG,EACjB7uF,EAAS7hB,QAAU2wG,EACnB9uF,EAASz+G,IAAMwtM,EAGf,IAAIC,EAAuB,6BACvBC,EAAoB,0BACpBC,EAAsB,4BACtBC,EAAsB,4BAOtBtzG,EAAO,GACPC,EAAOD,GAIPE,EAAU,GAGVqzG,EAAgB,CAAEh8M,OAAO,GACzBi8M,EAAY,CAAEj8M,OAAO,GAEzB,SAASk8M,EAAQrzG,GAEf,OADAA,EAAI7oG,OAAQ,EACL6oG,EAGT,SAASD,EAAOC,GACdA,IAAQA,EAAI7oG,OAAQ,GAMtB,SAAS8oG,KAGT,SAASwM,EAAQz0F,EAAKf,GACpBA,EAASA,GAAU,EAGnB,IAFA,IAAIuE,EAAMnE,KAAK2vB,IAAI,EAAGhvB,EAAIna,OAASoZ,GAC/By1F,EAAS,IAAI94F,MAAM4H,GACdkqF,EAAK,EAAGA,EAAKlqF,EAAKkqF,IACzBgH,EAAOhH,GAAM1tF,EAAI0tF,EAAKzuF,GAExB,OAAOy1F,EAGT,SAASxM,EAAWjiF,GAIlB,YAHkBrkB,IAAdqkB,EAAKlZ,OACPkZ,EAAKlZ,KAAOkZ,EAAKkiF,UAAUC,IAEtBniF,EAAKlZ,KAGd,SAASs7F,EAAUpiF,EAAM/kB,GAQvB,GAAqB,iBAAVA,EAAoB,CAC7B,IAAIonG,EAAcpnG,IAAU,EAC5B,GAAI,GAAKonG,IAAgBpnG,GAAyB,aAAhBonG,EAChC,OAAOjkC,IAETnjE,EAAQonG,EAEV,OAAOpnG,EAAQ,EAAIgnG,EAAWjiF,GAAQ/kB,EAAQA,EAGhD,SAASknG,IACP,OAAO,EAGT,SAASG,EAAWC,EAAO9d,EAAK39E,GAC9B,OAAkB,IAAVy7F,QAAyB5mG,IAATmL,GAAsBy7F,IAAUz7F,UAC7CnL,IAAR8oF,QAA+B9oF,IAATmL,GAAsB29E,GAAO39E,GAGxD,SAAS27F,EAAaF,EAAOz7F,GAC3B,OAAO47F,EAAaH,EAAOz7F,EAAM,GAGnC,SAAS67F,EAAWle,EAAK39E,GACvB,OAAO47F,EAAaje,EAAK39E,EAAMA,GAGjC,SAAS47F,EAAaznG,EAAO6L,EAAM87F,GACjC,YAAiBjnG,IAAVV,EACL2nG,EACA3nG,EAAQ,EACNme,KAAK2vB,IAAI,EAAGjiC,EAAO7L,QACVU,IAATmL,EACE7L,EACAme,KAAK6vB,IAAIniC,EAAM7L,GAKvB,IAII4pG,EAAyC,mBAAX99F,QAAyBA,OAAOC,SAC9D0+F,EAAuB,aAEvBZ,EAAkBD,GAAwBa,EAG9C,SAASX,EAASz0D,GACdz2C,KAAKy2C,KAAOA,EAmBhB,SAAS00D,EAAchlG,EAAMvE,EAAG+4B,EAAGywE,GACjC,IAAI/rG,EAAiB,IAAT8G,EAAavE,EAAa,IAATuE,EAAaw0B,EAAI,CAAC/4B,EAAG+4B,GAIlD,OAHAywE,EAAkBA,EAAe/rG,MAAQA,EAAU+rG,EAAiB,CAClE/rG,MAAOA,EAAO01F,MAAM,GAEfqW,EAGT,SAASC,IACP,MAAO,CAAEhsG,WAAOyC,EAAWizF,MAAM,GAGnC,SAASuW,EAAYC,GACnB,QAASC,EAAcD,GAGzB,SAASE,EAAWC,GAClB,OAAOA,GAA+C,mBAAvBA,EAAcj1D,KAG/C,SAASk1D,EAAY59F,GACnB,IAAI69F,EAAaJ,EAAcz9F,GAC/B,OAAO69F,GAAcA,EAAWlpG,KAAKqL,GAGvC,SAASy9F,EAAcz9F,GACrB,IAAI69F,EAAa79F,IACdi9F,GAAwBj9F,EAASi9F,IAClCj9F,EAAS89F,eAEX,GAA0B,mBAAfD,EACT,OAAOA,EAIX,SAASM,EAAY7sG,GACnB,OAAOA,GAAiC,iBAAjBA,EAAM0G,OAI7B,SAAS6jG,EAAIvqG,GACX,OAAOA,MAAAA,EAAwC8sG,KAC7CyY,EAAWvlH,GAASA,EAAM+sG,QAoUhC,SAAsB/sG,GACpB,IAAIy4D,EAAMu0C,GAAyBhtG,IACf,iBAAVA,GAAsB,IAAIotG,EAAUptG,GAC9C,IAAKy4D,EACH,MAAM,IAAI52C,UACR,iEAAmE7hB,GAGvE,OAAOy4D,EA5UiC40C,CAAartG,GAsCrD,SAASyqG,EAASzqG,GAChB,OAAOA,MAAAA,EACL8sG,KAAgBiB,aAChBwX,EAAWvlH,GACR+pG,EAAQ/pG,GAASA,EAAM+sG,QAAU/sG,EAAMitG,eACxCe,GAAkBhuG,GAUxB,SAAS2qG,EAAW3qG,GAClB,OAAOA,MAAAA,EAAwC8sG,KAC5CyY,EAAWvlH,GACZ+pG,EAAQ/pG,GAASA,EAAM0tG,WAAa1tG,EAAMiuG,eADrBC,GAAoBluG,GA2B7C,SAAS6qG,EAAO7qG,GACd,OACEA,MAAAA,EAAwC8sG,KACvCyY,EAAWvlH,GACZ+pG,EAAQ/pG,GAASA,EAAM0tG,WAAa1tG,EADfkuG,GAAoBluG,IAEzCmtG,WAjJJtB,EAAS1oG,UAAUqL,SAAW,WAC5B,MAAO,cAIXq9F,EAASY,KAnBU,EAoBnBZ,EAASa,OAnBY,EAoBrBb,EAASc,QAnBa,EAqBtBd,EAAS1oG,UAAUoY,QACnBswF,EAAS1oG,UAAUypG,SAAW,WAAc,OAAOjsG,KAAK6N,YACxDq9F,EAAS1oG,UAAUyoG,GAAmB,WACpC,OAAOjrG,MA2CT66M,EAAYjxG,EAAKqiB,GAMfriB,EAAI4D,GAAK,WACP,OAAO5D,EAAI7sF,YAGb6sF,EAAIpnG,UAAU4pG,MAAQ,WACpB,OAAOpsG,MAGT4pG,EAAIpnG,UAAUqL,SAAW,WACvB,OAAO7N,KAAK2sG,WAAW,QAAS,MAGlC/C,EAAIpnG,UAAUoqG,YAAc,WAK1B,OAJK5sG,KAAK6sG,QAAU7sG,KAAK8sG,oBACvB9sG,KAAK6sG,OAAS7sG,KAAK+sG,WAAWpjG,UAC9B3J,KAAKiN,KAAOjN,KAAK6sG,OAAO9mG,QAEnB/F,MAKT4pG,EAAIpnG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GACrC,OAAOwuG,GAAWx7M,KAAMgN,EAAIggG,GAAS,IAKvCpD,EAAIpnG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACxC,OAAOyuG,GAAYz7M,KAAMmG,EAAM6mG,GAAS,IAK5C6tG,EAAY/wG,EAAUF,GASpBE,EAAStnG,UAAU4qG,WAAa,WAC9B,OAAOptG,MAKX66M,EAAY7wG,EAAYJ,GAOtBI,EAAWwD,GAAK,WACd,OAAOxD,EAAWjtF,YAGpBitF,EAAWxnG,UAAU8qG,aAAe,WAClC,OAAOttG,MAGTgqG,EAAWxnG,UAAUqL,SAAW,WAC9B,OAAO7N,KAAK2sG,WAAW,QAAS,MAGlC3C,EAAWxnG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAC5C,OAAOwuG,GAAWx7M,KAAMgN,EAAIggG,GAAS,IAGvChD,EAAWxnG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC/C,OAAOyuG,GAAYz7M,KAAMmG,EAAM6mG,GAAS,IAK5C6tG,EAAY3wG,EAAQN,GASlBM,EAAOsD,GAAK,WACV,OAAOtD,EAAOntF,YAGhBmtF,EAAO1nG,UAAUgqG,SAAW,WAC1B,OAAOxsG,MAKX4pG,EAAIU,MAAQA,GACZV,EAAIO,MAAQL,EACZF,EAAIp8F,IAAM08F,EACVN,EAAIQ,QAAUJ,EAEd,IA2LI+D,EAuUAyd,EAqHAxH,EAvnBA03F,EAAkB,wBAOpB,SAASjuG,EAASzxD,GAChBh8C,KAAK0tG,OAAS1xD,EACdh8C,KAAKiN,KAAO+uC,EAAMj2C,OAgCpB,SAAS0mG,EAAU7lG,GACjB,IAAIgG,EAAO1N,OAAO0N,KAAKhG,GACvB5G,KAAK6tG,QAAUjnG,EACf5G,KAAK8tG,MAAQlhG,EACb5M,KAAKiN,KAAOL,EAAK7G,OA4CnB,SAAS41M,EAAY5tM,GACnB/N,KAAK47M,UAAY7tM,EACjB/N,KAAKiN,KAAOc,EAAShI,QAAUgI,EAASd,KAwC1C,SAAS4uM,EAAY1uM,GACnBnN,KAAK87M,UAAY3uM,EACjBnN,KAAK+7M,eAAiB,GAkD1B,SAASzxG,GAAMC,GACb,SAAUA,IAAYA,EAASmxG,IAKjC,SAASvvG,KACP,OAAO4B,IAAcA,EAAY,IAAIN,EAAS,KAGhD,SAASJ,GAAkBhuG,GACzB,IAAIy4D,EACFh8C,MAAMC,QAAQ1c,GAAS,IAAIouG,EAASpuG,GAAOitG,eAC3Cb,EAAWpsG,GAAS,IAAIw8M,EAAYx8M,GAAOitG,eAC3ChB,EAAYjsG,GAAS,IAAIs8M,EAAYt8M,GAAOitG,eAC3B,iBAAVjtG,EAAqB,IAAIotG,EAAUptG,QAC1CyC,EACF,IAAKg2D,EACH,MAAM,IAAI52C,UACR,yEACsB7hB,GAG1B,OAAOy4D,EAGT,SAASy1C,GAAoBluG,GAC3B,IAAIy4D,EAAMu0C,GAAyBhtG,GACnC,IAAKy4D,EACH,MAAM,IAAI52C,UACR,gDAAkD7hB,GAGtD,OAAOy4D,EAcT,SAASu0C,GAAyBhtG,GAChC,OACE6sG,EAAY7sG,GAAS,IAAIouG,EAASpuG,GAClCosG,EAAWpsG,GAAS,IAAIw8M,EAAYx8M,GACpCisG,EAAYjsG,GAAS,IAAIs8M,EAAYt8M,QACrCyC,EAIJ,SAAS05M,GAAW1jJ,EAAK9qD,EAAIggG,EAAS2D,GACpC,IAAI1D,EAAQn1C,EAAI+0C,OAChB,GAAII,EAAO,CAET,IADA,IAAImP,EAAWnP,EAAMlnG,OAAS,EACrB6nG,EAAK,EAAGA,GAAMwO,EAAUxO,IAAM,CACrC,IAAIr7F,EAAQ06F,EAAMD,EAAUoP,EAAWxO,EAAKA,GAC5C,IAAmD,IAA/C5gG,EAAGuF,EAAM,GAAIo+F,EAAUp+F,EAAM,GAAKq7F,EAAI91C,GACxC,OAAO81C,EAAK,EAGhB,OAAOA,EAET,OAAO91C,EAAIg1C,kBAAkB9/F,EAAIggG,GAGnC,SAASyuG,GAAY3jJ,EAAK3xD,EAAM6mG,EAAS2D,GACvC,IAAI1D,EAAQn1C,EAAI+0C,OAChB,GAAII,EAAO,CACT,IAAImP,EAAWnP,EAAMlnG,OAAS,EAC1B6nG,EAAK,EACT,OAAO,IAAI1C,GAAS,WAClB,IAAI34F,EAAQ06F,EAAMD,EAAUoP,EAAWxO,EAAKA,GAC5C,OAAOA,IAAOwO,EA/YX,CAAE/8G,WAAOyC,EAAWizF,MAAM,GAiZ3BoW,EAAchlG,EAAMwqG,EAAUp+F,EAAM,GAAKq7F,EAAK,EAAGr7F,EAAM,OAG7D,OAAOulD,EAAIq1C,mBAAmBhnG,EAAM6mG,GAGtC,SAAS4e,GAAO36F,EAAM7lB,GACpB,OAAOA,EACLygH,GAAWzgH,EAAW6lB,EAAM,GAAI,CAAC,GAAIA,IACrC+qL,GAAc/qL,GAGlB,SAAS46F,GAAWzgH,EAAW6lB,EAAM9vB,EAAK86M,GACxC,OAAIngM,MAAMC,QAAQkV,GACT7lB,EAAU1I,KAAKu5M,EAAY96M,EAAK6oG,EAAW/4E,GAAMjrB,KAAI,SAAS20B,EAAG/4B,GAAK,OAAOiqH,GAAWzgH,EAAWuvB,EAAG/4B,EAAGqvB,OAE9GirL,GAAWjrL,GACN7lB,EAAU1I,KAAKu5M,EAAY96M,EAAK2oG,EAAS74E,GAAMjrB,KAAI,SAAS20B,EAAG/4B,GAAK,OAAOiqH,GAAWzgH,EAAWuvB,EAAG/4B,EAAGqvB,OAEzGA,EAGT,SAAS+qL,GAAc/qL,GACrB,OAAInV,MAAMC,QAAQkV,GACT+4E,EAAW/4E,GAAMjrB,IAAIg2M,IAAe92F,SAEzCg3F,GAAWjrL,GACN64E,EAAS74E,GAAMjrB,IAAIg2M,IAAe76F,QAEpClwF,EAGT,SAASirL,GAAW78M,GAClB,OAAOA,IAAUA,EAAMI,cAAgBP,aAAgC4C,IAAtBzC,EAAMI,aAyDzD,SAASmvG,GAAGC,EAAQC,GAClB,GAAID,IAAWC,GAAWD,GAAWA,GAAUC,GAAWA,EACxD,OAAO,EAET,IAAKD,IAAWC,EACd,OAAO,EAET,GAA8B,mBAAnBD,EAAOh1D,SACY,mBAAnBi1D,EAAOj1D,QAAwB,CAGxC,IAFAg1D,EAASA,EAAOh1D,cAChBi1D,EAASA,EAAOj1D,YACUg1D,GAAWA,GAAUC,GAAWA,EACxD,OAAO,EAET,IAAKD,IAAWC,EACd,OAAO,EAGX,QAA6B,mBAAlBD,EAAOzhG,QACW,mBAAlB0hG,EAAO1hG,SACdyhG,EAAOzhG,OAAO0hG,IAMpB,SAASwT,GAAU9+F,EAAGC,GACpB,GAAID,IAAMC,EACR,OAAO,EAGT,IACGmhG,EAAWnhG,SACD3hB,IAAX0hB,EAAEvW,WAAiCnL,IAAX2hB,EAAExW,MAAsBuW,EAAEvW,OAASwW,EAAExW,WAChDnL,IAAb0hB,EAAEw1F,aAAqCl3G,IAAb2hB,EAAEu1F,QAAwBx1F,EAAEw1F,SAAWv1F,EAAEu1F,QACnE5P,EAAQ5lF,KAAO4lF,EAAQ3lF,IACvB8lF,EAAU/lF,KAAO+lF,EAAU9lF,IAC3BqnF,EAAUtnF,KAAOsnF,EAAUrnF,GAE3B,OAAO,EAGT,GAAe,IAAXD,EAAEvW,MAAyB,IAAXwW,EAAExW,KACpB,OAAO,EAGT,IAAIs1G,GAAkB9Y,EAAcjmF,GAEpC,GAAIsnF,EAAUtnF,GAAI,CAChB,IAAIviB,EAAUuiB,EAAEviB,UAChB,OAAOwiB,EAAEuK,OAAM,SAAS2M,EAAG/4B,GACzB,IAAI2Q,EAAQtR,EAAQw1C,OAAOp3C,MAC3B,OAAOkT,GAASq8F,GAAGr8F,EAAM,GAAIooB,KAAO4nF,GAAkB3T,GAAGr8F,EAAM,GAAI3Q,QAC/DX,EAAQw1C,OAAOs+C,KAGvB,IAAIytB,GAAU,EAEd,QAAe1gH,IAAX0hB,EAAEvW,KACJ,QAAenL,IAAX2hB,EAAExW,KACyB,mBAAlBuW,EAAEopF,aACXppF,EAAEopF,kBAEC,CACL4V,GAAU,EACV,IAAIznF,EAAIvX,EACRA,EAAIC,EACJA,EAAIsX,EAIR,IAAI0nF,GAAW,EACXC,EAAQj/F,EAAE4kF,WAAU,SAAS1tE,EAAG/4B,GAClC,GAAI2gH,GAAkB/+F,EAAEtb,IAAIyyB,GACxB6nF,GAAW5T,GAAGj0E,EAAGnX,EAAEnhB,IAAIT,EAAGomG,KAAa4G,GAAGprF,EAAEnhB,IAAIT,EAAGomG,GAAUrtE,GAE/D,OADA8nF,GAAW,GACJ,KAIX,OAAOA,GAAYj/F,EAAEvW,OAASy1G,EAK9B,SAAS+I,GAAOpsH,EAAOqsH,GACrB,KAAM1rH,gBAAgByrH,IACpB,OAAO,IAAIA,GAAOpsH,EAAOqsH,GAI3B,GAFA1rH,KAAK2rH,OAAStsH,EACdW,KAAKiN,UAAiBnL,IAAV4pH,EAAsB54B,EAAAA,EAAWvzE,KAAK2vB,IAAI,EAAGw8E,GACvC,IAAd1rH,KAAKiN,KAAY,CACnB,GAAIu+G,EACF,OAAOA,EAETA,EAAexrH,MAoErB,SAAS60G,GAAUC,EAAW/oG,GAC5B,IAAK+oG,EAAW,MAAM,IAAIt0G,MAAMuL,GAKhC,SAASk4G,GAAMv7E,EAAOkiD,EAAKujB,GACzB,KAAMnuG,gBAAgBikH,IACpB,OAAO,IAAIA,GAAMv7E,EAAOkiD,EAAKujB,GAe/B,GAbA0G,GAAmB,IAAT1G,EAAY,4BACtBzlE,EAAQA,GAAS,OACL5mC,IAAR8oF,IACFA,EAAMkI,EAAAA,GAERqb,OAAgBrsG,IAATqsG,EAAqB,EAAI5uF,KAAKyzB,IAAIm7D,GACrCvjB,EAAMliD,IACRylE,GAAQA,GAEVnuG,KAAKgoC,OAASU,EACd1oC,KAAKkkH,KAAOt5B,EACZ5qF,KAAKmkH,MAAQhW,EACbnuG,KAAKiN,KAAOsS,KAAK2vB,IAAI,EAAG3vB,KAAKsG,MAAM+kE,EAAMliD,GAASylE,EAAO,GAAK,GAC5C,IAAdnuG,KAAKiN,KAAY,CACnB,GAAI+2G,EACF,OAAOA,EAETA,EAAchkH,MA2FlB,SAAS2pG,KACP,MAAMzoF,UAAU,YAIqB,SAAS2oF,MAEP,SAASE,MAEb,SAASE,MAjoBhDL,EAAIpnG,UAAUk5M,IAAmB,EAIjCb,EAAYptG,EAAUzD,GAMpByD,EAASjrG,UAAUH,IAAM,SAASjB,EAAOusG,GACvC,OAAO3tG,KAAKkI,IAAI9G,GAASpB,KAAK0tG,OAAOnF,EAAUvoG,KAAMoB,IAAUusG,GAGjEF,EAASjrG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAG1C,IAFA,IAAIhxD,EAAQh8C,KAAK0tG,OACb0O,EAAWpgE,EAAMj2C,OAAS,EACrB6nG,EAAK,EAAGA,GAAMwO,EAAUxO,IAC/B,IAA0D,IAAtD5gG,EAAGgvC,EAAMgxD,EAAUoP,EAAWxO,EAAKA,GAAKA,EAAI5tG,MAC9C,OAAO4tG,EAAK,EAGhB,OAAOA,GAGTH,EAASjrG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC7C,IAAIhxD,EAAQh8C,KAAK0tG,OACb0O,EAAWpgE,EAAMj2C,OAAS,EAC1B6nG,EAAK,EACT,OAAO,IAAI1C,GAAS,WACjB,OAAO0C,EAAKwO,EA1KV,CAAE/8G,WAAOyC,EAAWizF,MAAM,GA4K3BoW,EAAchlG,EAAMynG,EAAI5xD,EAAMgxD,EAAUoP,EAAWxO,IAAOA,UAMlEitG,EAAYpuG,EAAW3C,GAQrB2C,EAAUjqG,UAAUH,IAAM,SAASlB,EAAKwsG,GACtC,YAAoB7rG,IAAhB6rG,GAA8B3tG,KAAKkI,IAAI/G,GAGpCnB,KAAK6tG,QAAQ1sG,GAFXwsG,GAKXlB,EAAUjqG,UAAU0F,IAAM,SAAS/G,GACjC,OAAOnB,KAAK6tG,QAAQprG,eAAetB,IAGrCsrG,EAAUjqG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAI3C,IAHA,IAAIpmG,EAAS5G,KAAK6tG,QACdjhG,EAAO5M,KAAK8tG,MACZsO,EAAWxvG,EAAK7G,OAAS,EACpB6nG,EAAK,EAAGA,GAAMwO,EAAUxO,IAAM,CACrC,IAAIzsG,EAAMyL,EAAKogG,EAAUoP,EAAWxO,EAAKA,GACzC,IAAmC,IAA/B5gG,EAAGpG,EAAOzF,GAAMA,EAAKnB,MACvB,OAAO4tG,EAAK,EAGhB,OAAOA,GAGTnB,EAAUjqG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC9C,IAAIpmG,EAAS5G,KAAK6tG,QACdjhG,EAAO5M,KAAK8tG,MACZsO,EAAWxvG,EAAK7G,OAAS,EACzB6nG,EAAK,EACT,OAAO,IAAI1C,GAAS,WAClB,IAAI/pG,EAAMyL,EAAKogG,EAAUoP,EAAWxO,EAAKA,GACzC,OAAOA,IAAOwO,EAzNX,CAAE/8G,WAAOyC,EAAWizF,MAAM,GA2N3BoW,EAAchlG,EAAMhF,EAAKyF,EAAOzF,QAIxCsrG,EAAUjqG,UAAU44M,IAAuB,EAG3CP,EAAYc,EAAa3xG,GAMvB2xG,EAAYn5M,UAAUsqG,kBAAoB,SAAS9/F,EAAIggG,GACrD,GAAIA,EACF,OAAOhtG,KAAK4sG,cAAcvE,UAAUr7F,EAAIggG,GAE1C,IACI7/F,EAAWw+F,EADA3rG,KAAK47M,WAEhB31L,EAAa,EACjB,GAAIwlF,EAAWt+F,GAEb,IADA,IAAIghG,IACKA,EAAOhhG,EAASspC,QAAQs+C,OACY,IAAvC/nF,EAAGmhG,EAAK9uG,MAAO4mB,IAAcjmB,QAKrC,OAAOimB,GAGT01L,EAAYn5M,UAAU2qG,mBAAqB,SAAShnG,EAAM6mG,GACxD,GAAIA,EACF,OAAOhtG,KAAK4sG,cAAcM,WAAW/mG,EAAM6mG,GAE7C,IACI7/F,EAAWw+F,EADA3rG,KAAK47M,WAEpB,IAAKnwG,EAAWt+F,GACd,OAAO,IAAI+9F,EAASG,GAEtB,IAAIplF,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,OAAO03D,EAAKpZ,KAAOoZ,EAAOhD,EAAchlG,EAAM8f,IAAckoF,EAAK9uG,WAMvEw7M,EAAYgB,EAAa7xG,GAMvB6xG,EAAYr5M,UAAUsqG,kBAAoB,SAAS9/F,EAAIggG,GACrD,GAAIA,EACF,OAAOhtG,KAAK4sG,cAAcvE,UAAUr7F,EAAIggG,GAK1C,IAHA,IAQImB,EARAhhG,EAAWnN,KAAK87M,UAChB7uG,EAAQjtG,KAAK+7M,eACb91L,EAAa,EACVA,EAAagnF,EAAMlnG,QACxB,IAAkD,IAA9CiH,EAAGigG,EAAMhnF,GAAaA,IAAcjmB,MACtC,OAAOimB,EAIX,OAASkoF,EAAOhhG,EAASspC,QAAQs+C,MAAM,CACrC,IAAIhI,EAAMohB,EAAK9uG,MAEf,GADA4tG,EAAMhnF,GAAc8mE,GACgB,IAAhC//E,EAAG+/E,EAAK9mE,IAAcjmB,MACxB,MAGJ,OAAOimB,GAGT41L,EAAYr5M,UAAU2qG,mBAAqB,SAAShnG,EAAM6mG,GACxD,GAAIA,EACF,OAAOhtG,KAAK4sG,cAAcM,WAAW/mG,EAAM6mG,GAE7C,IAAI7/F,EAAWnN,KAAK87M,UAChB7uG,EAAQjtG,KAAK+7M,eACb91L,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,GAAIjlF,GAAcgnF,EAAMlnG,OAAQ,CAC9B,IAAIooG,EAAOhhG,EAASspC,OACpB,GAAI03D,EAAKpZ,KACP,OAAOoZ,EAETlB,EAAMhnF,GAAckoF,EAAK9uG,MAE3B,OAAO8rG,EAAchlG,EAAM8f,EAAYgnF,EAAMhnF,UAsQnD40L,EAAYpvF,GAAQzhB,GAgBlByhB,GAAOjpH,UAAUqL,SAAW,WAC1B,OAAkB,IAAd7N,KAAKiN,KACA,YAEF,YAAcjN,KAAK2rH,OAAS,IAAM3rH,KAAKiN,KAAO,YAGvDw+G,GAAOjpH,UAAUH,IAAM,SAASjB,EAAOusG,GACrC,OAAO3tG,KAAKkI,IAAI9G,GAASpB,KAAK2rH,OAAShe,GAGzC8d,GAAOjpH,UAAUsW,SAAW,SAASsrG,GACnC,OAAOxV,GAAG5uG,KAAK2rH,OAAQvH,IAGzBqH,GAAOjpH,UAAU6gB,MAAQ,SAASqlF,EAAO9d,GACvC,IAAI39E,EAAOjN,KAAKiN,KAChB,OAAOw7F,EAAWC,EAAO9d,EAAK39E,GAAQjN,KACpC,IAAIyrH,GAAOzrH,KAAK2rH,OAAQ7iB,EAAWle,EAAK39E,GAAQ27F,EAAaF,EAAOz7F,KAGxEw+G,GAAOjpH,UAAUwqG,QAAU,WACzB,OAAOhtG,MAGTyrH,GAAOjpH,UAAUsV,QAAU,SAASssG,GAClC,OAAIxV,GAAG5uG,KAAK2rH,OAAQvH,GACX,GAED,GAGVqH,GAAOjpH,UAAUs3B,YAAc,SAASsqF,GACtC,OAAIxV,GAAG5uG,KAAK2rH,OAAQvH,GACXpkH,KAAKiN,MAEN,GAGVw+G,GAAOjpH,UAAU6lG,UAAY,SAASr7F,EAAIggG,GACxC,IAAK,IAAIY,EAAK,EAAGA,EAAK5tG,KAAKiN,KAAM2gG,IAC/B,IAAkC,IAA9B5gG,EAAGhN,KAAK2rH,OAAQ/d,EAAI5tG,MACtB,OAAO4tG,EAAK,EAGhB,OAAOA,GAGT6d,GAAOjpH,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAAU,IAAImvG,EAASn8M,KAC9D4tG,EAAK,EACT,OAAO,IAAI1C,GAAS,WACjB,OAAO0C,EAAKuuG,EAAOlvM,KAAOk+F,EAAchlG,EAAMynG,IAAMuuG,EAAOxwF,QAjoBzD,CAAEtsH,WAAOyC,EAAWizF,MAAM,OAqoBjC02B,GAAOjpH,UAAU4K,OAAS,SAASC,GACjC,OAAOA,aAAiBo+G,GACtB7c,GAAG5uG,KAAK2rH,OAAQt+G,EAAMs+G,QACtBrJ,GAAUj1G,IAUhBwtM,EAAY52F,GAAOja,GA2BjBia,GAAMzhH,UAAUqL,SAAW,WACzB,OAAkB,IAAd7N,KAAKiN,KACA,WAEF,WACLjN,KAAKgoC,OAAS,MAAQhoC,KAAKkkH,MACX,IAAflkH,KAAKmkH,MAAc,OAASnkH,KAAKmkH,MAAQ,IAC5C,MAGFF,GAAMzhH,UAAUH,IAAM,SAASjB,EAAOusG,GACpC,OAAO3tG,KAAKkI,IAAI9G,GACdpB,KAAKgoC,OAASugE,EAAUvoG,KAAMoB,GAASpB,KAAKmkH,MAC5CxW,GAGJsW,GAAMzhH,UAAUsW,SAAW,SAASsrG,GAClC,IAAIC,GAAiBD,EAAcpkH,KAAKgoC,QAAUhoC,KAAKmkH,MACvD,OAAOE,GAAiB,GACtBA,EAAgBrkH,KAAKiN,MACrBo3G,IAAkB9kG,KAAKC,MAAM6kG,IAGjCJ,GAAMzhH,UAAU6gB,MAAQ,SAASqlF,EAAO9d,GACtC,OAAI6d,EAAWC,EAAO9d,EAAK5qF,KAAKiN,MACvBjN,MAET0oG,EAAQE,EAAaF,EAAO1oG,KAAKiN,OACjC29E,EAAMke,EAAWle,EAAK5qF,KAAKiN,QAChBy7F,EACF,IAAIub,GAAM,EAAG,GAEf,IAAIA,GAAMjkH,KAAKqC,IAAIqmG,EAAO1oG,KAAKkkH,MAAOlkH,KAAKqC,IAAIuoF,EAAK5qF,KAAKkkH,MAAOlkH,KAAKmkH,SAG9EF,GAAMzhH,UAAUsV,QAAU,SAASssG,GACjC,IAAIE,EAAcF,EAAcpkH,KAAKgoC,OACrC,GAAIs8E,EAActkH,KAAKmkH,OAAU,EAAG,CAClC,IAAI/iH,EAAQkjH,EAActkH,KAAKmkH,MAC/B,GAAI/iH,GAAS,GAAKA,EAAQpB,KAAKiN,KAC7B,OAAO7L,EAGX,OAAQ,GAGV6iH,GAAMzhH,UAAUs3B,YAAc,SAASsqF,GACrC,OAAOpkH,KAAK8X,QAAQssG,IAGtBH,GAAMzhH,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAIvC,IAHA,IAAIoP,EAAWp8G,KAAKiN,KAAO,EACvBkhG,EAAOnuG,KAAKmkH,MACZ9kH,EAAQ2tG,EAAUhtG,KAAKgoC,OAASo0E,EAAWjO,EAAOnuG,KAAKgoC,OAClD4lE,EAAK,EAAGA,GAAMwO,EAAUxO,IAAM,CACrC,IAA4B,IAAxB5gG,EAAG3N,EAAOuuG,EAAI5tG,MAChB,OAAO4tG,EAAK,EAEdvuG,GAAS2tG,GAAWmB,EAAOA,EAE7B,OAAOP,GAGTqW,GAAMzhH,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC1C,IAAIoP,EAAWp8G,KAAKiN,KAAO,EACvBkhG,EAAOnuG,KAAKmkH,MACZ9kH,EAAQ2tG,EAAUhtG,KAAKgoC,OAASo0E,EAAWjO,EAAOnuG,KAAKgoC,OACvD4lE,EAAK,EACT,OAAO,IAAI1C,GAAS,WAClB,IAAIvwE,EAAIt7B,EAER,OADAA,GAAS2tG,GAAWmB,EAAOA,EACpBP,EAAKwO,EApvBT,CAAE/8G,WAAOyC,EAAWizF,MAAM,GAovBWoW,EAAchlG,EAAMynG,IAAMjzE,OAItEspF,GAAMzhH,UAAU4K,OAAS,SAASC,GAChC,OAAOA,aAAiB42G,GACtBjkH,KAAKgoC,SAAW36B,EAAM26B,QACtBhoC,KAAKkkH,OAAS72G,EAAM62G,MACpBlkH,KAAKmkH,QAAU92G,EAAM82G,MACrB7B,GAAUtiH,KAAMqN,IAMtBwtM,EAAYlxG,GAAYsiB,GAMxB4uF,EAAYhxG,GAAiBF,IAE7BkxG,EAAY9wG,GAAmBJ,IAE/BkxG,EAAY5wG,GAAeN,IAG3BA,GAAWQ,MAAQN,GACnBF,GAAWS,QAAUL,GACrBJ,GAAWn8F,IAAMy8F,GAEjB,IAAI8E,GACmB,mBAAdxvF,KAAKwvF,OAAqD,IAA9BxvF,KAAKwvF,KAAK,WAAY,GACzDxvF,KAAKwvF,KACL,SAAcvrF,EAAGC,GAGf,IAAI1C,EAAQ,OAFZyC,GAAQ,GAGJ2E,EAAQ,OAFZ1E,GAAQ,GAIR,OAAQ1C,EAAIoH,IAAS3E,IAAM,IAAM2E,EAAIpH,GAAK0C,IAAM,KAAQ,KAAQ,GAAK,GAOzE,SAASurF,GAAIC,GACX,OAASA,IAAQ,EAAK,WAAqB,WAANA,EAGvC,SAASlgG,GAAKrN,GACZ,IAAU,IAANA,GAAAA,MAAeA,EACjB,OAAO,EAET,GAAyB,mBAAdA,EAAEm4C,WAED,KADVn4C,EAAIA,EAAEm4C,YACFn4C,MAAeA,GACjB,OAAO,EAGX,IAAU,IAANA,EACF,OAAO,EAET,IAAIyE,SAAczE,EAClB,GAAa,WAATyE,EAAmB,CACrB,GAAIzE,GAAMA,GAAKA,IAAMoxF,EAAAA,EACnB,OAAO,EAET,IAAI94D,EAAQ,EAAJt4B,EAIR,IAHIs4B,IAAMt4B,IACRs4B,GAAS,WAAJt4B,GAEAA,EAAI,YAETs4B,GADAt4B,GAAK,WAGP,OAAOstG,GAAIh1E,GAEb,GAAa,WAAT7zB,EACF,OAAOzE,EAAEqE,OAASupG,GActB,SAA0BlkB,GACxB,IAAIr8E,EAAOwgG,GAAgBnkB,GAU3B,YATatpF,IAATiN,IACFA,EAAOu2B,GAAW8lD,GACdokB,KAA2BC,KAC7BD,GAAyB,EACzBD,GAAkB,IAEpBC,KACAD,GAAgBnkB,GAAUr8E,GAErBA,EAzB4CqtM,CAAiB16M,GAAK4jC,GAAW5jC,GAEpF,GAA0B,mBAAfA,EAAEitG,SACX,OAAOjtG,EAAEitG,WAEX,GAAa,WAATxoG,EACF,OAqCJ,SAAmB+1C,GACjB,IAAIntC,EACJ,GAAI2gG,SAEW5tG,KADbiN,EAAO4gG,GAAQttG,IAAI65C,IAEjB,OAAOntC,EAKX,QAAajN,KADbiN,EAAOmtC,EAAI0zD,KAET,OAAO7gG,EAGT,IAAK8gG,GAAmB,CAEtB,QAAa/tG,KADbiN,EAAOmtC,EAAI6jD,sBAAwB7jD,EAAI6jD,qBAAqB6P,KAE1D,OAAO7gG,EAIT,QAAajN,KADbiN,EA4DJ,SAAuB9J,GACrB,GAAIA,GAAQA,EAAK6qG,SAAW,EAC1B,OAAQ7qG,EAAK6qG,UACX,KAAK,EACH,OAAO7qG,EAAK8qG,SACd,KAAK,EACH,OAAO9qG,EAAK+qG,iBAAmB/qG,EAAK+qG,gBAAgBD,UAlEjDE,CAAc/zD,IAEnB,OAAOntC,EASX,GALAA,IAASstM,GACQ,WAAbA,KACFA,GAAa,GAGX3sG,GACFC,GAAQpqG,IAAI22C,EAAKntC,OACZ,SAAqBjN,IAAjBquG,KAAoD,IAAtBA,GAAaj0D,GACpD,MAAM,IAAI17C,MAAM,mDACX,GAAIqvG,GACT3wG,OAAOC,eAAe+8C,EAAK0zD,GAAc,CACvC,YAAc,EACd,cAAgB,EAChB,UAAY,EACZ,MAAS7gG,SAEN,QAAiCjN,IAA7Bo6C,EAAI6jD,sBACJ7jD,EAAI6jD,uBAAyB7jD,EAAIz8C,YAAY+C,UAAUu9F,qBAKhE7jD,EAAI6jD,qBAAuB,WACzB,OAAO//F,KAAKP,YAAY+C,UAAUu9F,qBAAqB1/E,MAAMrgB,KAAM+c,YAErEm/B,EAAI6jD,qBAAqB6P,IAAgB7gG,MACpC,SAAqBjN,IAAjBo6C,EAAI4zD,SAOb,MAAM,IAAItvG,MAAM,sDAFhB07C,EAAI0zD,IAAgB7gG,GAKtB,OAAOA,EAnGEqhG,CAAU1uG,GAEnB,GAA0B,mBAAfA,EAAEmM,SACX,OAAOy3B,GAAW5jC,EAAEmM,YAEtB,MAAM,IAAIrN,MAAM,cAAgB2F,EAAO,sBAkBzC,SAASm/B,GAAW8lD,GAQlB,IADA,IAAIr8E,EAAO,EACF6+F,EAAK,EAAGA,EAAKxiB,EAAOrlF,OAAQ6nG,IACnC7+F,EAAO,GAAKA,EAAOq8E,EAAOpqE,WAAW4sF,GAAM,EAE7C,OAAOoB,GAAIjgG,GAqEb,IAAIohG,GAAejxG,OAAOixG,aAGtBN,GAAqB,WACvB,IAEE,OADA3wG,OAAOC,eAAe,GAAI,IAAK,KACxB,EACP,MAAOsvB,GACP,OAAO,GALa,GAuBxB,IACIkhF,GADAD,GAAkC,mBAAZ5gF,QAEtB4gF,KACFC,GAAU,IAAI7gF,SAGhB,IAAIutL,GAAa,EAEbzsG,GAAe,oBACG,mBAAX1iG,SACT0iG,GAAe1iG,OAAO0iG,KAGxB,IAAIN,GAA+B,GAC/BG,GAA6B,IAC7BD,GAAyB,EACzBD,GAAkB,GAEtB,SAASwF,GAAkB9nG,GACzB4nG,GACE5nG,IAAS6lF,EAAAA,EACT,qDAQF,SAASjuF,GAAIxF,GACX,OAAOA,MAAAA,EAAwCg3G,KAC7ChI,GAAMhvG,KAAWyrG,EAAUzrG,GAASA,EACpCg3G,KAAWa,eAAc,SAASlxG,GAChC,IAAImgB,EAAO20L,EAAcz7M,GACzB01G,GAAkB5uF,EAAKlZ,MACvBkZ,EAAKjlB,SAAQ,SAASy5B,EAAG/4B,GAAK,OAAOoE,EAAIT,IAAI3D,EAAG+4B,SA6KxD,SAAS0zE,GAAMC,GACb,SAAUA,IAAYA,EAASguG,KAxLjCzB,EAAYh2M,GAAKglG,IAcfhlG,GAAI2oG,GAAK,WAAY,IAAIoL,EAAYgiG,EAAQl4M,KAAKqa,UAAW,GAC3D,OAAOs5F,KAAWa,eAAc,SAASlxG,GACvC,IAAK,IAAI4S,EAAI,EAAGA,EAAIggG,EAAU7yG,OAAQ6S,GAAK,EAAG,CAC5C,GAAIA,EAAI,GAAKggG,EAAU7yG,OACrB,MAAM,IAAIvF,MAAM,0BAA4Bo4G,EAAUhgG,IAExD5S,EAAIT,IAAIqzG,EAAUhgG,GAAIggG,EAAUhgG,EAAI,SAK1C/T,GAAIrC,UAAUqL,SAAW,WACvB,OAAO7N,KAAK2sG,WAAW,QAAS,MAKlC9nG,GAAIrC,UAAUH,IAAM,SAAST,EAAG+rG,GAC9B,OAAO3tG,KAAK64G,MACV74G,KAAK64G,MAAMx2G,IAAI,OAAGP,EAAWF,EAAG+rG,GAChCA,GAKJ9oG,GAAIrC,UAAU+C,IAAM,SAAS3D,EAAG+4B,GAC9B,OAAOm+E,GAAU94G,KAAM4B,EAAG+4B,IAG5B91B,GAAIrC,UAAU+zG,MAAQ,SAAStB,EAASt6E,GACtC,OAAO36B,KAAK22G,SAAS1B,EAASjN,GAAS,WAAa,OAAOrtE,MAG7D91B,GAAIrC,UAAUy+B,OAAS,SAASr/B,GAC9B,OAAOk3G,GAAU94G,KAAM4B,EAAGomG,IAG5BnjG,GAAIrC,UAAUi0G,SAAW,SAASxB,GAChC,OAAOj1G,KAAK22G,SAAS1B,GAAS,WAAa,OAAOjN,MAGpDnjG,GAAIrC,UAAUitC,OAAS,SAAS7tC,EAAG+rG,EAAaiI,GAC9C,OAA4B,IAArB74F,UAAUhX,OACfnE,EAAE5B,MACFA,KAAK22G,SAAS,CAAC/0G,GAAI+rG,EAAaiI,IAGpC/wG,GAAIrC,UAAUm0G,SAAW,SAAS1B,EAAStH,EAAaiI,GACjDA,IACHA,EAAUjI,EACVA,OAAc7rG,GAEhB,IAAI+zG,EAAe0mG,GACjBv8M,KACAw8M,GAAcvnG,GACdtH,EACAiI,GAEF,OAAOC,IAAiB7N,OAAUlmG,EAAY+zG,GAGhDhxG,GAAIrC,UAAUkwE,MAAQ,WACpB,OAAkB,IAAd1yE,KAAKiN,KACAjN,KAELA,KAAKi3G,WACPj3G,KAAKiN,KAAO,EACZjN,KAAK64G,MAAQ,KACb74G,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEFq2G,MAKTxxG,GAAIrC,UAAU+K,MAAQ,WACpB,OAAOkvM,GAAiBz8M,UAAM8B,EAAWib,YAG3ClY,GAAIrC,UAAUmL,UAAY,SAASC,GACjC,OAAO6uM,GAAiBz8M,KAAM4N,EADwBgtM,EAAQl4M,KAAKqa,UAAW,KAIhFlY,GAAIrC,UAAU41G,QAAU,SAASnD,GAAU,IAAIlC,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GAC7E,OAAO/c,KAAK22G,SACV1B,EACAoB,MACA,SAAS10G,GAAK,MAA0B,mBAAZA,EAAE4L,MAC5B5L,EAAE4L,MAAM8S,MAAM1e,EAAGoxG,GACjBA,EAAMA,EAAMhtG,OAAS,OAI3BlB,GAAIrC,UAAU01G,UAAY,WACxB,OAAOukG,GAAiBz8M,KAAMy3G,GAAY16F,YAG5ClY,GAAIrC,UAAU21G,cAAgB,SAASvqG,GAAS,IAAImlG,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GAClF,OAAO0/L,GAAiBz8M,KAAM63G,GAAejqG,GAASmlG,IAGxDluG,GAAIrC,UAAU61G,YAAc,SAASpD,GAAU,IAAIlC,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GACjF,OAAO/c,KAAK22G,SACV1B,EACAoB,MACA,SAAS10G,GAAK,MAA8B,mBAAhBA,EAAEu2G,UAC5Bv2G,EAAEu2G,UAAU73F,MAAM1e,EAAGoxG,GACrBA,EAAMA,EAAMhtG,OAAS,OAI3BlB,GAAIrC,UAAU29C,KAAO,SAASwzD,GAE5B,OAAOsF,GAAWvF,GAAY1zG,KAAM2zG,KAGtC9uG,GAAIrC,UAAU02G,OAAS,SAAShI,EAAQyC,GAEtC,OAAOsF,GAAWvF,GAAY1zG,KAAM2zG,EAAYzC,KAKlDrsG,GAAIrC,UAAU00G,cAAgB,SAASlqG,GACrC,IAAIsrG,EAAUt4G,KAAKu4G,YAEnB,OADAvrG,EAAGsrG,GACIA,EAAQE,aAAeF,EAAQG,cAAcz4G,KAAKi3G,WAAaj3G,MAGxE6E,GAAIrC,UAAU+1G,UAAY,WACxB,OAAOv4G,KAAKi3G,UAAYj3G,KAAOA,KAAKy4G,cAAc,IAAItQ,IAGxDtjG,GAAIrC,UAAUk2G,YAAc,WAC1B,OAAO14G,KAAKy4G,iBAGd5zG,GAAIrC,UAAUg2G,WAAa,WACzB,OAAOx4G,KAAK24G,WAGd9zG,GAAIrC,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACxC,OAAO,IAAImM,GAAYn5G,KAAMmG,EAAM6mG,IAGrCnoG,GAAIrC,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACxDimB,EAAa,EAKjB,OAJAjmB,KAAK64G,OAAS74G,KAAK64G,MAAMO,SAAQ,SAAS7mG,GAExC,OADA0T,IACOjZ,EAAGuF,EAAM,GAAIA,EAAM,GAAI4pM,KAC7BnvG,GACI/mF,GAGTphB,GAAIrC,UAAUi2G,cAAgB,SAASY,GACrC,OAAIA,IAAYr5G,KAAKi3G,UACZj3G,KAEJq5G,EAKEC,GAAQt5G,KAAKiN,KAAMjN,KAAK64G,MAAOQ,EAASr5G,KAAKg5G,SAJlDh5G,KAAKi3G,UAAYoC,EACjBr5G,KAAK24G,WAAY,EACV34G,OAUb6E,GAAIwpG,MAAQA,GAEZ,IA2ZIgO,GA3ZAigG,GAAkB,wBAElB/iG,GAAe10G,GAAIrC,UAUrB,SAASi3G,GAAaJ,EAASp4G,GAC7BjB,KAAKq5G,QAAUA,EACfr5G,KAAKiB,QAAUA,EAgEjB,SAASm5G,GAAkBf,EAASgB,EAAQC,GAC1Ct6G,KAAKq5G,QAAUA,EACfr5G,KAAKq6G,OAASA,EACdr6G,KAAKs6G,MAAQA,EAkEf,SAASS,GAAiB1B,EAAStf,EAAOugB,GACxCt6G,KAAKq5G,QAAUA,EACfr5G,KAAK+5F,MAAQA,EACb/5F,KAAKs6G,MAAQA,EAuDf,SAAS2B,GAAkB5C,EAASK,EAASz4G,GAC3CjB,KAAKq5G,QAAUA,EACfr5G,KAAK05G,QAAUA,EACf15G,KAAKiB,QAAUA,EAyEjB,SAAS+4G,GAAUX,EAASK,EAASnnG,GACnCvS,KAAKq5G,QAAUA,EACfr5G,KAAK05G,QAAUA,EACf15G,KAAKuS,MAAQA,EAgEf,SAAS4mG,GAAYnzG,EAAKG,EAAM6mG,GAC9BhtG,KAAKs8G,MAAQn2G,EACbnG,KAAKu8G,SAAWvP,EAChBhtG,KAAKw8G,OAASx2G,EAAI6yG,OAAS4D,GAAiBz2G,EAAI6yG,OAsCpD,SAAS6D,GAAiBv2G,EAAMoM,GAC9B,OAAO44F,EAAchlG,EAAMoM,EAAM,GAAIA,EAAM,IAG7C,SAASkqG,GAAiBx3G,EAAM43G,GAC9B,MAAO,CACL53G,KAAMA,EACN7D,MAAO,EACPw7G,OAAQC,GAIZ,SAASvD,GAAQrsG,EAAM67E,EAAMuwB,EAAStqG,GACpC,IAAI/I,EAAM9G,OAAOuC,OAAO83G,IAMxB,OALAvzG,EAAIiH,KAAOA,EACXjH,EAAI6yG,MAAQ/vB,EACZ9iF,EAAIixG,UAAYoC,EAChBrzG,EAAIgzG,OAASjqG,EACb/I,EAAI2yG,WAAY,EACT3yG,EAIT,SAASqwG,KACP,OAAOgG,KAAcA,GAAY/C,GAAQ,IAG3C,SAASR,GAAU9yG,EAAKpE,EAAG+4B,GACzB,IAAImiF,EACAC,EACJ,GAAK/2G,EAAI6yG,MAMF,CACL,IAAIc,EAAgB4hG,EAAQF,GACxBzhG,EAAW2hG,EAAQD,GAEvB,GADAx+F,EAAUnC,GAAW30G,EAAI6yG,MAAO7yG,EAAIixG,UAAW,OAAGn1G,EAAWF,EAAG+4B,EAAGg/E,EAAeC,IAC7EA,EAASv6G,MACZ,OAAO2G,EAET+2G,EAAU/2G,EAAIiH,MAAQ0sG,EAAct6G,MAAQs7B,IAAMqtE,GAAW,EAAI,EAAI,OAbvD,CACd,GAAIrtE,IAAMqtE,EACR,OAAOhiG,EAET+2G,EAAU,EACVD,EAAU,IAAIrD,GAAazzG,EAAIixG,UAAW,CAAC,CAACr1G,EAAG+4B,KAUjD,OAAI30B,EAAIixG,WACNjxG,EAAIiH,KAAO8vG,EACX/2G,EAAI6yG,MAAQiE,EACZ92G,EAAIgzG,YAASl3G,EACbkE,EAAI2yG,WAAY,EACT3yG,GAEF82G,EAAUxD,GAAQyD,EAASD,GAAWzG,KAG/C,SAASsE,GAAW11G,EAAMo0G,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GAC5E,OAAK30G,EAQEA,EAAKwqC,OAAO4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GAPjEv6G,IAAU2oG,EACL/iG,GAETgjG,EAAO2R,GACP3R,EAAO0R,GACA,IAAIK,GAAUX,EAASK,EAAS,CAACv4G,EAAK9B,KAKjD,SAAS47G,GAAWh2G,GAClB,OAAOA,EAAKxF,cAAgBu6G,IAAa/0G,EAAKxF,cAAgBw8G,GAGhE,SAASC,GAAcj3G,EAAMo0G,EAASl/D,EAAOu/D,EAASnnG,GACpD,GAAItN,EAAKy0G,UAAYA,EACnB,OAAO,IAAIuC,GAAkB5C,EAASK,EAAS,CAACz0G,EAAKsN,MAAOA,IAG9D,IAGImoG,EAHAsC,GAAkB,IAAV7iE,EAAcl1C,EAAKy0G,QAAUz0G,EAAKy0G,UAAYv/D,GAAS4tD,EAC/DkV,GAAkB,IAAV9iE,EAAcu/D,EAAUA,IAAYv/D,GAAS4tD,EAOzD,OAAO,IAAIqS,GAAkBf,EAAU,GAAK2D,EAAS,GAAKC,EAJ9CD,IAASC,EACnB,CAACf,GAAcj3G,EAAMo0G,EAASl/D,EA1vDtB,EA0vDqCu/D,EAASnnG,KACpDmoG,EAAU,IAAIV,GAAUX,EAASK,EAASnnG,GAASyqG,EAAOC,EAAO,CAACh4G,EAAMy1G,GAAW,CAACA,EAASz1G,KAyCnG,SAASw3M,GAAiBz2M,EAAK4H,EAAQ8uM,GAErC,IADA,IAAI3pG,EAAQ,GACHnF,EAAK,EAAGA,EAAK8uG,EAAU32M,OAAQ6nG,IAAM,CAC5C,IAAIvuG,EAAQq9M,EAAU9uG,GAClBznF,EAAO20L,EAAcz7M,GACpBulH,EAAWvlH,KACd8mB,EAAOA,EAAKngB,KAAI,SAAS20B,GAAK,OAAOixF,GAAOjxF,OAE9Co4E,EAAMttG,KAAK0gB,GAEb,OAAOw2L,GAAwB32M,EAAK4H,EAAQmlG,GAG9C,SAAS0E,GAAW9d,EAAUt6F,EAAO8B,GACnC,OAAOw4F,GAAYA,EAASue,WAAa0M,EAAWvlH,GAClDs6F,EAASue,UAAU74G,GACnBuvG,GAAGjV,EAAUt6F,GAASs6F,EAAWt6F,EAGrC,SAASw4G,GAAejqG,GACtB,OAAO,SAAS+rF,EAAUt6F,EAAO8B,GAC/B,GAAIw4F,GAAYA,EAASwe,eAAiByM,EAAWvlH,GACnD,OAAOs6F,EAASwe,cAAcvqG,EAAQvO,GAExC,IAAIu9M,EAAYhvM,EAAO+rF,EAAUt6F,EAAO8B,GACxC,OAAOytG,GAAGjV,EAAUijH,GAAajjH,EAAWijH,GAIhD,SAASD,GAAwB1uG,EAAYrgG,EAAQmlG,GAEnD,OAAqB,KADrBA,EAAQA,EAAMzlG,QAAO,SAASW,GAAK,OAAkB,IAAXA,EAAEhB,SAClClH,OACDkoG,EAEe,IAApBA,EAAWhhG,MAAeghG,EAAWgJ,WAA8B,IAAjBlE,EAAMhtG,OAGrDkoG,EAAWiJ,eAAc,SAASjJ,GAUvC,IATA,IAAI4uG,EAAejvM,EACjB,SAASvO,EAAO8B,GACd8sG,EAAWx+D,OAAOtuC,EAAK6mG,GAAS,SAASrO,GACtC,OAAOA,IAAaqO,EAAU3oG,EAAQuO,EAAO+rF,EAAUt6F,EAAO8B,OAGnE,SAAS9B,EAAO8B,GACd8sG,EAAW1oG,IAAIpE,EAAK9B,IAEfuuG,EAAK,EAAGA,EAAKmF,EAAMhtG,OAAQ6nG,IAClCmF,EAAMnF,GAAI1sG,QAAQ27M,MAbb5uG,EAAWxuG,YAAYszG,EAAM,IAkBxC,SAASwpG,GAAgB5iH,EAAUmjH,EAAanvG,EAAaiI,GAC3D,IAAImnG,EAAWpjH,IAAaqO,EACxBmG,EAAO2uG,EAAYrmK,OACvB,GAAI03D,EAAKpZ,KAAM,CACb,IAAIkhB,EAAgB8mG,EAAWpvG,EAAchU,EACzCuc,EAAWN,EAAQK,GACvB,OAAOC,IAAaD,EAAgBtc,EAAWuc,EAEjDrB,GACEkoG,GAAapjH,GAAYA,EAASp0F,IAClC,mBAEF,IAAIpE,EAAMgtG,EAAK9uG,MACX82G,EAAe4mG,EAAW/0G,EAAUrO,EAASt3F,IAAIlB,EAAK6mG,GACtDoO,EAAcmmG,GAChBpmG,EACA2mG,EACAnvG,EACAiI,GAEF,OAAOQ,IAAgBD,EAAexc,EACpCyc,IAAgBpO,EAAUrO,EAAS14D,OAAO9/B,IACzC47M,EAAW1mG,KAAa1c,GAAUp0F,IAAIpE,EAAKi1G,GAGhD,SAASoE,GAASvsG,GAMhB,OAHAA,GADAA,GAAS,WADTA,GAAUA,GAAK,EAAK,cACKA,GAAK,EAAK,aACzBA,GAAK,GAAM,UAGV,KAFXA,GAASA,GAAK,IACLA,GAAK,IAIhB,SAASsoG,GAAMv6D,EAAO89D,EAAK/sB,EAAKsuB,GAC9B,IAAIE,EAAWF,EAAUr/D,EAAQ24D,EAAQ34D,GAEzC,OADAu/D,EAASzB,GAAO/sB,EACTwuB,EAvlBThC,GAAa+iG,KAAmB,EAChC/iG,GAAmB,OAAIA,GAAat4E,OACpCs4E,GAAa/C,SAAW+C,GAAa9C,SAYnCgD,GAAaj3G,UAAUH,IAAM,SAAS83C,EAAOu/D,EAASv4G,EAAKwsG,GAEzD,IADA,IAAI1sG,EAAUjB,KAAKiB,QACV2sG,EAAK,EAAGlqF,EAAMziB,EAAQ8E,OAAQ6nG,EAAKlqF,EAAKkqF,IAC/C,GAAIgB,GAAGztG,EAAKF,EAAQ2sG,GAAI,IACtB,OAAO3sG,EAAQ2sG,GAAI,GAGvB,OAAOD,GAGT8L,GAAaj3G,UAAUitC,OAAS,SAAS4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GAK3F,IAJA,IAAIC,EAAUx6G,IAAU2oG,EAEpB/mG,EAAUjB,KAAKiB,QACf64G,EAAM,EACDp2F,EAAMziB,EAAQ8E,OAAQ+zG,EAAMp2F,IAC/BkrF,GAAGztG,EAAKF,EAAQ64G,GAAK,IADeA,KAK1C,IAAIjqG,EAASiqG,EAAMp2F,EAEnB,GAAI7T,EAAS5O,EAAQ64G,GAAK,KAAOz6G,EAAQw6G,EACvC,OAAO75G,KAMT,GAHAioG,EAAO2R,IACNC,IAAYhqG,IAAWo4F,EAAO0R,IAE3BE,GAA8B,IAAnB54G,EAAQ8E,OAAvB,CAIA,IAAK8J,IAAWgqG,GAAW54G,EAAQ8E,QAAUg0G,GAC3C,OAyaN,SAAqBV,EAASp4G,EAASE,EAAK9B,GACrCg6G,IACHA,EAAU,IAAIlR,GAGhB,IADA,IAAIljG,EAAO,IAAI+0G,GAAUX,EAAStqG,GAAK5N,GAAM,CAACA,EAAK9B,IAC1CuuG,EAAK,EAAGA,EAAK3sG,EAAQ8E,OAAQ6nG,IAAM,CAC1C,IAAIr7F,EAAQtR,EAAQ2sG,GACpB3oG,EAAOA,EAAKwqC,OAAO4pE,EAAS,OAAGv3G,EAAWyQ,EAAM,GAAIA,EAAM,IAE5D,OAAOtN,EAlbIg1G,CAAYZ,EAASp4G,EAASE,EAAK9B,GAG5C,IAAI66G,EAAab,GAAWA,IAAYr5G,KAAKq5G,QACzCc,EAAaD,EAAaj5G,EAAU0zG,EAAQ1zG,GAYhD,OAVI4O,EACEgqG,EACFC,IAAQp2F,EAAM,EAAIy2F,EAAW33F,MAAS23F,EAAWL,GAAOK,EAAW33F,MAEnE23F,EAAWL,GAAO,CAAC34G,EAAK9B,GAG1B86G,EAAW10G,KAAK,CAACtE,EAAK9B,IAGpB66G,GACFl6G,KAAKiB,QAAUk5G,EACRn6G,MAGF,IAAIy5G,GAAaJ,EAASc,KAYnCC,GAAkB53G,UAAUH,IAAM,SAAS83C,EAAOu/D,EAASv4G,EAAKwsG,QAC9C7rG,IAAZ43G,IACFA,EAAU3qG,GAAK5N,IAEjB,IAAIo5G,EAAO,KAAiB,IAAVpgE,EAAcu/D,EAAUA,IAAYv/D,GAAS4tD,GAC3DsS,EAASr6G,KAAKq6G,OAClB,OAA0B,IAAlBA,EAASE,GAAa5M,EAC5B3tG,KAAKs6G,MAAME,GAASH,EAAUE,EAAM,IAAKl4G,IAAI83C,EA/3CvC,EA+3CsDu/D,EAASv4G,EAAKwsG,IAG9EyM,GAAkB53G,UAAUitC,OAAS,SAAS4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,QAChF93G,IAAZ43G,IACFA,EAAU3qG,GAAK5N,IAEjB,IAAIs5G,GAAyB,IAAVtgE,EAAcu/D,EAAUA,IAAYv/D,GAAS4tD,EAC5DwS,EAAM,GAAKE,EACXJ,EAASr6G,KAAKq6G,OACdxqG,EAA4B,IAAlBwqG,EAASE,GAEvB,IAAK1qG,GAAUxQ,IAAU2oG,EACvB,OAAOhoG,KAGT,IAAI85G,EAAMU,GAASH,EAAUE,EAAM,GAC/BD,EAAQt6G,KAAKs6G,MACbr1G,EAAO4K,EAASyqG,EAAMR,QAAOh4G,EAC7B44G,EAAUC,GAAW11G,EAAMo0G,EAASl/D,EAl5ChC,EAk5C+Cu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GAE3F,GAAIc,IAAYz1G,EACd,OAAOjF,KAGT,IAAK6P,GAAU6qG,GAAWJ,EAAMv0G,QAAU60G,GACxC,OAiYN,SAAqBvB,EAASiB,EAAOD,EAAQQ,EAAW51G,GAGtD,IAFA,IAAI80F,EAAQ,EACR+gB,EAAgB,IAAIh/F,MAAMgsF,GACrB8F,EAAK,EAAc,IAAXyM,EAAczM,IAAMyM,KAAY,EAC/CS,EAAclN,GAAe,EAATyM,EAAaC,EAAMvgB,UAAWj4F,EAGpD,OADAg5G,EAAcD,GAAa51G,EACpB,IAAI81G,GAAiB1B,EAAStf,EAAQ,EAAG+gB,GAxYrCE,CAAY3B,EAASiB,EAAOD,EAAQI,EAAaC,GAG1D,GAAI7qG,IAAW6qG,GAA4B,IAAjBJ,EAAMv0G,QAAgBk1G,GAAWX,EAAY,EAANR,IAC/D,OAAOQ,EAAY,EAANR,GAGf,GAAIjqG,GAAU6qG,GAA4B,IAAjBJ,EAAMv0G,QAAgBk1G,GAAWP,GACxD,OAAOA,EAGT,IAAIR,EAAab,GAAWA,IAAYr5G,KAAKq5G,QACzC6B,EAAYrrG,EAAS6qG,EAAUL,EAASA,EAASE,EAAMF,EAASE,EAChEY,EAAWtrG,EAAS6qG,EACtBnE,GAAM+D,EAAOR,EAAKY,EAASR,GA6ejC,SAAmBl+D,EAAO89D,EAAKuB,GAC7B,IAAIC,EAASt/D,EAAMj2C,OAAS,EAC5B,GAAIs1G,GAAWvB,IAAQwB,EAErB,OADAt/D,EAAMx5B,MACCw5B,EAIT,IAFA,IAAIu/D,EAAW,IAAIz/F,MAAMw/F,GACrBE,EAAQ,EACH5N,EAAK,EAAGA,EAAK0N,EAAQ1N,IACxBA,IAAOkM,IACT0B,EAAQ,GAEVD,EAAS3N,GAAM5xD,EAAM4xD,EAAK4N,GAE5B,OAAOD,EA1fHE,CAAUnB,EAAOR,EAAKI,GAyd5B,SAAkBl+D,EAAO89D,EAAK/sB,EAAKsuB,GACjC,IAAIC,EAASt/D,EAAMj2C,OAAS,EAC5B,GAAIs1G,GAAWvB,EAAM,IAAMwB,EAEzB,OADAt/D,EAAM89D,GAAO/sB,EACN/wC,EAIT,IAFA,IAAIu/D,EAAW,IAAIz/F,MAAMw/F,GACrBE,EAAQ,EACH5N,EAAK,EAAGA,EAAK0N,EAAQ1N,IACxBA,IAAOkM,GACTyB,EAAS3N,GAAM7gB,EACfyuB,GAAS,GAETD,EAAS3N,GAAM5xD,EAAM4xD,EAAK4N,GAG9B,OAAOD,EAxeHG,CAASpB,EAAOR,EAAKY,EAASR,GAEhC,OAAIA,GACFl6G,KAAKq6G,OAASa,EACdl7G,KAAKs6G,MAAQa,EACNn7G,MAGF,IAAIo6G,GAAkBf,EAAS6B,EAAWC,IAYnDJ,GAAiBv4G,UAAUH,IAAM,SAAS83C,EAAOu/D,EAASv4G,EAAKwsG,QAC7C7rG,IAAZ43G,IACFA,EAAU3qG,GAAK5N,IAEjB,IAAI24G,GAAiB,IAAV3/D,EAAcu/D,EAAUA,IAAYv/D,GAAS4tD,EACpD9iG,EAAOjF,KAAKs6G,MAAMR,GACtB,OAAO70G,EAAOA,EAAK5C,IAAI83C,EAn8Cf,EAm8C8Bu/D,EAASv4G,EAAKwsG,GAAeA,GAGrEoN,GAAiBv4G,UAAUitC,OAAS,SAAS4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,QAC/E93G,IAAZ43G,IACFA,EAAU3qG,GAAK5N,IAEjB,IAAI24G,GAAiB,IAAV3/D,EAAcu/D,EAAUA,IAAYv/D,GAAS4tD,EACpD8R,EAAUx6G,IAAU2oG,EACpBsS,EAAQt6G,KAAKs6G,MACbr1G,EAAOq1G,EAAMR,GAEjB,GAAID,IAAY50G,EACd,OAAOjF,KAGT,IAAI06G,EAAUC,GAAW11G,EAAMo0G,EAASl/D,EAn9ChC,EAm9C+Cu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GAC3F,GAAIc,IAAYz1G,EACd,OAAOjF,KAGT,IAAI27G,EAAW37G,KAAK+5F,MACpB,GAAK90F,GAEE,IAAKy1G,KACViB,EACeC,GACb,OA8SR,SAAmBvC,EAASiB,EAAOvgB,EAAO8hB,GAIxC,IAHA,IAAIxB,EAAS,EACTyB,EAAW,EACXC,EAAc,IAAIjgG,MAAMi+E,GACnB6T,EAAK,EAAG2M,EAAM,EAAG72F,EAAM42F,EAAMv0G,OAAQ6nG,EAAKlqF,EAAKkqF,IAAM2M,IAAQ,EAAG,CACvE,IAAIt1G,EAAOq1G,EAAM1M,QACJ9rG,IAATmD,GAAsB2oG,IAAOiO,IAC/BxB,GAAUE,EACVwB,EAAYD,KAAc72G,GAG9B,OAAO,IAAIm1G,GAAkBf,EAASgB,EAAQ0B,GAzTjCC,CAAU3C,EAASiB,EAAOqB,EAAU7B,QAJ7C6B,IAQF,IAAIzB,EAAab,GAAWA,IAAYr5G,KAAKq5G,QACzC8B,EAAW5E,GAAM+D,EAAOR,EAAKY,EAASR,GAE1C,OAAIA,GACFl6G,KAAK+5F,MAAQ4hB,EACb37G,KAAKs6G,MAAQa,EACNn7G,MAGF,IAAI+6G,GAAiB1B,EAASsC,EAAUR,IAYjDc,GAAkBz5G,UAAUH,IAAM,SAAS83C,EAAOu/D,EAASv4G,EAAKwsG,GAE9D,IADA,IAAI1sG,EAAUjB,KAAKiB,QACV2sG,EAAK,EAAGlqF,EAAMziB,EAAQ8E,OAAQ6nG,EAAKlqF,EAAKkqF,IAC/C,GAAIgB,GAAGztG,EAAKF,EAAQ2sG,GAAI,IACtB,OAAO3sG,EAAQ2sG,GAAI,GAGvB,OAAOD,GAGTsO,GAAkBz5G,UAAUitC,OAAS,SAAS4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,QAChF93G,IAAZ43G,IACFA,EAAU3qG,GAAK5N,IAGjB,IAAI04G,EAAUx6G,IAAU2oG,EAExB,GAAI0R,IAAY15G,KAAK05G,QACnB,OAAIG,EACK75G,MAETioG,EAAO2R,GACP3R,EAAO0R,GACAuC,GAAcl8G,KAAMq5G,EAASl/D,EAAOu/D,EAAS,CAACv4G,EAAK9B,KAK5D,IAFA,IAAI4B,EAAUjB,KAAKiB,QACf64G,EAAM,EACDp2F,EAAMziB,EAAQ8E,OAAQ+zG,EAAMp2F,IAC/BkrF,GAAGztG,EAAKF,EAAQ64G,GAAK,IADeA,KAK1C,IAAIjqG,EAASiqG,EAAMp2F,EAEnB,GAAI7T,EAAS5O,EAAQ64G,GAAK,KAAOz6G,EAAQw6G,EACvC,OAAO75G,KAMT,GAHAioG,EAAO2R,IACNC,IAAYhqG,IAAWo4F,EAAO0R,GAE3BE,GAAmB,IAARn2F,EACb,OAAO,IAAIs2F,GAAUX,EAASr5G,KAAK05G,QAASz4G,EAAc,EAAN64G,IAGtD,IAAII,EAAab,GAAWA,IAAYr5G,KAAKq5G,QACzCc,EAAaD,EAAaj5G,EAAU0zG,EAAQ1zG,GAYhD,OAVI4O,EACEgqG,EACFC,IAAQp2F,EAAM,EAAIy2F,EAAW33F,MAAS23F,EAAWL,GAAOK,EAAW33F,MAEnE23F,EAAWL,GAAO,CAAC34G,EAAK9B,GAG1B86G,EAAW10G,KAAK,CAACtE,EAAK9B,IAGpB66G,GACFl6G,KAAKiB,QAAUk5G,EACRn6G,MAGF,IAAIi8G,GAAkB5C,EAASr5G,KAAK05G,QAASS,IAYtDH,GAAUx3G,UAAUH,IAAM,SAAS83C,EAAOu/D,EAASv4G,EAAKwsG,GACtD,OAAOiB,GAAGztG,EAAKnB,KAAKuS,MAAM,IAAMvS,KAAKuS,MAAM,GAAKo7F,GAGlDqM,GAAUx3G,UAAUitC,OAAS,SAAS4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GACxF,IAAIC,EAAUx6G,IAAU2oG,EACpBmU,EAAWvN,GAAGztG,EAAKnB,KAAKuS,MAAM,IAClC,OAAI4pG,EAAW98G,IAAUW,KAAKuS,MAAM,GAAKsnG,GAChC75G,MAGTioG,EAAO2R,GAEHC,OACF5R,EAAO0R,GAILwC,EACE9C,GAAWA,IAAYr5G,KAAKq5G,SAC9Br5G,KAAKuS,MAAM,GAAKlT,EACTW,MAEF,IAAIg6G,GAAUX,EAASr5G,KAAK05G,QAAS,CAACv4G,EAAK9B,KAGpD4oG,EAAO0R,GACAuC,GAAcl8G,KAAMq5G,EAASl/D,EAAOprC,GAAK5N,GAAM,CAACA,EAAK9B,OAOhEo6G,GAAaj3G,UAAU42G,QACvB6C,GAAkBz5G,UAAU42G,QAAU,SAAUpsG,EAAIggG,GAElD,IADA,IAAI/rG,EAAUjB,KAAKiB,QACV2sG,EAAK,EAAGwO,EAAWn7G,EAAQ8E,OAAS,EAAG6nG,GAAMwO,EAAUxO,IAC9D,IAAkD,IAA9C5gG,EAAG/L,EAAQ+rG,EAAUoP,EAAWxO,EAAKA,IACvC,OAAO,GAKbwM,GAAkB53G,UAAU42G,QAC5B2B,GAAiBv4G,UAAU42G,QAAU,SAAUpsG,EAAIggG,GAEjD,IADA,IAAIsN,EAAQt6G,KAAKs6G,MACR1M,EAAK,EAAGwO,EAAW9B,EAAMv0G,OAAS,EAAG6nG,GAAMwO,EAAUxO,IAAM,CAClE,IAAI3oG,EAAOq1G,EAAMtN,EAAUoP,EAAWxO,EAAKA,GAC3C,GAAI3oG,IAAsC,IAA9BA,EAAKm0G,QAAQpsG,EAAIggG,GAC3B,OAAO,IAKbgN,GAAUx3G,UAAU42G,QAAU,SAAUpsG,EAAIggG,GAC1C,OAAOhgG,EAAGhN,KAAKuS,QAGjBsoM,EAAY1hG,GAAajO,GAQvBiO,GAAY32G,UAAUi0C,KAAO,WAG3B,IAFA,IAAItwC,EAAOnG,KAAKs8G,MACZv1B,EAAQ/mF,KAAKw8G,OACVz1B,GAAO,CACZ,IAEIq1B,EAFAn3G,EAAO8hF,EAAM9hF,KACb7D,EAAQ2lF,EAAM3lF,QAElB,GAAI6D,EAAKsN,OACP,GAAc,IAAVnR,EACF,OAAOs7G,GAAiBv2G,EAAMlB,EAAKsN,YAEhC,GAAItN,EAAKhE,SAEd,GAAIG,IADJg7G,EAAWn3G,EAAKhE,QAAQ8E,OAAS,GAE/B,OAAO22G,GAAiBv2G,EAAMlB,EAAKhE,QAAQjB,KAAKu8G,SAAWH,EAAWh7G,EAAQA,SAIhF,GAAIA,IADJg7G,EAAWn3G,EAAKq1G,MAAMv0G,OAAS,GACR,CACrB,IAAI42G,EAAU13G,EAAKq1G,MAAMt6G,KAAKu8G,SAAWH,EAAWh7G,EAAQA,GAC5D,GAAIu7G,EAAS,CACX,GAAIA,EAAQpqG,MACV,OAAOmqG,GAAiBv2G,EAAMw2G,EAAQpqG,OAExCw0E,EAAQ/mF,KAAKw8G,OAASC,GAAiBE,EAAS51B,GAElD,SAGJA,EAAQ/mF,KAAKw8G,OAASx8G,KAAKw8G,OAAOI,OAEpC,MAniDK,CAAEv9G,WAAOyC,EAAWizF,MAAM,IAmyDnC,IAAIglB,GAAqBjS,EACrB8S,GAA0B9S,GAC1B8T,GAA0B9T,EAM5B,SAASuV,GAAKh+G,GACZ,IAAIi+G,EAAQC,KACZ,GAAIl+G,MAAAA,EACF,OAAOi+G,EAET,GAAIH,GAAO99G,GACT,OAAOA,EAET,IAAI8mB,EAAO40L,EAAgB17M,GACvB4N,EAAOkZ,EAAKlZ,KAChB,OAAa,IAATA,EACKqwG,GAETvI,GAAkB9nG,GACdA,EAAO,GAAKA,EAAO66F,EACd0V,GAAS,EAAGvwG,EA57Db,EA47D0B,KAAM,IAAIwwG,GAAMt3F,EAAKxc,YAEhD2zG,EAAMpG,eAAc,SAASjoB,GAClCA,EAAKyuB,QAAQzwG,GACbkZ,EAAKjlB,SAAQ,SAASy5B,EAAG/hB,GAAK,OAAOq2E,EAAK1pF,IAAIqT,EAAG+hB,UA4JvD,SAASwiF,GAAOC,GACd,SAAUA,IAAaA,EAAU4/F,KApLnCnC,EAAYx9F,GAAMtT,IA2BhBsT,GAAK7P,GAAK,WACR,OAAOxtG,KAAK+c,YAGdsgG,GAAK76G,UAAUqL,SAAW,WACxB,OAAO7N,KAAK2sG,WAAW,SAAU,MAKnC0Q,GAAK76G,UAAUH,IAAM,SAASjB,EAAOusG,GAEnC,IADAvsG,EAAQmnG,EAAUvoG,KAAMoB,KACX,GAAKA,EAAQpB,KAAKiN,KAAM,CAEnC,IAAIhI,EAAO04G,GAAY39G,KADvBoB,GAASpB,KAAKsqE,SAEd,OAAOrlE,GAAQA,EAAK+2C,MAAM56C,EAAQ2mG,GAEpC,OAAO4F,GAKT0P,GAAK76G,UAAU+C,IAAM,SAASnE,EAAO/B,GACnC,OA6SJ,SAAoB4vF,EAAM7tF,EAAO/B,GAG/B,IAFA+B,EAAQmnG,EAAUtZ,EAAM7tF,KAEVA,EACZ,OAAO6tF,EAGT,GAAI7tF,GAAS6tF,EAAKhiF,MAAQ7L,EAAQ,EAChC,OAAO6tF,EAAKioB,eAAc,SAASjoB,GACjC7tF,EAAQ,EACNw8G,GAAc3uB,EAAM7tF,GAAOmE,IAAI,EAAGlG,GAClCu+G,GAAc3uB,EAAM,EAAG7tF,EAAQ,GAAGmE,IAAInE,EAAO/B,MAInD+B,GAAS6tF,EAAK3kB,QAEd,IAAIuzC,EAAU5uB,EAAK6uB,MACfhB,EAAU7tB,EAAK4pB,MACfe,EAAW2hG,EAAQD,GAOvB,OANIl6M,GAAS28G,GAAc9uB,EAAK+uB,WAC9BH,EAAUI,GAAYJ,EAAS5uB,EAAKgoB,UAAW,EAAG71G,EAAO/B,EAAOu6G,GAEhEkD,EAAUmB,GAAYnB,EAAS7tB,EAAKgoB,UAAWhoB,EAAKivB,OAAQ98G,EAAO/B,EAAOu6G,GAGvEA,EAASv6G,MAIV4vF,EAAKgoB,WACPhoB,EAAK4pB,MAAQiE,EACb7tB,EAAK6uB,MAAQD,EACb5uB,EAAK+pB,YAASl3G,EACdmtF,EAAK0pB,WAAY,EACV1pB,GAEFuuB,GAASvuB,EAAK3kB,QAAS2kB,EAAK+uB,UAAW/uB,EAAKivB,OAAQpB,EAASe,GAV3D5uB,EAxUAkvB,CAAWn+G,KAAMoB,EAAO/B,IAGjCg+G,GAAK76G,UAAUy+B,OAAS,SAAS7/B,GAC/B,OAAQpB,KAAKkI,IAAI9G,GACL,IAAVA,EAAcpB,KAAKm6C,QACnB/4C,IAAUpB,KAAKiN,KAAO,EAAIjN,KAAKwiB,MAC/BxiB,KAAK+X,OAAO3W,EAAO,GAHKpB,MAM5Bq9G,GAAK76G,UAAU47G,OAAS,SAASh9G,EAAO/B,GACtC,OAAOW,KAAK+X,OAAO3W,EAAO,EAAG/B,IAG/Bg+G,GAAK76G,UAAUkwE,MAAQ,WACrB,OAAkB,IAAd1yE,KAAKiN,KACAjN,KAELA,KAAKi3G,WACPj3G,KAAKiN,KAAOjN,KAAKsqE,QAAUtqE,KAAKg+G,UAAY,EAC5Ch+G,KAAKk+G,OA/+DC,EAg/DNl+G,KAAK64G,MAAQ74G,KAAK89G,MAAQ,KAC1B99G,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEFu9G,MAGTF,GAAK76G,UAAUiD,KAAO,WACpB,IAAIsH,EAASgQ,UACTshG,EAAUr+G,KAAKiN,KACnB,OAAOjN,KAAKk3G,eAAc,SAASjoB,GACjC2uB,GAAc3uB,EAAM,EAAGovB,EAAUtxG,EAAOhH,QACxC,IAAK,IAAI6nG,EAAK,EAAGA,EAAK7gG,EAAOhH,OAAQ6nG,IACnC3e,EAAK1pF,IAAI84G,EAAUzQ,EAAI7gG,EAAO6gG,QAKpCyP,GAAK76G,UAAUggB,IAAM,WACnB,OAAOo7F,GAAc59G,KAAM,GAAI,IAGjCq9G,GAAK76G,UAAUg3C,QAAU,WACvB,IAAIzsC,EAASgQ,UACb,OAAO/c,KAAKk3G,eAAc,SAASjoB,GACjC2uB,GAAc3uB,GAAOliF,EAAOhH,QAC5B,IAAK,IAAI6nG,EAAK,EAAGA,EAAK7gG,EAAOhH,OAAQ6nG,IACnC3e,EAAK1pF,IAAIqoG,EAAI7gG,EAAO6gG,QAK1ByP,GAAK76G,UAAU23C,MAAQ,WACrB,OAAOyjE,GAAc59G,KAAM,IAK7Bq9G,GAAK76G,UAAU+K,MAAQ,WACrB,OAAO0vM,GAAkBj9M,UAAM8B,EAAWib,YAG5CsgG,GAAK76G,UAAUmL,UAAY,SAASC,GAClC,OAAOqvM,GAAkBj9M,KAAM4N,EADwBgtM,EAAQl4M,KAAKqa,UAAW,KAIjFsgG,GAAK76G,UAAU01G,UAAY,WACzB,OAAO+kG,GAAkBj9M,KAAMy3G,GAAY16F,YAG7CsgG,GAAK76G,UAAU21G,cAAgB,SAASvqG,GAAS,IAAImlG,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GACnF,OAAOkgM,GAAkBj9M,KAAM63G,GAAejqG,GAASmlG,IAGzDsK,GAAK76G,UAAUk7G,QAAU,SAASzwG,GAChC,OAAO2wG,GAAc59G,KAAM,EAAGiN,IAKhCowG,GAAK76G,UAAU6gB,MAAQ,SAASqlF,EAAO9d,GACrC,IAAI39E,EAAOjN,KAAKiN,KAChB,OAAIw7F,EAAWC,EAAO9d,EAAK39E,GAClBjN,KAEF49G,GACL59G,KACA4oG,EAAaF,EAAOz7F,GACpB67F,EAAWle,EAAK39E,KAIpBowG,GAAK76G,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACzC,IAAI5rG,EAAQ,EACR2L,EAAS0xG,GAAYz+G,KAAMgtG,GAC/B,OAAO,IAAI9B,GAAS,WAClB,IAAI7rG,EAAQ0N,IACZ,OAAO1N,IAAUq/G,GA57Dd,CAAEr/G,WAAOyC,EAAWizF,MAAM,GA87D3BoW,EAAchlG,EAAM/E,IAAS/B,OAInCg+G,GAAK76G,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAItC,IAHA,IAEI3tG,EAFA+B,EAAQ,EACR2L,EAAS0xG,GAAYz+G,KAAMgtG,IAEvB3tG,EAAQ0N,OAAc2xG,KACK,IAA7B1xG,EAAG3N,EAAO+B,IAASpB,QAIzB,OAAOoB,GAGTi8G,GAAK76G,UAAUi2G,cAAgB,SAASY,GACtC,OAAIA,IAAYr5G,KAAKi3G,UACZj3G,KAEJq5G,EAIEmE,GAASx9G,KAAKsqE,QAAStqE,KAAKg+G,UAAWh+G,KAAKk+G,OAAQl+G,KAAK64G,MAAO74G,KAAK89G,MAAOzE,EAASr5G,KAAKg5G,SAH/Fh5G,KAAKi3G,UAAYoC,EACVr5G,OAUbq9G,GAAKF,OAASA,GAEd,IAAI6/F,GAAmB,yBAEnBr+F,GAAgBtB,GAAK76G,UAiBvB,SAASi7G,GAAMzhE,EAAOq9D,GACpBr5G,KAAKg8C,MAAQA,EACbh8C,KAAKq5G,QAAUA,EAlBnBsF,GAAcq+F,KAAoB,EAClCr+F,GAAoB,OAAIA,GAAc19E,OACtC09E,GAAcpI,MAAQgD,GAAahD,MACnCoI,GAAclI,SACdkI,GAAcnI,SAAW+C,GAAa/C,SACtCmI,GAAclvE,OAAS8pE,GAAa9pE,OACpCkvE,GAAchI,SAAW4C,GAAa5C,SACtCgI,GAAcvG,QAAUmB,GAAanB,QACrCuG,GAActG,YAAckB,GAAalB,YACzCsG,GAAczH,cAAgBqC,GAAarC,cAC3CyH,GAAcpG,UAAYgB,GAAahB,UACvCoG,GAAcjG,YAAca,GAAab,YACzCiG,GAAcnG,WAAae,GAAaf,WAWtCiF,GAAMj7G,UAAUo8G,aAAe,SAASvF,EAAS1/F,EAAOvY,GACtD,GAAIA,IAAUuY,EAAQ,GAAKA,EAAmC,IAAtB3Z,KAAKg8C,MAAMj2C,OACjD,OAAO/F,KAET,IAAI6+G,EAAez9G,IAAUuY,EAASouF,EACtC,GAAI8W,GAAe7+G,KAAKg8C,MAAMj2C,OAC5B,OAAO,IAAI03G,GAAM,GAAIpE,GAEvB,IACIyF,EADAC,EAAgC,IAAhBF,EAEpB,GAAIllG,EAAQ,EAAG,CACb,IAAIqlG,EAAWh/G,KAAKg8C,MAAM6iE,GAE1B,IADAC,EAAWE,GAAYA,EAASJ,aAAavF,EAAS1/F,EAxoEhD,EAwoE+DvY,MACpD49G,GAAYD,EAC3B,OAAO/+G,KAGX,GAAI++G,IAAkBD,EACpB,OAAO9+G,KAET,IAAIi/G,EAAWC,GAAcl/G,KAAMq5G,GACnC,IAAK0F,EACH,IAAK,IAAInR,EAAK,EAAGA,EAAKiR,EAAajR,IACjCqR,EAASjjE,MAAM4xD,QAAM9rG,EAMzB,OAHIg9G,IACFG,EAASjjE,MAAM6iE,GAAeC,GAEzBG,GAGTxB,GAAMj7G,UAAU28G,YAAc,SAAS9F,EAAS1/F,EAAOvY,GACrD,GAAIA,KAAWuY,EAAQ,GAAKA,EAAQ,IAA4B,IAAtB3Z,KAAKg8C,MAAMj2C,OACnD,OAAO/F,KAET,IAKI8+G,EALAM,EAAch+G,EAAQ,IAAOuY,EAASouF,EAC1C,GAAIqX,GAAap/G,KAAKg8C,MAAMj2C,OAC1B,OAAO/F,KAIT,GAAI2Z,EAAQ,EAAG,CACb,IAAIqlG,EAAWh/G,KAAKg8C,MAAMojE,GAE1B,IADAN,EAAWE,GAAYA,EAASG,YAAY9F,EAAS1/F,EAxqE/C,EAwqE8DvY,MACnD49G,GAAYI,IAAcp/G,KAAKg8C,MAAMj2C,OAAS,EAC7D,OAAO/F,KAIX,IAAIi/G,EAAWC,GAAcl/G,KAAMq5G,GAKnC,OAJA4F,EAASjjE,MAAMjkC,OAAOqnG,EAAY,GAC9BN,IACFG,EAASjjE,MAAMojE,GAAaN,GAEvBG,GAKX,IA2EII,GAiWAsB,GA5aAjC,GAAO,GAEX,SAASD,GAAYxvB,EAAM+d,GACzB,IAAIv/F,EAAOwhF,EAAK3kB,QACZ58D,EAAQuhF,EAAK+uB,UACbsB,EAAUvB,GAAcrwG,GACxB6xG,EAAOtwB,EAAK6uB,MAEhB,OAAO0B,EAAkBvwB,EAAK4pB,MAAO5pB,EAAKivB,OAAQ,GAElD,SAASsB,EAAkBv6G,EAAM0U,EAAOwF,GACtC,OAAiB,IAAVxF,EAKT,SAAqB1U,EAAMka,GACzB,IAAI68B,EAAQ78B,IAAWmgG,EAAUC,GAAQA,EAAKvjE,MAAQ/2C,GAAQA,EAAK+2C,MAC/DtkB,EAAOvY,EAAS1R,EAAO,EAAIA,EAAO0R,EAClCs2F,EAAK/nG,EAAQyR,EAIjB,OAHIs2F,EAAK3N,IACP2N,EAAK3N,GAEA,WACL,GAAIpwE,IAAS+9E,EACX,OAAOiJ,GAET,IAAI5E,EAAM9M,IAAYyI,EAAK/9E,IAC3B,OAAOskB,GAASA,EAAM89D,IAhBtB2F,CAAYx6G,EAAMka,GAoBtB,SAAqBla,EAAM0U,EAAOwF,GAChC,IAAIpS,EACAivC,EAAQ/2C,GAAQA,EAAK+2C,MACrBtkB,EAAOvY,EAAS1R,EAAO,EAAKA,EAAO0R,GAAWxF,EAC9C87F,EAAmC,GAA5B/nG,EAAQyR,GAAWxF,GAI9B,OAHI87F,EAAK3N,IACP2N,EAAK3N,GAEA,WACL,OAAG,CACD,GAAI/6F,EAAQ,CACV,IAAI1N,EAAQ0N,IACZ,GAAI1N,IAAUq/G,GACZ,OAAOr/G,EAET0N,EAAS,KAEX,GAAI2qB,IAAS+9E,EACX,OAAOiJ,GAET,IAAI5E,EAAM9M,IAAYyI,EAAK/9E,IAC3B3qB,EAASyyG,EACPxjE,GAASA,EAAM89D,GAAMngG,EA9uEnB,EA8uEkCwF,GAAU26F,GAAOngG,MAzCzD+lG,CAAYz6G,EAAM0U,EAAOwF,IAgD/B,SAASq+F,GAASrzE,EAAQw1E,EAAUhmG,EAAOmvE,EAAMy2B,EAAMlG,EAAStqG,GAC9D,IAAIkgF,EAAO/vF,OAAOuC,OAAOk9G,IAUzB,OATA1vB,EAAKhiF,KAAO0yG,EAAWx1E,EACvB8kD,EAAK3kB,QAAUngC,EACf8kD,EAAK+uB,UAAY2B,EACjB1wB,EAAKivB,OAASvkG,EACds1E,EAAK4pB,MAAQ/vB,EACbmG,EAAK6uB,MAAQyB,EACbtwB,EAAKgoB,UAAYoC,EACjBpqB,EAAK+pB,OAASjqG,EACdkgF,EAAK0pB,WAAY,EACV1pB,EAIT,SAASsuB,KACP,OAAO8B,KAAeA,GAAa7B,GAAS,EAAG,EArwErC,IAgzEZ,SAASS,GAAYh5G,EAAMo0G,EAAS1/F,EAAOvY,EAAO/B,EAAOu6G,GACvD,IAMIc,EANAZ,EAAO14G,IAAUuY,EAASouF,EAC1B6X,EAAU36G,GAAQ60G,EAAM70G,EAAK+2C,MAAMj2C,OACvC,IAAK65G,QAAqB99G,IAAVzC,EACd,OAAO4F,EAKT,GAAI0U,EAAQ,EAAG,CACb,IAAIkmG,EAAY56G,GAAQA,EAAK+2C,MAAM89D,GAC/BgG,EAAe7B,GAAY4B,EAAWxG,EAAS1/F,EA3zE3C,EA2zE0DvY,EAAO/B,EAAOu6G,GAChF,OAAIkG,IAAiBD,EACZ56G,IAETy1G,EAAUwE,GAAcj6G,EAAMo0G,IACtBr9D,MAAM89D,GAAOgG,EACdpF,GAGT,OAAIkF,GAAW36G,EAAK+2C,MAAM89D,KAASz6G,EAC1B4F,GAGTgjG,EAAO2R,GAEPc,EAAUwE,GAAcj6G,EAAMo0G,QAChBv3G,IAAVzC,GAAuBy6G,IAAQY,EAAQ1+D,MAAMj2C,OAAS,EACxD20G,EAAQ1+D,MAAMx5B,MAEdk4F,EAAQ1+D,MAAM89D,GAAOz6G,EAEhBq7G,GAGT,SAASwE,GAAcj6G,EAAMo0G,GAC3B,OAAIA,GAAWp0G,GAAQo0G,IAAYp0G,EAAKo0G,QAC/Bp0G,EAEF,IAAIw4G,GAAMx4G,EAAOA,EAAK+2C,MAAM34B,QAAU,GAAIg2F,GAGnD,SAASsE,GAAY1uB,EAAM8wB,GACzB,GAAIA,GAAYhC,GAAc9uB,EAAK+uB,WACjC,OAAO/uB,EAAK6uB,MAEd,GAAIiC,EAAW,GAAM9wB,EAAKivB,OA91EhB,EA81EiC,CAGzC,IAFA,IAAIj5G,EAAOgqF,EAAK4pB,MACZl/F,EAAQs1E,EAAKivB,OACVj5G,GAAQ0U,EAAQ,GACrB1U,EAAOA,EAAK+2C,MAAO+jE,IAAapmG,EAASouF,GACzCpuF,GAn2EM,EAq2ER,OAAO1U,GAIX,SAAS24G,GAAc3uB,EAAMyZ,EAAO9d,QAGpB9oF,IAAV4mG,IACFA,GAAgB,QAEN5mG,IAAR8oF,IACFA,GAAY,GAEd,IAAIo1B,EAAQ/wB,EAAKgoB,WAAa,IAAI9O,EAC9B8X,EAAYhxB,EAAK3kB,QACjB41C,EAAcjxB,EAAK+uB,UACnBmC,EAAYF,EAAYvX,EACxB0X,OAAsBt+G,IAAR8oF,EAAoBs1B,EAAct1B,EAAM,EAAIs1B,EAAct1B,EAAMq1B,EAAYr1B,EAC9F,GAAIu1B,IAAcF,GAAaG,IAAgBF,EAC7C,OAAOjxB,EAIT,GAAIkxB,GAAaC,EACf,OAAOnxB,EAAKvc,QAQd,IALA,IAAI2tC,EAAWpxB,EAAKivB,OAChBpB,EAAU7tB,EAAK4pB,MAGfyH,EAAc,EACXH,EAAYG,EAAc,GAC/BxD,EAAU,IAAIW,GAAMX,GAAWA,EAAQ9gE,MAAMj2C,OAAS,MAACjE,EAAWg7G,GAAW,GAAIkD,GAEjFM,GAAe,IADfD,GAv4EQ,GA04ENC,IACFH,GAAaG,EACbL,GAAaK,EACbF,GAAeE,EACfJ,GAAeI,GAOjB,IAJA,IAAIC,EAAgBxC,GAAcmC,GAC9BM,EAAgBzC,GAAcqC,GAG3BI,GAAiB,GAAMH,EAr5EpB,GAs5ERvD,EAAU,IAAIW,GAAMX,GAAWA,EAAQ9gE,MAAMj2C,OAAS,CAAC+2G,GAAW,GAAIkD,GACtEK,GAv5EQ,EA25EV,IAAII,EAAUxxB,EAAK6uB,MACfD,EAAU2C,EAAgBD,EAC5B5C,GAAY1uB,EAAMmxB,EAAc,GAChCI,EAAgBD,EAAgB,IAAI9C,GAAM,GAAIuC,GAASS,EAGzD,GAAIA,GAAWD,EAAgBD,GAAiBJ,EAAYD,GAAeO,EAAQzkE,MAAMj2C,OAAQ,CAG/F,IADA,IAAId,EADJ63G,EAAUoC,GAAcpC,EAASkD,GAExBrmG,EAAQ0mG,EAAU1mG,EAp6EnB,EAo6EkCA,GAp6ElC,EAo6EkD,CACxD,IAAImgG,EAAOyG,IAAkB5mG,EAASouF,EACtC9iG,EAAOA,EAAK+2C,MAAM89D,GAAOoF,GAAcj6G,EAAK+2C,MAAM89D,GAAMkG,GAE1D/6G,EAAK+2C,MAAOukE,IAx6EJ,EAw6E+BxY,GAAQ0Y,EASjD,GALIL,EAAcF,IAChBrC,EAAUA,GAAWA,EAAQsB,YAAYa,EAAO,EAAGI,IAIjDD,GAAaK,EACfL,GAAaK,EACbJ,GAAeI,EACfH,EAp7EQ,EAq7ERvD,EAAU,KACVe,EAAUA,GAAWA,EAAQe,aAAaoB,EAAO,EAAGG,QAG/C,GAAIA,EAAYF,GAAaO,EAAgBD,EAAe,CAIjE,IAHAD,EAAc,EAGPxD,GAAS,CACd,IAAI4D,EAAcP,IAAcE,EAAYtY,EAC5C,GAAI2Y,IAAgBF,IAAkBH,EAAYtY,EAChD,MAEE2Y,IACFJ,IAAgB,GAAKD,GAAYK,GAEnCL,GAr8EM,EAs8ENvD,EAAUA,EAAQ9gE,MAAM0kE,GAItB5D,GAAWqD,EAAYF,IACzBnD,EAAUA,EAAQ8B,aAAaoB,EAAOK,EAAUF,EAAYG,IAE1DxD,GAAW0D,EAAgBD,IAC7BzD,EAAUA,EAAQqC,YAAYa,EAAOK,EAAUG,EAAgBF,IAE7DA,IACFH,GAAaG,EACbF,GAAeE,GAInB,OAAIrxB,EAAKgoB,WACPhoB,EAAKhiF,KAAOmzG,EAAcD,EAC1BlxB,EAAK3kB,QAAU61C,EACflxB,EAAK+uB,UAAYoC,EACjBnxB,EAAKivB,OAASmC,EACdpxB,EAAK4pB,MAAQiE,EACb7tB,EAAK6uB,MAAQD,EACb5uB,EAAK+pB,YAASl3G,EACdmtF,EAAK0pB,WAAY,EACV1pB,GAEFuuB,GAAS2C,EAAWC,EAAaC,EAAUvD,EAASe,GAG7D,SAASo/F,GAAkBhuH,EAAMrhF,EAAQ8uM,GAGvC,IAFA,IAAI3pG,EAAQ,GACRmqG,EAAU,EACLtvG,EAAK,EAAGA,EAAK8uG,EAAU32M,OAAQ6nG,IAAM,CAC5C,IAAIvuG,EAAQq9M,EAAU9uG,GAClBznF,EAAO40L,EAAgB17M,GACvB8mB,EAAKlZ,KAAOiwM,IACdA,EAAU/2L,EAAKlZ,MAEZ23G,EAAWvlH,KACd8mB,EAAOA,EAAKngB,KAAI,SAAS20B,GAAK,OAAOixF,GAAOjxF,OAE9Co4E,EAAMttG,KAAK0gB,GAKb,OAHI+2L,EAAUjuH,EAAKhiF,OACjBgiF,EAAOA,EAAKyuB,QAAQw/F,IAEfP,GAAwB1tH,EAAMrhF,EAAQmlG,GAG/C,SAASgL,GAAc9wG,GACrB,OAAOA,EAAO66F,EAAO,EAAO76F,EAAO,IAz/EzB,KAggFV,SAASgsG,GAAW55G,GAClB,OAAOA,MAAAA,EAAwCuhH,KAC7CrS,GAAalvG,GAASA,EACtBuhH,KAAkB1J,eAAc,SAASlxG,GACvC,IAAImgB,EAAO20L,EAAcz7M,GACzB01G,GAAkB5uF,EAAKlZ,MACvBkZ,EAAKjlB,SAAQ,SAASy5B,EAAG/4B,GAAK,OAAOoE,EAAIT,IAAI3D,EAAG+4B,SAyExD,SAAS4zE,GAAaC,GACpB,OAAOH,GAAMG,IAAoB1D,EAAU0D,GAU7C,SAASyS,GAAej7G,EAAKipF,EAAMoqB,EAAStqG,GAC1C,IAAImyG,EAAOhiH,OAAOuC,OAAOw3G,GAAWz2G,WAMpC,OALA0+G,EAAKj0G,KAAOjH,EAAMA,EAAIiH,KAAO,EAC7Bi0G,EAAK9wE,KAAOpqC,EACZk7G,EAAKL,MAAQ5xB,EACbiyB,EAAKjK,UAAYoC,EACjB6H,EAAKlI,OAASjqG,EACPmyG,EAIT,SAASN,KACP,OAAOD,KAAsBA,GAAoBM,GAAe5K,KAAYkH,OAG9E,SAASuD,GAAiBI,EAAMt/G,EAAG+4B,GACjC,IAIIomF,EACAC,EALAh7G,EAAMk7G,EAAK9wE,KACX6+C,EAAOiyB,EAAKL,MACZjoG,EAAI5S,EAAI3D,IAAIT,GACZsG,OAAYpG,IAAN8W,EAGV,GAAI+hB,IAAMqtE,EAAS,CACjB,IAAK9/F,EACH,OAAOg5G,EAELjyB,EAAKhiF,MAAQ66F,GAAQ7Y,EAAKhiF,MAAmB,EAAXjH,EAAIiH,MAExC8zG,GADAC,EAAU/xB,EAAK3hF,QAAO,SAASiF,EAAOunG,GAAO,YAAiBh4G,IAAVyQ,GAAuBqG,IAAMkhG,MAChE1M,aAAapnG,KAAI,SAASuM,GAAS,OAAOA,EAAM,MAAKs/F,OAAOsP,QACzED,EAAKjK,YACP8J,EAAO9J,UAAY+J,EAAQ/J,UAAYiK,EAAKjK,aAG9C8J,EAAS/6G,EAAIi7B,OAAOr/B,GACpBo/G,EAAUpoG,IAAMq2E,EAAKhiF,KAAO,EAAIgiF,EAAKzsE,MAAQysE,EAAK1pF,IAAIqT,OAAG9W,SAG3D,GAAIoG,EAAK,CACP,GAAIyyB,IAAMs0D,EAAK5sF,IAAIuW,GAAG,GACpB,OAAOsoG,EAETH,EAAS/6G,EACTg7G,EAAU/xB,EAAK1pF,IAAIqT,EAAG,CAAChX,EAAG+4B,SAE1BomF,EAAS/6G,EAAIT,IAAI3D,EAAGqtF,EAAKhiF,MACzB+zG,EAAU/xB,EAAK1pF,IAAI0pF,EAAKhiF,KAAM,CAACrL,EAAG+4B,IAGtC,OAAIumF,EAAKjK,WACPiK,EAAKj0G,KAAO8zG,EAAO9zG,KACnBi0G,EAAK9wE,KAAO2wE,EACZG,EAAKL,MAAQG,EACbE,EAAKlI,YAASl3G,EACPo/G,GAEFD,GAAeF,EAAQC,GAI9B,SAASvQ,GAAgBC,EAASC,GAChC3wG,KAAK4wG,MAAQF,EACb1wG,KAAK6wG,SAAWF,EAChB3wG,KAAKiN,KAAOyjG,EAAQzjG,KA2DtB,SAASokG,GAAkBlrF,GACzBnmB,KAAK4wG,MAAQzqF,EACbnmB,KAAKiN,KAAOkZ,EAAKlZ,KAyBnB,SAASqkG,GAAcnrF,GACrBnmB,KAAK4wG,MAAQzqF,EACbnmB,KAAKiN,KAAOkZ,EAAKlZ,KAuBnB,SAASskG,GAAoBtwG,GAC3BjB,KAAK4wG,MAAQ3vG,EACbjB,KAAKiN,KAAOhM,EAAQgM,KAwDxB,SAASykG,GAAY3jG,GACnB,IAAI4jG,EAAeC,GAAa7jG,GAiChC,OAhCA4jG,EAAaf,MAAQ7iG,EACrB4jG,EAAa1kG,KAAOc,EAASd,KAC7B0kG,EAAaE,KAAO,WAAa,OAAO9jG,GACxC4jG,EAAa3E,QAAU,WACrB,IAAIgE,EAAmBjjG,EAASi/F,QAAQ3sF,MAAMrgB,MAE9C,OADAgxG,EAAiBa,KAAO,WAAa,OAAO9jG,EAASi/F,WAC9CgE,GAETW,EAAazpG,IAAM,SAAS/G,GAAO,OAAO4M,EAAS+K,SAAS3X,IAC5DwwG,EAAa74F,SAAW,SAAS3X,GAAO,OAAO4M,EAAS7F,IAAI/G,IAC5DwwG,EAAa/E,YAAckF,GAC3BH,EAAa7E,kBAAoB,SAAU9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACpE,OAAO+N,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAAK,OAA4B,IAArBoL,EAAGpL,EAAG+4B,EAAGwhL,KAAoBnvG,IAEjF2E,EAAaxE,mBAAqB,SAAShnG,EAAM6mG,GAC/C,GArvFkB,IAqvFd7mG,EAA0B,CAC5B,IAAIgH,EAAWY,EAASm/F,WAAW/mG,EAAM6mG,GACzC,OAAO,IAAI9B,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,IAAK03D,EAAKpZ,KAAM,CACd,IAAInzF,EAAIusG,EAAK9uG,MAAM,GACnB8uG,EAAK9uG,MAAM,GAAK8uG,EAAK9uG,MAAM,GAC3B8uG,EAAK9uG,MAAM,GAAKuC,EAElB,OAAOusG,KAGX,OAAOpgG,EAASm/F,WAlwFC,IAmwFf/mG,EApwFa,EACE,EAowFf6mG,IAGG2E,EAIT,SAASP,GAAWrjG,EAAUmjG,EAAQ/wG,GACpC,IAAIgxG,EAAiBS,GAAa7jG,GAgClC,OA/BAojG,EAAelkG,KAAOc,EAASd,KAC/BkkG,EAAejpG,IAAM,SAAS/G,GAAO,OAAO4M,EAAS7F,IAAI/G,IACzDgwG,EAAe9uG,IAAM,SAASlB,EAAKwsG,GACjC,IAAIhzE,EAAI5sB,EAAS1L,IAAIlB,EAAK6mG,GAC1B,OAAOrtE,IAAMqtE,EACX2F,EACAuD,EAAOxuG,KAAKvC,EAASw6B,EAAGx5B,EAAK4M,IAEjCojG,EAAerE,kBAAoB,SAAU9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACtE,OAAO+N,EAASs6F,WACd,SAAS1tE,EAAG/4B,EAAGmf,GAAK,OAAwD,IAAjD/T,EAAGkkG,EAAOxuG,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,GAAInf,EAAGu6M,KAChEnvG,IAGJmE,EAAehE,mBAAqB,SAAUhnG,EAAM6mG,GAClD,IAAI7/F,EAAWY,EAASm/F,WA3xFN,EA2xFkCF,GACpD,OAAO,IAAI9B,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,GAAI03D,EAAKpZ,KACP,OAAOoZ,EAET,IAAI57F,EAAQ47F,EAAK9uG,MACb8B,EAAMoR,EAAM,GAChB,OAAO44F,EACLhlG,EACAhF,EACA+vG,EAAOxuG,KAAKvC,EAASoS,EAAM,GAAIpR,EAAK4M,GACpCogG,OAICgD,EAIT,SAASF,GAAeljG,EAAU4iG,GAChC,IAAIK,EAAmBY,GAAa7jG,GAsBpC,OArBAijG,EAAiBJ,MAAQ7iG,EACzBijG,EAAiB/jG,KAAOc,EAASd,KACjC+jG,EAAiBhE,QAAU,WAAa,OAAOj/F,GAC3CA,EAAS8jG,OACXb,EAAiBa,KAAO,WACtB,IAAIF,EAAeD,GAAY3jG,GAE/B,OADA4jG,EAAa3E,QAAU,WAAa,OAAOj/F,EAAS8jG,QAC7CF,IAGXX,EAAiB3uG,IAAM,SAASlB,EAAKwsG,GAClC,OAAO5/F,EAAS1L,IAAIsuG,EAAUxvG,GAAO,EAAIA,EAAKwsG,IACjDqD,EAAiB9oG,IAAM,SAAS/G,GAC7B,OAAO4M,EAAS7F,IAAIyoG,EAAUxvG,GAAO,EAAIA,IAC5C6vG,EAAiBl4F,SAAW,SAASzZ,GAAS,OAAO0O,EAAS+K,SAASzZ,IACvE2xG,EAAiBpE,YAAckF,GAC/Bd,EAAiB3I,UAAY,SAAUr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAChE,OAAO+N,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAAK,OAAOoL,EAAG2tB,EAAG/4B,EAAGu6M,MAAWnvG,IAExEgE,EAAiB9D,WACf,SAAS/mG,EAAM6mG,GAAW,OAAOj/F,EAASm/F,WAAW/mG,GAAO6mG,IACvDgE,EAIT,SAASe,GAAchkG,EAAUpH,EAAWxG,EAASwwG,GACnD,IAAIqB,EAAiBJ,GAAa7jG,GAwClC,OAvCI4iG,IACFqB,EAAe9pG,IAAM,SAAS/G,GAC5B,IAAIw5B,EAAI5sB,EAAS1L,IAAIlB,EAAK6mG,GAC1B,OAAOrtE,IAAMqtE,KAAarhG,EAAUjE,KAAKvC,EAASw6B,EAAGx5B,EAAK4M,IAE5DikG,EAAe3vG,IAAM,SAASlB,EAAKwsG,GACjC,IAAIhzE,EAAI5sB,EAAS1L,IAAIlB,EAAK6mG,GAC1B,OAAOrtE,IAAMqtE,GAAWrhG,EAAUjE,KAAKvC,EAASw6B,EAAGx5B,EAAK4M,GACtD4sB,EAAIgzE,IAGVqE,EAAelF,kBAAoB,SAAU9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAClEimB,EAAa,EAOjB,OANAlY,EAASs6F,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GAChC,GAAIpa,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,GAEhC,OADAkF,IACOjZ,EAAG2tB,EAAGg2E,EAAU/uG,EAAIqkB,EAAa,EAAGk2L,KAE5CnvG,GACI/mF,GAET+rF,EAAe7E,mBAAqB,SAAUhnG,EAAM6mG,GAClD,IAAI7/F,EAAWY,EAASm/F,WAl2FN,EAk2FkCF,GAChD/mF,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,OAAa,CACX,IAAIiD,EAAOhhG,EAASspC,OACpB,GAAI03D,EAAKpZ,KACP,OAAOoZ,EAET,IAAI57F,EAAQ47F,EAAK9uG,MACb8B,EAAMoR,EAAM,GACZlT,EAAQkT,EAAM,GAClB,GAAI5L,EAAUjE,KAAKvC,EAASd,EAAO8B,EAAK4M,GACtC,OAAOo9F,EAAchlG,EAAMwqG,EAAUxvG,EAAM8kB,IAAc5mB,EAAO8uG,QAKjE6D,EA+BT,SAASC,GAAalkG,EAAU26F,EAAO9d,EAAK+lB,GAC1C,IAAIuB,EAAenkG,EAASd,KAe5B,QAXcnL,IAAV4mG,IACFA,GAAgB,QAEN5mG,IAAR8oF,IACEA,IAAQkI,EAAAA,EACVlI,EAAMsnB,EAENtnB,GAAY,GAIZ6d,EAAWC,EAAO9d,EAAKsnB,GACzB,OAAOnkG,EAGT,IAAIokG,EAAgBvJ,EAAaF,EAAOwJ,GACpCE,EAActJ,EAAWle,EAAKsnB,GAKlC,GAAIC,GAAkBA,GAAiBC,GAAgBA,EACrD,OAAOH,GAAalkG,EAASq+F,QAAQQ,cAAelE,EAAO9d,EAAK+lB,GAOlE,IACI0B,EADAC,EAAeF,EAAcD,EAE7BG,GAAiBA,IACnBD,EAAYC,EAAe,EAAI,EAAIA,GAGrC,IAAIC,EAAWX,GAAa7jG,GA6D5B,OAzDAwkG,EAAStlG,KAAqB,IAAdolG,EAAkBA,EAAYtkG,EAASd,MAAQolG,QAAavwG,GAEvE6uG,GAAWrG,GAAMv8F,IAAaskG,GAAa,IAC9CE,EAASlwG,IAAM,SAAUjB,EAAOusG,GAE9B,OADAvsG,EAAQmnG,EAAUvoG,KAAMoB,KACR,GAAKA,EAAQixG,EAC3BtkG,EAAS1L,IAAIjB,EAAQ+wG,EAAexE,GACpCA,IAIN4E,EAASzF,kBAAoB,SAAS9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAC/D,GAAkB,IAAdqyG,EACF,OAAO,EAET,GAAIrF,EACF,OAAOhtG,KAAK4sG,cAAcvE,UAAUr7F,EAAIggG,GAE1C,IAAIwF,EAAU,EACVC,GAAa,EACbxsF,EAAa,EAQjB,OAPAlY,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAC7B,IAAM6wG,KAAeA,EAAaD,IAAYL,GAE5C,OADAlsF,KACuD,IAAhDjZ,EAAG2tB,EAAGg2E,EAAU/uG,EAAIqkB,EAAa,EAAGk2L,IACpCl2L,IAAeosF,KAGnBpsF,GAGTssF,EAASpF,mBAAqB,SAAShnG,EAAM6mG,GAC3C,GAAkB,IAAdqF,GAAmBrF,EACrB,OAAOhtG,KAAK4sG,cAAcM,WAAW/mG,EAAM6mG,GAG7C,IAAI7/F,EAAyB,IAAdklG,GAAmBtkG,EAASm/F,WAAW/mG,EAAM6mG,GACxDwF,EAAU,EACVvsF,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,KAAOsH,IAAYL,GACjBhlG,EAASspC,OAEX,KAAMxwB,EAAaosF,EACjB,MAr8FC,CAAEhzG,WAAOyC,EAAWizF,MAAM,GAu8F7B,IAAIoZ,EAAOhhG,EAASspC,OACpB,OAAIk6D,GA9+FW,IA8+FAxqG,EACNgoG,EAEAhD,EAAchlG,EAAM8f,EAAa,EAl/F7B,IAi/FF9f,OACkCrE,EAEAqsG,EAAK9uG,MAAM,GAFA8uG,OAOrDoE,EA6CT,SAASG,GAAiB3kG,EAAUpH,EAAWxG,EAASwwG,GACtD,IAAIgC,EAAef,GAAa7jG,GA4ChC,OA3CA4kG,EAAa7F,kBAAoB,SAAU9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACpE,GAAIgtG,EACF,OAAOhtG,KAAK4sG,cAAcvE,UAAUr7F,EAAIggG,GAE1C,IAAIyF,GAAa,EACbxsF,EAAa,EAOjB,OANAlY,EAASs6F,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GAChC,IAAM0xF,KAAeA,EAAa9rG,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,IAE9D,OADAkF,IACOjZ,EAAG2tB,EAAGg2E,EAAU/uG,EAAIqkB,EAAa,EAAGk2L,MAGxCl2L,GAET0sF,EAAaxF,mBAAqB,SAAShnG,EAAM6mG,GAAU,IAAImvG,EAASn8M,KACtE,GAAIgtG,EACF,OAAOhtG,KAAK4sG,cAAcM,WAAW/mG,EAAM6mG,GAE7C,IAAI7/F,EAAWY,EAASm/F,WAxjGN,EAwjGkCF,GAChD4F,GAAW,EACX3sF,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,IAAIiD,EAAMvsG,EAAG+4B,EACb,EAAG,CAED,IADAwzE,EAAOhhG,EAASspC,QACPs+C,KACP,OAAI4b,GAjkGO,IAikGIxqG,EACNgoG,EAEAhD,EAAchlG,EAAM8f,IArkGpB,IAokGE9f,OACgCrE,EAEAqsG,EAAK9uG,MAAM,GAFA8uG,GAKxD,IAAI57F,EAAQ47F,EAAK9uG,MACjBuC,EAAI2Q,EAAM,GACVooB,EAAIpoB,EAAM,GACVqgG,IAAaA,EAAWjsG,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGu6M,UAC/CvpG,GACT,OA7kGgB,IA6kGTzsG,EAA2BgoG,EAChChD,EAAchlG,EAAMvE,EAAG+4B,EAAGwzE,OAGzBwE,EAIT,SAASE,GAAc9kG,EAAUhB,GAC/B,IAAIowM,EAAkB/zG,EAAQr7F,GAC1BglG,EAAQ,CAAChlG,GAAU0Q,OAAO1R,GAAQ/G,KAAI,SAAS20B,GAQjD,OAPKiqF,EAAWjqF,GAILwiL,IACTxiL,EAAImgL,EAAcngL,IAJlBA,EAAIwiL,EACF9vG,GAAkB1yE,GAClB4yE,GAAoBzxF,MAAMC,QAAQ4e,GAAKA,EAAI,CAACA,IAIzCA,KACNrtB,QAAO,SAASqtB,GAAK,OAAkB,IAAXA,EAAE1tB,QAEjC,GAAqB,IAAjB8lG,EAAMhtG,OACR,OAAOgI,EAGT,GAAqB,IAAjBglG,EAAMhtG,OAAc,CACtB,IAAIitG,EAAYD,EAAM,GACtB,GAAIC,IAAcjlG,GACdovM,GAAmB/zG,EAAQ4J,IAC3BzJ,EAAUx7F,IAAaw7F,EAAUyJ,GACnC,OAAOA,EAIX,IAAIC,EAAY,IAAIxF,EAASsF,GAkB7B,OAjBIoqG,EACFlqG,EAAYA,EAAU7F,aACZ7D,EAAUx7F,KACpBklG,EAAYA,EAAUzG,aAExByG,EAAYA,EAAUC,SAAQ,IACpBjmG,KAAO8lG,EAAMx5F,QACrB,SAAS45F,EAAKr7C,GACZ,QAAYh2D,IAARqxG,EAAmB,CACrB,IAAIlmG,EAAO6qD,EAAI7qD,KACf,QAAanL,IAATmL,EACF,OAAOkmG,EAAMlmG,KAInB,GAEKgmG,EAIT,SAASG,GAAerlG,EAAUslG,EAAO1C,GACvC,IAAI2C,EAAe1B,GAAa7jG,GA0ChC,OAzCAulG,EAAaxG,kBAAoB,SAAS9/F,EAAIggG,GAC5C,IAAI/mF,EAAa,EACbstF,GAAU,EAYd,OAXA,SAASC,EAASrtF,EAAMstF,GAAe,IAAI0oG,EAASn8M,KAClDmmB,EAAKkiF,WAAU,SAAS1tE,EAAG/4B,GAMzB,QALMyxG,GAASI,EAAeJ,IAAUuR,EAAWjqF,GACjD64E,EAAS74E,EAAG84E,EAAe,IAC4B,IAA9CzmG,EAAG2tB,EAAGg2E,EAAU/uG,EAAIqkB,IAAck2L,KAC3C5oG,GAAU,IAEJA,IACPvG,GAELwG,CAASzlG,EAAU,GACZkY,GAETqtF,EAAanG,mBAAqB,SAAShnG,EAAM6mG,GAC/C,IAAI7/F,EAAWY,EAASm/F,WAAW/mG,EAAM6mG,GACrCjmB,EAAQ,GACR9gE,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,KAAO/9F,GAAU,CACf,IAAIghG,EAAOhhG,EAASspC,OACpB,IAAkB,IAAd03D,EAAKpZ,KAAT,CAIA,IAAIp6D,EAAIwzE,EAAK9uG,MAIb,GAtqGc,IAmqGV8G,IACFw0B,EAAIA,EAAE,IAEF04E,KAAStsB,EAAMhhF,OAASstG,KAAUuR,EAAWjqF,GAIjD,OAAOg2E,EAAUxC,EAAOhD,EAAchlG,EAAM8f,IAAc0U,EAAGwzE,GAH7DpnB,EAAMthF,KAAK0H,GACXA,EAAWwtB,EAAEuyE,WAAW/mG,EAAM6mG,QAT9B7/F,EAAW45E,EAAMvkE,MAcrB,MAxoGG,CAAEnjB,WAAOyC,EAAWizF,MAAM,OA2oG1Bue,EA4CT,SAASI,GAAY3lG,EAAU4lG,EAAYzC,GACpCyC,IACHA,EAAaC,IAEf,IAAIupG,EAAkB/zG,EAAQr7F,GAC1B3M,EAAQ,EACRH,EAAU8M,EAASq+F,QAAQpmG,KAC7B,SAAS20B,EAAG/4B,GAAK,MAAO,CAACA,EAAG+4B,EAAGv5B,IAAS8vG,EAASA,EAAOv2E,EAAG/4B,EAAGmM,GAAY4sB,MAC1EhxB,UAMF,OALA1I,EAAQk/C,MAAK,SAAS38B,EAAGC,GAAK,OAAOkwF,EAAWnwF,EAAE,GAAIC,EAAE,KAAOD,EAAE,GAAKC,EAAE,MAAKviB,QAC3Ei8M,EACA,SAASxiL,EAAG/hB,GAAM3X,EAAQ2X,GAAG7S,OAAS,GACtC,SAAS40B,EAAG/hB,GAAM3X,EAAQ2X,GAAK+hB,EAAE,KAE5BwiL,EAAkBrzG,EAAS7oG,GAChCsoG,EAAUx7F,GAAYi8F,EAAW/oG,GACjCipG,EAAOjpG,GAIX,SAAS4yG,GAAW9lG,EAAU4lG,EAAYzC,GAIxC,GAHKyC,IACHA,EAAaC,IAEX1C,EAAQ,CACV,IAAI3+F,EAAQxE,EAASq+F,QAClBpmG,KAAI,SAAS20B,EAAG/4B,GAAK,MAAO,CAAC+4B,EAAGu2E,EAAOv2E,EAAG/4B,EAAGmM,OAC7CwL,QAAO,SAASiK,EAAGC,GAAK,OAAOqwF,GAAWH,EAAYnwF,EAAE,GAAIC,EAAE,IAAMA,EAAID,KAC3E,OAAOjR,GAASA,EAAM,GAEtB,OAAOxE,EAASwL,QAAO,SAASiK,EAAGC,GAAK,OAAOqwF,GAAWH,EAAYnwF,EAAGC,GAAKA,EAAID,KAItF,SAASswF,GAAWH,EAAYnwF,EAAGC,GACjC,IAAIswF,EAAOJ,EAAWlwF,EAAGD,GAGzB,OAAiB,IAATuwF,GAActwF,IAAMD,IAAMC,MAAAA,GAAiCA,GAAMA,IAAOswF,EAAO,EAIzF,SAASC,GAAeC,EAASC,EAAQnB,GACvC,IAAIqB,EAAcxC,GAAaqC,GAkD/B,OAjDAG,EAAYnnG,KAAO,IAAIwgG,EAASsF,GAAO/sG,KAAI,SAAS4S,GAAK,OAAOA,EAAE3L,QAAOmiC,MAGzEglE,EAAY/L,UAAY,SAASr7F,EAAIggG,GAiBnC,IAHA,IACImB,EADAhhG,EAAWnN,KAAKktG,WA1xGH,EA0xG8BF,GAE3C/mF,EAAa,IACRkoF,EAAOhhG,EAASspC,QAAQs+C,OACY,IAAvC/nF,EAAGmhG,EAAK9uG,MAAO4mB,IAAcjmB,QAInC,OAAOimB,GAETmuF,EAAYjH,mBAAqB,SAAShnG,EAAM6mG,GAC9C,IAAIsH,EAAYvB,EAAM/sG,KAAI,SAAS4S,GAChC,OAAQA,EAAIqzG,EAASrzG,GAAI+yF,EAAYqB,EAAUp0F,EAAEo0F,UAAYp0F,MAE5DqN,EAAa,EACbsuF,GAAS,EACb,OAAO,IAAIrJ,GAAS,WAClB,IAAIsJ,EAKJ,OAJKD,IACHC,EAAQF,EAAUtuG,KAAI,SAAS4S,GAAK,OAAOA,EAAE69B,UAC7C89D,EAASC,EAAMhrF,MAAK,SAASK,GAAK,OAAOA,EAAEkrE,SAEzCwf,EA1wGD,CAAEl1G,WAAOyC,EAAWizF,MAAM,GA6wGtBoW,EACLhlG,EACA8f,IACAiuF,EAAO7zF,MAAM,KAAMm0F,EAAMxuG,KAAI,SAAS6jB,GAAK,OAAOA,EAAExqB,eAInD+0G,EAMT,SAASK,GAAMtuF,EAAM2xC,GACnB,OAAOwyC,GAAMnkF,GAAQ2xC,EAAM3xC,EAAK1mB,YAAYq4D,GAG9C,SAAS05C,GAAcj/F,GACrB,GAAIA,IAAUrT,OAAOqT,GACnB,MAAM,IAAI2O,UAAU,0BAA4B3O,GAIpD,SAAS6qM,GAAYj3L,GAEnB,OADA4uF,GAAkB5uF,EAAKlZ,MAChBm7F,EAAWjiF,GAGpB,SAASk3L,GAActvM,GACrB,OAAOq7F,EAAQr7F,GAAY+sM,EACzBvxG,EAAUx7F,GAAYgtM,EACtBC,EAGJ,SAASppG,GAAa7jG,GACpB,OAAO7O,OAAOuC,QAEV2nG,EAAQr7F,GAAY+7F,EACpBP,EAAUx7F,GAAYi8F,EACtBE,GACA1nG,WAIN,SAASsvG,KACP,OAAI9xG,KAAK4wG,MAAMhE,aACb5sG,KAAK4wG,MAAMhE,cACX5sG,KAAKiN,KAAOjN,KAAK4wG,MAAM3jG,KAChBjN,MAEA4pG,EAAIpnG,UAAUoqG,YAAYlqG,KAAK1C,MAI1C,SAAS4zG,GAAkBpwF,EAAGC,GAC5B,OAAOD,EAAIC,EAAI,EAAID,EAAIC,GAAK,EAAI,EAGlC,SAAS+4L,GAAcvnG,GACrB,IAAI9uF,EAAOwlF,EAAYsJ,GACvB,IAAK9uF,EAAM,CAGT,IAAK+lF,EAAY+I,GACf,MAAM,IAAI/zF,UAAU,oCAAsC+zF,GAE5D9uF,EAAOwlF,EAAYsgB,EAAShX,IAE9B,OAAO9uF,EAKP,SAASikG,GAAOC,EAAennH,GAC7B,IAAIonH,EAEAE,EAAa,SAAgBz9G,GAC/B,GAAIA,aAAkBy9G,EACpB,OAAOz9G,EAET,KAAM/M,gBAAgBwqH,GACpB,OAAO,IAAIA,EAAWz9G,GAExB,IAAKu9G,EAAgB,CACnBA,GAAiB,EACjB,IAAI19G,EAAO1N,OAAO0N,KAAKy9G,IAgI/B,SAAkB7nH,EAAWgwD,GAC3B,IACEA,EAAMtxD,QAAQ6pH,GAAQvkG,UAAK1kB,EAAWU,IACtC,MAAOuJ,MAlIHuxM,CAAS5yF,EAAqB99G,GAC9B89G,EAAoBz9G,KAAOL,EAAK7G,OAChC2kH,EAAoBtjF,MAAQlkC,EAC5BwnH,EAAoB5c,MAAQlhG,EAC5B89G,EAAoBE,eAAiBP,EAEvCrqH,KAAKowC,KAAOvrC,GAAIkI,IAGd29G,EAAsBF,EAAWhoH,UAAYtD,OAAOuC,OAAOwpH,IAG/D,OAFAP,EAAoBjrH,YAAc+qH,EAE3BA,EAr/BXqwF,EAAY5hG,GAAYp0G,IActBo0G,GAAWzL,GAAK,WACd,OAAOxtG,KAAK+c,YAGdk8F,GAAWz2G,UAAUqL,SAAW,WAC9B,OAAO7N,KAAK2sG,WAAW,eAAgB,MAKzCsM,GAAWz2G,UAAUH,IAAM,SAAST,EAAG+rG,GACrC,IAAIvsG,EAAQpB,KAAKowC,KAAK/tC,IAAIT,GAC1B,YAAiBE,IAAVV,EAAsBpB,KAAK6gH,MAAMx+G,IAAIjB,GAAO,GAAKusG,GAK1DsL,GAAWz2G,UAAUkwE,MAAQ,WAC3B,OAAkB,IAAd1yE,KAAKiN,KACAjN,KAELA,KAAKi3G,WACPj3G,KAAKiN,KAAO,EACZjN,KAAKowC,KAAKsiC,QACV1yE,KAAK6gH,MAAMnuC,QACJ1yE,MAEF4gH,MAGT3H,GAAWz2G,UAAU+C,IAAM,SAAS3D,EAAG+4B,GACrC,OAAOmmF,GAAiB9gH,KAAM4B,EAAG+4B,IAGnCs+E,GAAWz2G,UAAUy+B,OAAS,SAASr/B,GACrC,OAAOk/G,GAAiB9gH,KAAM4B,EAAGomG,IAGnCiR,GAAWz2G,UAAUg2G,WAAa,WAChC,OAAOx4G,KAAKowC,KAAKooE,cAAgBx4G,KAAK6gH,MAAMrI,cAG9CS,GAAWz2G,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACnE,OAAOA,KAAK6gH,MAAMxY,WAChB,SAAS91F,GAAS,OAAOA,GAASvF,EAAGuF,EAAM,GAAIA,EAAM,GAAI4pM,KACzDnvG,IAIJiM,GAAWz2G,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC/C,OAAOhtG,KAAK6gH,MAAMvU,eAAeY,WAAW/mG,EAAM6mG,IAGpDiM,GAAWz2G,UAAUi2G,cAAgB,SAASY,GAC5C,GAAIA,IAAYr5G,KAAKi3G,UACnB,OAAOj3G,KAET,IAAI+gH,EAAS/gH,KAAKowC,KAAKqoE,cAAcY,GACjC2H,EAAUhhH,KAAK6gH,MAAMpI,cAAcY,GACvC,OAAKA,EAME4H,GAAeF,EAAQC,EAAS3H,EAASr5G,KAAKg5G,SALnDh5G,KAAKi3G,UAAYoC,EACjBr5G,KAAKowC,KAAO2wE,EACZ/gH,KAAK6gH,MAAQG,EACNhhH,OAUbi5G,GAAW1K,aAAeA,GAE1B0K,GAAWz2G,UAAU44M,IAAuB,EAC5CniG,GAAWz2G,UAAgB,OAAIy2G,GAAWz2G,UAAUy+B,OA8DpD45K,EAAYpqG,GAAiB3G,GAO3B2G,GAAgBjuG,UAAUH,IAAM,SAASlB,EAAKwsG,GAC5C,OAAO3tG,KAAK4wG,MAAMvuG,IAAIlB,EAAKwsG,IAG7B8C,GAAgBjuG,UAAU0F,IAAM,SAAS/G,GACvC,OAAOnB,KAAK4wG,MAAM1oG,IAAI/G,IAGxBsvG,GAAgBjuG,UAAUsuG,SAAW,WACnC,OAAO9wG,KAAK4wG,MAAME,YAGpBL,GAAgBjuG,UAAUwqG,QAAU,WAAY,IAAImvG,EAASn8M,KACvDgxG,EAAmBC,GAAejxG,MAAM,GAI5C,OAHKA,KAAK6wG,WACRG,EAAiBF,SAAW,WAAa,OAAOqrG,EAAOvrG,MAAMxE,QAAQY,YAEhEgE,GAGTP,GAAgBjuG,UAAUwD,IAAM,SAASkrG,EAAQ/wG,GAAU,IAAIg8M,EAASn8M,KAClEmxG,EAAiBC,GAAWpxG,KAAMkxG,EAAQ/wG,GAI9C,OAHKH,KAAK6wG,WACRM,EAAeL,SAAW,WAAa,OAAOqrG,EAAOvrG,MAAMxE,QAAQpmG,IAAIkrG,EAAQ/wG,KAE1EgxG,GAGTV,GAAgBjuG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IACvDY,EAD2DuuG,EAASn8M,KAExE,OAAOA,KAAK4wG,MAAMvI,UAChBroG,KAAK6wG,SACH,SAASl2E,EAAG/4B,GAAK,OAAOoL,EAAG2tB,EAAG/4B,EAAGu6M,KAC/BvuG,EAAKZ,EAAUowG,GAAYp9M,MAAQ,EACnC,SAAS26B,GAAK,OAAO3tB,EAAG2tB,EAAGqyE,IAAYY,EAAKA,IAAMuuG,KACtDnvG,IAIJyD,GAAgBjuG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACpD,GAAIhtG,KAAK6wG,SACP,OAAO7wG,KAAK4wG,MAAM1D,WAAW/mG,EAAM6mG,GAErC,IAAI7/F,EAAWnN,KAAK4wG,MAAM1D,WA1mFT,EA0mFoCF,GACjDY,EAAKZ,EAAUowG,GAAYp9M,MAAQ,EACvC,OAAO,IAAIkrG,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,OAAO03D,EAAKpZ,KAAOoZ,EACjBhD,EAAchlG,EAAM6mG,IAAYY,EAAKA,IAAMO,EAAK9uG,MAAO8uG,OAI/DsC,GAAgBjuG,UAAU44M,IAAuB,EAGjDP,EAAYxpG,GAAmBrH,GAM7BqH,GAAkB7uG,UAAUsW,SAAW,SAASzZ,GAC9C,OAAOW,KAAK4wG,MAAM93F,SAASzZ,IAG7BgyG,GAAkB7uG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACtEimB,EAAa,EACjB,OAAOjmB,KAAK4wG,MAAMvI,WAAU,SAAS1tE,GAAK,OAAO3tB,EAAG2tB,EAAG1U,IAAck2L,KAAUnvG,IAGjFqE,GAAkB7uG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACtD,IAAI7/F,EAAWnN,KAAK4wG,MAAM1D,WAtoFT,EAsoFoCF,GACjD/mF,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,OAAO03D,EAAKpZ,KAAOoZ,EACjBhD,EAAchlG,EAAM8f,IAAckoF,EAAK9uG,MAAO8uG,OAMtD0sG,EAAYvpG,GAAepH,GAMzBoH,GAAc9uG,UAAU0F,IAAM,SAAS/G,GACrC,OAAOnB,KAAK4wG,MAAM93F,SAAS3X,IAG7BmwG,GAAc9uG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACtE,OAAOA,KAAK4wG,MAAMvI,WAAU,SAAS1tE,GAAK,OAAO3tB,EAAG2tB,EAAGA,EAAGwhL,KAAUnvG,IAGtEsE,GAAc9uG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAClD,IAAI7/F,EAAWnN,KAAK4wG,MAAM1D,WAhqFT,EAgqFoCF,GACrD,OAAO,IAAI9B,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,OAAO03D,EAAKpZ,KAAOoZ,EACjBhD,EAAchlG,EAAMgoG,EAAK9uG,MAAO8uG,EAAK9uG,MAAO8uG,OAMpD0sG,EAAYtpG,GAAqBzH,GAM/ByH,GAAoB/uG,UAAUuqG,SAAW,WACvC,OAAO/sG,KAAK4wG,MAAMxE,SAGpBmF,GAAoB/uG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAC5E,OAAOA,KAAK4wG,MAAMvI,WAAU,SAAS91F,GAGnC,GAAIA,EAAO,CACTi/F,GAAcj/F,GACd,IAAIgrM,EAAkB34F,EAAWryG,GACjC,OAAOvF,EACLuwM,EAAkBhrM,EAAMlQ,IAAI,GAAKkQ,EAAM,GACvCgrM,EAAkBhrM,EAAMlQ,IAAI,GAAKkQ,EAAM,GACvC4pM,MAGHnvG,IAGLuE,GAAoB/uG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACxD,IAAI7/F,EAAWnN,KAAK4wG,MAAM1D,WArsFT,EAqsFoCF,GACrD,OAAO,IAAI9B,GAAS,WAClB,OAAa,CACX,IAAIiD,EAAOhhG,EAASspC,OACpB,GAAI03D,EAAKpZ,KACP,OAAOoZ,EAET,IAAI57F,EAAQ47F,EAAK9uG,MAGjB,GAAIkT,EAAO,CACTi/F,GAAcj/F,GACd,IAAIgrM,EAAkB34F,EAAWryG,GACjC,OAAO44F,EACLhlG,EACAo3M,EAAkBhrM,EAAMlQ,IAAI,GAAKkQ,EAAM,GACvCgrM,EAAkBhrM,EAAMlQ,IAAI,GAAKkQ,EAAM,GACvC47F,SAQZkD,GAAkB7uG,UAAUoqG,YAC5B6D,GAAgBjuG,UAAUoqG,YAC1B0E,GAAc9uG,UAAUoqG,YACxB2E,GAAoB/uG,UAAUoqG,YAC5BkF,GAwpBF+oG,EAAYzwF,GAAQvgB,IA8BlBugB,GAAO5nH,UAAUqL,SAAW,WAC1B,OAAO7N,KAAK2sG,WAAWme,GAAW9qH,MAAQ,KAAM,MAKlDoqH,GAAO5nH,UAAU0F,IAAM,SAAStG,GAC9B,OAAO5B,KAAK4qH,eAAenoH,eAAeb,IAG5CwoH,GAAO5nH,UAAUH,IAAM,SAAST,EAAG+rG,GACjC,IAAK3tG,KAAKkI,IAAItG,GACZ,OAAO+rG,EAET,IAAI6vG,EAAax9M,KAAK4qH,eAAehpH,GACrC,OAAO5B,KAAKowC,KAAOpwC,KAAKowC,KAAK/tC,IAAIT,EAAG47M,GAAcA,GAKpDpzF,GAAO5nH,UAAUkwE,MAAQ,WACvB,GAAI1yE,KAAKi3G,UAEP,OADAj3G,KAAKowC,MAAQpwC,KAAKowC,KAAKsiC,QAChB1yE,KAET,IAAIwqH,EAAaxqH,KAAKP,YACtB,OAAO+qH,EAAWizF,SAAWjzF,EAAWizF,OAASpyF,GAAWrrH,KAAMq2G,QAGpE+T,GAAO5nH,UAAU+C,IAAM,SAAS3D,EAAG+4B,GACjC,IAAK36B,KAAKkI,IAAItG,GACZ,MAAM,IAAIpB,MAAM,2BAA6BoB,EAAI,QAAUkpH,GAAW9qH,OAExE,GAAIA,KAAKowC,OAASpwC,KAAKowC,KAAKloC,IAAItG,IAE1B+4B,IADa36B,KAAK4qH,eAAehpH,GAEnC,OAAO5B,KAGX,IAAI+gH,EAAS/gH,KAAKowC,MAAQpwC,KAAKowC,KAAK7qC,IAAI3D,EAAG+4B,GAC3C,OAAI36B,KAAKi3G,WAAa8J,IAAW/gH,KAAKowC,KAC7BpwC,KAEFqrH,GAAWrrH,KAAM+gH,IAG1BqJ,GAAO5nH,UAAUy+B,OAAS,SAASr/B,GACjC,IAAK5B,KAAKkI,IAAItG,GACZ,OAAO5B,KAET,IAAI+gH,EAAS/gH,KAAKowC,MAAQpwC,KAAKowC,KAAKnP,OAAOr/B,GAC3C,OAAI5B,KAAKi3G,WAAa8J,IAAW/gH,KAAKowC,KAC7BpwC,KAEFqrH,GAAWrrH,KAAM+gH,IAG1BqJ,GAAO5nH,UAAUg2G,WAAa,WAC5B,OAAOx4G,KAAKowC,KAAKooE,cAGnB4R,GAAO5nH,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAAU,IAAImvG,EAASn8M,KAClE,OAAO86M,EAAc96M,KAAK4qH,gBAAgB5kH,KAAI,SAAS+0B,EAAGn5B,GAAK,OAAOu6M,EAAO95M,IAAIT,MAAKsrG,WAAW/mG,EAAM6mG,IAGzGod,GAAO5nH,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAC/D,OAAO86M,EAAc96M,KAAK4qH,gBAAgB5kH,KAAI,SAAS+0B,EAAGn5B,GAAK,OAAOu6M,EAAO95M,IAAIT,MAAKymG,UAAUr7F,EAAIggG,IAGtGod,GAAO5nH,UAAUi2G,cAAgB,SAASY,GACxC,GAAIA,IAAYr5G,KAAKi3G,UACnB,OAAOj3G,KAET,IAAI+gH,EAAS/gH,KAAKowC,MAAQpwC,KAAKowC,KAAKqoE,cAAcY,GAClD,OAAKA,EAKEgS,GAAWrrH,KAAM+gH,EAAQ1H,IAJ9Br5G,KAAKi3G,UAAYoC,EACjBr5G,KAAKowC,KAAO2wE,EACL/gH,OAMb,IAAIirH,GAAkBb,GAAO5nH,UAkB7B,SAAS6oH,GAAWE,EAAYvlH,EAAKqzG,GACnC,IAAI7qG,EAAStP,OAAOuC,OAAOvC,OAAOgf,eAAeqtG,IAGjD,OAFA/8G,EAAO4hC,KAAOpqC,EACdwI,EAAOyoG,UAAYoC,EACZ7qG,EAGT,SAASs8G,GAAWt8G,GAClB,OAAOA,EAAO44B,OAAS54B,EAAO/O,YAAYyD,MAAQ,SAWpD,SAAS6nH,GAAQvoH,EAAWU,GAC1BhE,OAAOC,eAAeqD,EAAWU,EAAM,CACrCb,IAAK,WACH,OAAOrC,KAAKqC,IAAIa,IAElBqC,IAAK,SAASlG,GACZw1G,GAAU70G,KAAKi3G,UAAW,sCAC1Bj3G,KAAKuF,IAAIrC,EAAM7D,MASnB,SAASmO,GAAInO,GACX,OAAOA,MAAAA,EAAwC0jH,KAC7Cb,GAAM7iH,KAAWyrG,EAAUzrG,GAASA,EACpC0jH,KAAW7L,eAAc,SAAS3xG,GAChC,IAAI4gB,EAAO60L,EAAY37M,GACvB01G,GAAkB5uF,EAAKlZ,MACvBkZ,EAAKjlB,SAAQ,SAASy5B,GAAK,OAAOp1B,EAAIyY,IAAI2c,SA+HlD,SAASunF,GAAMC,GACb,SAAUA,IAAYA,EAASu7F,KA1LjCzyF,GAAsB,OAAIA,GAAgBhqF,OAC1CgqF,GAAgBxU,SAChBwU,GAAgBzU,SAAW+C,GAAa/C,SACxCyU,GAAgB19G,MAAQgsG,GAAahsG,MACrC09G,GAAgBt9G,UAAY4rG,GAAa5rG,UACzCs9G,GAAgB7S,QAAUmB,GAAanB,QACvC6S,GAAgB/S,UAAYqB,GAAarB,UACzC+S,GAAgB9S,cAAgBoB,GAAapB,cAC7C8S,GAAgB5S,YAAckB,GAAalB,YAC3C4S,GAAgB1U,MAAQgD,GAAahD,MACrC0U,GAAgBx7E,OAAS8pE,GAAa9pE,OACtCw7E,GAAgBtU,SAAW4C,GAAa5C,SACxCsU,GAAgB/T,cAAgBqC,GAAarC,cAC7C+T,GAAgB1S,UAAYgB,GAAahB,UACzC0S,GAAgBvS,YAAca,GAAab,YAkC3CmiG,EAAYrtM,GAAKy8F,IAcfz8F,GAAIggG,GAAK,WACP,OAAOxtG,KAAK+c,YAGdvP,GAAIw1G,SAAW,SAAS3jH,GACtB,OAAOW,KAAK86M,EAAcz7M,GAAO4jH,WAGnCz1G,GAAIhL,UAAUqL,SAAW,WACvB,OAAO7N,KAAK2sG,WAAW,QAAS,MAKlCn/F,GAAIhL,UAAU0F,IAAM,SAAS7I,GAC3B,OAAOW,KAAKowC,KAAKloC,IAAI7I,IAKvBmO,GAAIhL,UAAUwb,IAAM,SAAS3e,GAC3B,OAAOikH,GAAUtjH,KAAMA,KAAKowC,KAAK7qC,IAAIlG,GAAO,KAG9CmO,GAAIhL,UAAUy+B,OAAS,SAAS5hC,GAC9B,OAAOikH,GAAUtjH,KAAMA,KAAKowC,KAAKnP,OAAO5hC,KAG1CmO,GAAIhL,UAAUkwE,MAAQ,WACpB,OAAO4wC,GAAUtjH,KAAMA,KAAKowC,KAAKsiC,UAKnCllE,GAAIhL,UAAU6gH,MAAQ,WAAY,IAAItQ,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GAEpE,OAAqB,KADrBg2F,EAAQA,EAAMzlG,QAAO,SAASW,GAAK,OAAkB,IAAXA,EAAEhB,SAClClH,OACD/F,KAES,IAAdA,KAAKiN,MAAejN,KAAKi3G,WAA8B,IAAjBlE,EAAMhtG,OAGzC/F,KAAKk3G,eAAc,SAAS3xG,GACjC,IAAK,IAAIqoG,EAAK,EAAGA,EAAKmF,EAAMhtG,OAAQ6nG,IAClCotG,EAAYjoG,EAAMnF,IAAK1sG,SAAQ,SAAS7B,GAAS,OAAOkG,EAAIyY,IAAI3e,SAJ3DW,KAAKP,YAAYszG,EAAM,KASlCvlG,GAAIhL,UAAU0gH,UAAY,WAAY,IAAInQ,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GACxE,GAAqB,IAAjBg2F,EAAMhtG,OACR,OAAO/F,KAET+yG,EAAQA,EAAM/sG,KAAI,SAASmgB,GAAQ,OAAO60L,EAAY70L,MACtD,IAAIw3L,EAAc39M,KAClB,OAAOA,KAAKk3G,eAAc,SAAS3xG,GACjCo4M,EAAYz8M,SAAQ,SAAS7B,GACtB0zG,EAAM/kF,OAAM,SAAS7H,GAAQ,OAAOA,EAAKrN,SAASzZ,OACrDkG,EAAI07B,OAAO5hC,UAMnBmO,GAAIhL,UAAU4yC,SAAW,WAAY,IAAI29D,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GACvE,GAAqB,IAAjBg2F,EAAMhtG,OACR,OAAO/F,KAET+yG,EAAQA,EAAM/sG,KAAI,SAASmgB,GAAQ,OAAO60L,EAAY70L,MACtD,IAAIw3L,EAAc39M,KAClB,OAAOA,KAAKk3G,eAAc,SAAS3xG,GACjCo4M,EAAYz8M,SAAQ,SAAS7B,GACvB0zG,EAAMvpF,MAAK,SAASrD,GAAQ,OAAOA,EAAKrN,SAASzZ,OACnDkG,EAAI07B,OAAO5hC,UAMnBmO,GAAIhL,UAAU+K,MAAQ,WACpB,OAAOvN,KAAKqjH,MAAMhjG,MAAMrgB,KAAM+c,YAGhCvP,GAAIhL,UAAUmL,UAAY,SAASC,GAAS,IAAImlG,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GAC9E,OAAO/c,KAAKqjH,MAAMhjG,MAAMrgB,KAAM+yG,IAGhCvlG,GAAIhL,UAAU29C,KAAO,SAASwzD,GAE5B,OAAOgQ,GAAWjQ,GAAY1zG,KAAM2zG,KAGtCnmG,GAAIhL,UAAU02G,OAAS,SAAShI,EAAQyC,GAEtC,OAAOgQ,GAAWjQ,GAAY1zG,KAAM2zG,EAAYzC,KAGlD1jG,GAAIhL,UAAUg2G,WAAa,WACzB,OAAOx4G,KAAKowC,KAAKooE,cAGnBhrG,GAAIhL,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAC5D,OAAOA,KAAKowC,KAAKi4D,WAAU,SAASttE,EAAGn5B,GAAK,OAAOoL,EAAGpL,EAAGA,EAAGu6M,KAAUnvG,IAGxEx/F,GAAIhL,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACxC,OAAOhtG,KAAKowC,KAAKpqC,KAAI,SAAS+0B,EAAGn5B,GAAK,OAAOA,KAAIsrG,WAAW/mG,EAAM6mG,IAGpEx/F,GAAIhL,UAAUi2G,cAAgB,SAASY,GACrC,GAAIA,IAAYr5G,KAAKi3G,UACnB,OAAOj3G,KAET,IAAI+gH,EAAS/gH,KAAKowC,KAAKqoE,cAAcY,GACrC,OAAKA,EAKEr5G,KAAK4jH,OAAO7C,EAAQ1H,IAJzBr5G,KAAKi3G,UAAYoC,EACjBr5G,KAAKowC,KAAO2wE,EACL/gH,OAUbwN,GAAI00G,MAAQA,GAEZ,IAiCI4B,GAjCA45F,GAAkB,wBAElBt6F,GAAe51G,GAAIhL,UAYvB,SAAS8gH,GAAU/9G,EAAKw7G,GACtB,OAAIx7G,EAAI0xG,WACN1xG,EAAI0H,KAAO8zG,EAAO9zG,KAClB1H,EAAI6qC,KAAO2wE,EACJx7G,GAEFw7G,IAAWx7G,EAAI6qC,KAAO7qC,EACX,IAAhBw7G,EAAO9zG,KAAa1H,EAAIs+G,UACxBt+G,EAAIq+G,OAAO7C,GAGf,SAASgD,GAAQ/9G,EAAKqzG,GACpB,IAAI9zG,EAAMrG,OAAOuC,OAAO2hH,IAIxB,OAHA79G,EAAI0H,KAAOjH,EAAMA,EAAIiH,KAAO,EAC5B1H,EAAI6qC,KAAOpqC,EACXT,EAAI0xG,UAAYoC,EACT9zG,EAIT,SAASw9G,KACP,OAAOe,KAAcA,GAAYC,GAAQ1N,OAOzC,SAASsN,GAAWtkH,GAClB,OAAOA,MAAAA,EAAwC2qH,KAC7C5H,GAAa/iH,GAASA,EACtB2qH,KAAkB9S,eAAc,SAAS3xG,GACvC,IAAI4gB,EAAO60L,EAAY37M,GACvB01G,GAAkB5uF,EAAKlZ,MACvBkZ,EAAKjlB,SAAQ,SAASy5B,GAAK,OAAOp1B,EAAIyY,IAAI2c,SAiBlD,SAASynF,GAAaC,GACpB,OAAOH,GAAMG,IAAoBvX,EAAUuX,GA/D7Ce,GAAas6F,KAAmB,EAChCt6F,GAAmB,OAAIA,GAAaniF,OACpCmiF,GAAalL,UAAYkL,GAAa71G,MACtC61G,GAAajL,cAAgBiL,GAAaz1G,UAC1Cy1G,GAAalM,cAAgBqC,GAAarC,cAC1CkM,GAAa7K,UAAYgB,GAAahB,UACtC6K,GAAa1K,YAAca,GAAab,YAExC0K,GAAaS,QAAUd,GACvBK,GAAaQ,OAASG,GA0BtB82F,EAAYl3F,GAAYn2G,IActBm2G,GAAWnW,GAAK,WACd,OAAOxtG,KAAK+c,YAGd4mG,GAAWX,SAAW,SAAS3jH,GAC7B,OAAOW,KAAK86M,EAAcz7M,GAAO4jH,WAGnCU,GAAWnhH,UAAUqL,SAAW,WAC9B,OAAO7N,KAAK2sG,WAAW,eAAgB,MAQ3CgX,GAAWvB,aAAeA,GAE1B,IAcI6H,GAdAC,GAAsBvG,GAAWnhH,UAMrC,SAAS2nH,GAAenkH,EAAKqzG,GAC3B,IAAI9zG,EAAMrG,OAAOuC,OAAOyoH,IAIxB,OAHA3kH,EAAI0H,KAAOjH,EAAMA,EAAIiH,KAAO,EAC5B1H,EAAI6qC,KAAOpqC,EACXT,EAAI0xG,UAAYoC,EACT9zG,EAIT,SAASykH,KACP,OAAOC,KAAsBA,GAAoBE,GAAevJ,OAOhE,SAASW,GAAMliH,GACb,OAAOA,MAAAA,EAAwCmiH,KAC7CH,GAAQhiH,GAASA,EACjBmiH,KAAaQ,WAAW3iH,GAkL9B,SAASgiH,GAAQC,GACf,SAAUA,IAAcA,EAAWs8F,KA5MrC1zF,GAAoBkxF,IAAuB,EAE3ClxF,GAAoBrG,QAAUmG,GAC9BE,GAAoBtG,OAASuG,GAe7B0wF,EAAYt5F,GAAOxX,IAUjBwX,GAAM/T,GAAK,WACT,OAAOxtG,KAAK+c,YAGdwkG,GAAM/+G,UAAUqL,SAAW,WACzB,OAAO7N,KAAK2sG,WAAW,UAAW,MAKpC4U,GAAM/+G,UAAUH,IAAM,SAASjB,EAAOusG,GACpC,IAAI+T,EAAO1hH,KAAK2hH,MAEhB,IADAvgH,EAAQmnG,EAAUvoG,KAAMoB,GACjBsgH,GAAQtgH,KACbsgH,EAAOA,EAAKjrE,KAEd,OAAOirE,EAAOA,EAAKriH,MAAQsuG,GAG7B4T,GAAM/+G,UAAUo/G,KAAO,WACrB,OAAO5hH,KAAK2hH,OAAS3hH,KAAK2hH,MAAMtiH,OAKlCkiH,GAAM/+G,UAAUiD,KAAO,WACrB,GAAyB,IAArBsX,UAAUhX,OACZ,OAAO/F,KAIT,IAFA,IAAI+8G,EAAU/8G,KAAKiN,KAAO8P,UAAUhX,OAChC27G,EAAO1hH,KAAK2hH,MACP/T,EAAK7wF,UAAUhX,OAAS,EAAG6nG,GAAM,EAAGA,IAC3C8T,EAAO,CACLriH,MAAO0d,UAAU6wF,GACjBn3D,KAAMirE,GAGV,OAAI1hH,KAAKi3G,WACPj3G,KAAKiN,KAAO8vG,EACZ/8G,KAAK2hH,MAAQD,EACb1hH,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEF6hH,GAAU9E,EAAS2E,IAG5BH,GAAM/+G,UAAUi/G,QAAU,SAASt7F,GAEjC,GAAkB,KADlBA,EAAO40L,EAAgB50L,IACdlZ,KACP,OAAOjN,KAET+0G,GAAkB5uF,EAAKlZ,MACvB,IAAI8vG,EAAU/8G,KAAKiN,KACfy0G,EAAO1hH,KAAK2hH,MAQhB,OAPAx7F,EAAK6mF,UAAU9rG,SAAQ,SAAS7B,GAC9B09G,IACA2E,EAAO,CACLriH,MAAOA,EACPo3C,KAAMirE,MAGN1hH,KAAKi3G,WACPj3G,KAAKiN,KAAO8vG,EACZ/8G,KAAK2hH,MAAQD,EACb1hH,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEF6hH,GAAU9E,EAAS2E,IAG5BH,GAAM/+G,UAAUggB,IAAM,WACpB,OAAOxiB,KAAKqjB,MAAM,IAGpBk+F,GAAM/+G,UAAUg3C,QAAU,WACxB,OAAOx5C,KAAKyF,KAAK4a,MAAMrgB,KAAM+c,YAG/BwkG,GAAM/+G,UAAUw/G,WAAa,SAAS77F,GACpC,OAAOnmB,KAAKyhH,QAAQt7F,IAGtBo7F,GAAM/+G,UAAU23C,MAAQ,WACtB,OAAOn6C,KAAKwiB,IAAInC,MAAMrgB,KAAM+c,YAG9BwkG,GAAM/+G,UAAUkwE,MAAQ,WACtB,OAAkB,IAAd1yE,KAAKiN,KACAjN,KAELA,KAAKi3G,WACPj3G,KAAKiN,KAAO,EACZjN,KAAK2hH,WAAQ7/G,EACb9B,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEFwhH,MAGTD,GAAM/+G,UAAU6gB,MAAQ,SAASqlF,EAAO9d,GACtC,GAAI6d,EAAWC,EAAO9d,EAAK5qF,KAAKiN,MAC9B,OAAOjN,KAET,IAAImyG,EAAgBvJ,EAAaF,EAAO1oG,KAAKiN,MAE7C,GADkB67F,EAAWle,EAAK5qF,KAAKiN,QACnBjN,KAAKiN,KAEvB,OAAO88F,GAAkBvnG,UAAU6gB,MAAM3gB,KAAK1C,KAAM0oG,EAAO9d,GAI7D,IAFA,IAAImyB,EAAU/8G,KAAKiN,KAAOklG,EACtBuP,EAAO1hH,KAAK2hH,MACTxP,KACLuP,EAAOA,EAAKjrE,KAEd,OAAIz2C,KAAKi3G,WACPj3G,KAAKiN,KAAO8vG,EACZ/8G,KAAK2hH,MAAQD,EACb1hH,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEF6hH,GAAU9E,EAAS2E,IAK5BH,GAAM/+G,UAAUi2G,cAAgB,SAASY,GACvC,OAAIA,IAAYr5G,KAAKi3G,UACZj3G,KAEJq5G,EAKEwI,GAAU7hH,KAAKiN,KAAMjN,KAAK2hH,MAAOtI,EAASr5G,KAAKg5G,SAJpDh5G,KAAKi3G,UAAYoC,EACjBr5G,KAAK24G,WAAY,EACV34G,OAOXuhH,GAAM/+G,UAAU6lG,UAAY,SAASr7F,EAAIggG,GACvC,GAAIA,EACF,OAAOhtG,KAAKgtG,UAAU3E,UAAUr7F,GAIlC,IAFA,IAAIiZ,EAAa,EACbhhB,EAAOjF,KAAK2hH,MACT18G,IACsC,IAAvC+H,EAAG/H,EAAK5F,MAAO4mB,IAAcjmB,OAGjCiF,EAAOA,EAAKwxC,KAEd,OAAOxwB,GAGTs7F,GAAM/+G,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC1C,GAAIA,EACF,OAAOhtG,KAAKgtG,UAAUE,WAAW/mG,GAEnC,IAAI8f,EAAa,EACbhhB,EAAOjF,KAAK2hH,MAChB,OAAO,IAAIzW,GAAS,WAClB,GAAIjmG,EAAM,CACR,IAAI5F,EAAQ4F,EAAK5F,MAEjB,OADA4F,EAAOA,EAAKwxC,KACL00D,EAAchlG,EAAM8f,IAAc5mB,GAE3C,MAn5HG,CAAEA,WAAOyC,EAAWizF,MAAM,OA45HnCwsB,GAAMF,QAAUA,GAEhB,IAoBIS,GApBA87F,GAAoB,0BAEpB77F,GAAiBR,GAAM/+G,UAQ3B,SAASq/G,GAAU50G,EAAMy0G,EAAMrI,EAAStqG,GACtC,IAAI/I,EAAM9G,OAAOuC,OAAOsgH,IAMxB,OALA/7G,EAAIiH,KAAOA,EACXjH,EAAI27G,MAAQD,EACZ17G,EAAIixG,UAAYoC,EAChBrzG,EAAIgzG,OAASjqG,EACb/I,EAAI2yG,WAAY,EACT3yG,EAIT,SAASw7G,KACP,OAAOM,KAAgBA,GAAcD,GAAU,IAMjD,SAASc,GAAMC,EAAMhsB,GACnB,IAAIisB,EAAY,SAAS1hH,GAAQyhH,EAAKpgH,UAAUrB,GAAOy1F,EAAQz1F,IAI/D,OAHAjC,OAAO0N,KAAKgqF,GAAS11F,QAAQ2hH,GAC7B3jH,OAAOs5F,uBACLt5F,OAAOs5F,sBAAsB5B,GAAS11F,QAAQ2hH,GACzCD,EA9BTb,GAAe67F,KAAqB,EACpC77F,GAAe7K,cAAgBqC,GAAarC,cAC5C6K,GAAexJ,UAAYgB,GAAahB,UACxCwJ,GAAerJ,YAAca,GAAab,YAC1CqJ,GAAevJ,WAAae,GAAaf,WA6BzCyT,EAAS/gB,SAAWA,EAEpByX,GAAMsJ,EAAU,CAIdtiH,QAAS,WACPorG,GAAkB/0G,KAAKiN,MACvB,IAAI+uC,EAAQ,IAAIlgC,MAAM9b,KAAKiN,MAAQ,GAEnC,OADAjN,KAAK8wG,WAAWzI,WAAU,SAAS1tE,EAAG/hB,GAAMojC,EAAMpjC,GAAK+hB,KAChDqhB,GAGTsxD,aAAc,WACZ,OAAO,IAAI+D,GAAkBrxG,OAG/B0V,KAAM,WACJ,OAAO1V,KAAKosG,QAAQpmG,KAClB,SAAS3G,GAAS,OAAOA,GAA+B,mBAAfA,EAAMqW,KAAsBrW,EAAMqW,OAASrW,KACpFw+M,UAGJ77I,OAAQ,WACN,OAAOhiE,KAAKosG,QAAQpmG,KAClB,SAAS3G,GAAS,OAAOA,GAAiC,mBAAjBA,EAAM2iE,OAAwB3iE,EAAM2iE,SAAW3iE,KACxFw+M,UAGJzwG,WAAY,WACV,OAAO,IAAIqD,GAAgBzwG,MAAM,IAGnCmhH,MAAO,WAEL,OAAOt8G,GAAI7E,KAAKotG,eAGlBuX,SAAU,WACR5P,GAAkB/0G,KAAKiN,MACvB,IAAIrG,EAAS,GAEb,OADA5G,KAAKqoG,WAAU,SAAS1tE,EAAG/4B,GAAMgF,EAAOhF,GAAK+4B,KACtC/zB,GAGTk+G,aAAc,WAEZ,OAAO7L,GAAWj5G,KAAKotG,eAGzB2X,aAAc,WAEZ,OAAOpB,GAAWva,EAAQppG,MAAQA,KAAK8wG,WAAa9wG,OAGtDglH,MAAO,WAEL,OAAOx3G,GAAI47F,EAAQppG,MAAQA,KAAK8wG,WAAa9wG,OAG/CwsG,SAAU,WACR,OAAO,IAAI8E,GAActxG,OAG3BosG,MAAO,WACL,OAAO7C,EAAUvpG,MAAQA,KAAKstG,eAC5BlE,EAAQppG,MAAQA,KAAKotG,aACrBptG,KAAKwsG,YAGTyY,QAAS,WAEP,OAAO1D,GAAMnY,EAAQppG,MAAQA,KAAK8wG,WAAa9wG,OAGjDklH,OAAQ,WAEN,OAAO7H,GAAKjU,EAAQppG,MAAQA,KAAK8wG,WAAa9wG,OAMhD6N,SAAU,WACR,MAAO,cAGT8+F,WAAY,SAAS+U,EAAMnC,GACzB,OAAkB,IAAdv/G,KAAKiN,KACAy0G,EAAOnC,EAETmC,EAAO,IAAM1hH,KAAKosG,QAAQpmG,IAAIhG,KAAKmlH,kBAAkB3kG,KAAK,MAAQ,IAAM++F,GAMjF9gG,OAAQ,WACN,OAAOg2F,GAAMz0G,KAAM6yG,GAAc7yG,KADF46M,EAAQl4M,KAAKqa,UAAW,MAIzDjE,SAAU,SAASsrG,GACjB,OAAOpkH,KAAKwpB,MAAK,SAASnqB,GAAS,OAAOuvG,GAAGvvG,EAAO+kH,OAGtDnjH,QAAS,WACP,OAAOjB,KAAKktG,WAjlIM,IAolIpBl/E,MAAO,SAASrnB,EAAWxG,GACzB40G,GAAkB/0G,KAAKiN,MACvB,IAAIm4G,GAAc,EAOlB,OANAplH,KAAKqoG,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GAC5B,IAAKpa,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,GAEjC,OADAqkG,GAAc,GACP,KAGJA,GAGT93G,OAAQ,SAAS3G,EAAWxG,GAC1B,OAAOs0G,GAAMz0G,KAAM+xG,GAAc/xG,KAAM2G,EAAWxG,GAAS,KAG7DuhC,KAAM,SAAS/6B,EAAWxG,EAASwtG,GACjC,IAAIp7F,EAAQvS,KAAKqlH,UAAU1+G,EAAWxG,GACtC,OAAOoS,EAAQA,EAAM,GAAKo7F,GAG5BzsG,QAAS,SAASokH,EAAYnlH,GAE5B,OADA40G,GAAkB/0G,KAAKiN,MAChBjN,KAAKqoG,UAAUloG,EAAUmlH,EAAW9+F,KAAKrmB,GAAWmlH,IAG7D9kG,KAAM,SAAS+kG,GACbxQ,GAAkB/0G,KAAKiN,MACvBs4G,OAA0BzjH,IAAdyjH,EAA0B,GAAKA,EAAY,IACvD,IAAIC,EAAS,GACTC,GAAU,EAKd,OAJAzlH,KAAKqoG,WAAU,SAAS1tE,GACtB8qF,EAAWA,GAAU,EAAUD,GAAUD,EACzCC,GAAU7qF,MAAAA,EAAgCA,EAAE9sB,WAAa,MAEpD23G,GAGT54G,KAAM,WACJ,OAAO5M,KAAKktG,WA7nIG,IAgoIjBlnG,IAAK,SAASkrG,EAAQ/wG,GACpB,OAAOs0G,GAAMz0G,KAAMoxG,GAAWpxG,KAAMkxG,EAAQ/wG,KAG9CoZ,OAAQ,SAASmsG,EAASC,EAAkBxlH,GAE1C,IAAI2pH,EACAC,EAcJ,OAhBAhV,GAAkB/0G,KAAKiN,MAGnB8P,UAAUhX,OAAS,EACrBgkH,GAAW,EAEXD,EAAYnE,EAEd3lH,KAAKqoG,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GACxBgpG,GACFA,GAAW,EACXD,EAAYnvF,GAEZmvF,EAAYpE,EAAQhjH,KAAKvC,EAAS2pH,EAAWnvF,EAAG/4B,EAAGmf,MAGhD+oG,GAGTlE,YAAa,SAASF,EAASC,EAAkBxlH,GAC/C,IAAI29M,EAAW99M,KAAKotG,aAAaJ,UACjC,OAAO8wG,EAASvkM,OAAO8G,MAAMy9L,EAAU/gM,YAGzCiwF,QAAS,WACP,OAAOyH,GAAMz0G,KAAMixG,GAAejxG,MAAM,KAG1CqjB,MAAO,SAASqlF,EAAO9d,GACrB,OAAO6pB,GAAMz0G,KAAMiyG,GAAajyG,KAAM0oG,EAAO9d,GAAK,KAGpDphE,KAAM,SAAS7iB,EAAWxG,GACxB,OAAQH,KAAKguB,MAAM7d,GAAIxJ,GAAYxG,IAGrCggD,KAAM,SAASwzD,GACb,OAAOc,GAAMz0G,KAAM0zG,GAAY1zG,KAAM2zG,KAGvC5mG,OAAQ,WACN,OAAO/M,KAAKktG,WA7qIK,IAmrInB2Y,QAAS,WACP,OAAO7lH,KAAKqjB,MAAM,GAAI,IAGxByiG,QAAS,WACP,YAAqBhkH,IAAd9B,KAAKiN,KAAmC,IAAdjN,KAAKiN,MAAcjN,KAAKwpB,MAAK,WAAa,OAAO,MAGpFuwE,MAAO,SAASpzF,EAAWxG,GACzB,OAAOioG,EACLzhG,EAAY3G,KAAKosG,QAAQ9+F,OAAO3G,EAAWxG,GAAWH,OAI1D+lH,QAAS,SAASC,EAAS7lH,GACzB,OA10CJ,SAAwB4N,EAAUi4G,EAAS7lH,GACzC,IAAI8lH,EAASphH,KAAM0zG,YAQnB,OAPAxqG,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAC7BqkH,EAAOx2E,OACLu2E,EAAQtjH,KAAKvC,EAASw6B,EAAG/4B,EAAGmM,GAC5B,GACA,SAASyV,GAAK,OAAOA,EAAI,QAGtByiG,EAAOvN,cAi0CLwN,CAAelmH,KAAMgmH,EAAS7lH,IAGvCiN,OAAQ,SAASC,GACf,OAAOi1G,GAAUtiH,KAAMqN,IAGzB0/F,SAAU,WACR,IAAIh/F,EAAW/N,KACf,GAAI+N,EAAS8+F,OAEX,OAAO,IAAIY,EAAS1/F,EAAS8+F,QAE/B,IAAIsZ,EAAkBp4G,EAASq+F,QAAQpmG,IAAIogH,IAAa9Y,eAExD,OADA6Y,EAAgB7Z,aAAe,WAAa,OAAOv+F,EAASq+F,SACrD+Z,GAGTE,UAAW,SAAS1/G,EAAWxG,GAC7B,OAAOH,KAAKsN,OAAO6C,GAAIxJ,GAAYxG,IAGrCklH,UAAW,SAAS1+G,EAAWxG,EAASwtG,GACtC,IAAIrgB,EAAQqgB,EAOZ,OANA3tG,KAAKqoG,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GAC5B,GAAIpa,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,GAEhC,OADAusE,EAAQ,CAAC1rF,EAAG+4B,IACL,KAGJ2yD,GAGTg5B,QAAS,SAAS3/G,EAAWxG,GAC3B,IAAIoS,EAAQvS,KAAKqlH,UAAU1+G,EAAWxG,GACtC,OAAOoS,GAASA,EAAM,IAGxBg0G,SAAU,SAAS5/G,EAAWxG,EAASwtG,GACrC,OAAO3tG,KAAKotG,aAAaJ,UAAUtrE,KAAK/6B,EAAWxG,EAASwtG,IAG9D6Y,cAAe,SAAS7/G,EAAWxG,EAASwtG,GAC1C,OAAO3tG,KAAKotG,aAAaJ,UAAUqY,UAAU1+G,EAAWxG,EAASwtG,IAGnE8Y,YAAa,SAAS9/G,EAAWxG,GAC/B,OAAOH,KAAKotG,aAAaJ,UAAUsZ,QAAQ3/G,EAAWxG,IAGxDupF,MAAO,WACL,OAAO1pF,KAAK0hC,KAAK4mE,IAGnBoe,QAAS,SAASxV,EAAQ/wG,GACxB,OAAOs0G,GAAMz0G,KApkCjB,SAAwB+N,EAAUmjG,EAAQ/wG,GACxC,IAAIwmH,EAAS02F,GAActvM,GAC3B,OAAOA,EAASq+F,QAAQpmG,KACtB,SAAS20B,EAAG/4B,GAAK,OAAO+kH,EAAOzV,EAAOxuG,KAAKvC,EAASw6B,EAAG/4B,EAAGmM,OAC1DmlG,SAAQ,GAgkCW0T,CAAe5mH,KAAMkxG,EAAQ/wG,KAGlD+yG,QAAS,SAASG,GAChB,OAAOoB,GAAMz0G,KAAMozG,GAAepzG,KAAMqzG,GAAO,KAGjD/G,aAAc,WACZ,OAAO,IAAIiF,GAAoBvxG,OAGjCqC,IAAK,SAASwkH,EAAWlZ,GACvB,OAAO3tG,KAAK0hC,MAAK,SAAS3G,EAAG55B,GAAO,OAAOytG,GAAGztG,EAAK0lH,UAAa/kH,EAAW6rG,IAG7E8W,MAAO,SAASD,EAAe7W,GAM7B,IALA,IAIIQ,EAJA4vG,EAAS/9M,KAGTmmB,EAAOq2L,GAAch4F,KAEhBrW,EAAOhoF,EAAKswB,QAAQs+C,MAAM,CACjC,IAAI5zF,EAAMgtG,EAAK9uG,MAEf,IADA0+M,EAASA,GAAUA,EAAO17M,IAAM07M,EAAO17M,IAAIlB,EAAK6mG,GAAWA,KAC5CA,EACb,OAAO2F,EAGX,OAAOowG,GAGTj3F,QAAS,SAASd,EAAS7lH,GACzB,OAp5CJ,SAAwB4N,EAAUi4G,EAAS7lH,GACzC,IAAI4mH,EAAc3d,EAAQr7F,GACtBk4G,GAAUnb,EAAU/8F,GAAYkrG,KAAep0G,MAAO0zG,YAC1DxqG,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAC7BqkH,EAAOx2E,OACLu2E,EAAQtjH,KAAKvC,EAASw6B,EAAG/4B,EAAGmM,IAC5B,SAASyV,GAAK,OAAQA,EAAIA,GAAK,IAAM/d,KAAKshH,EAAc,CAACnlH,EAAG+4B,GAAKA,GAAInX,QAGzE,IAAImjG,EAAS02F,GAActvM,GAC3B,OAAOk4G,EAAOjgH,KAAI,SAASka,GAAO,OAAOu0F,GAAM1mG,EAAU44G,EAAOzmG,OA04CvD8mG,CAAehnH,KAAMgmH,EAAS7lH,IAGvC+H,IAAK,SAAS2+G,GACZ,OAAO7mH,KAAKqC,IAAIwkH,EAAW7e,KAAaA,GAG1Cif,MAAO,SAASzC,GACd,OAAOxkH,KAAKykH,MAAMD,EAAexc,KAAaA,GAGhDkf,SAAU,SAAS/gG,GAEjB,OADAA,EAAgC,mBAAlBA,EAAKrN,SAA0BqN,EAAO8lG,EAAS9lG,GACtDnmB,KAAKguB,OAAM,SAAS3uB,GAAS,OAAO8mB,EAAKrN,SAASzZ,OAG3D8nH,WAAY,SAAShhG,GAEnB,OADAA,EAAgC,mBAAlBA,EAAK+gG,SAA0B/gG,EAAO8lG,EAAS9lG,IACjD+gG,SAASlnH,OAGvBonH,MAAO,SAAShD,GACd,OAAOpkH,KAAKsmH,SAAQ,SAASjnH,GAAS,OAAOuvG,GAAGvvG,EAAO+kH,OAGzDnB,OAAQ,WACN,OAAOjjH,KAAKosG,QAAQpmG,IAAIqhH,IAAW/Z,gBAGrC/qF,KAAM,WACJ,OAAOviB,KAAKosG,QAAQY,UAAUtjB,SAGhC49B,UAAW,SAASlD,GAClB,OAAOpkH,KAAKotG,aAAaJ,UAAUoa,MAAMhD,IAG3Cl1E,IAAK,SAASykE,GACZ,OAAOE,GAAW7zG,KAAM2zG,IAG1B4T,MAAO,SAASrW,EAAQyC,GACtB,OAAOE,GAAW7zG,KAAM2zG,EAAYzC,IAGtC9hE,IAAK,SAASukE,GACZ,OAAOE,GAAW7zG,KAAM2zG,EAAa6T,GAAI7T,GAAc8T,KAGzDC,MAAO,SAASxW,EAAQyC,GACtB,OAAOE,GAAW7zG,KAAM2zG,EAAa6T,GAAI7T,GAAc8T,GAAsBvW,IAG/En+E,KAAM,WACJ,OAAO/yB,KAAKqjB,MAAM,IAGpBskG,KAAM,SAASC,GACb,OAAO5nH,KAAKqjB,MAAM9D,KAAK2vB,IAAI,EAAG04E,KAGhCC,SAAU,SAASD,GACjB,OAAOnT,GAAMz0G,KAAMA,KAAKosG,QAAQY,UAAU2a,KAAKC,GAAQ5a,YAGzD8a,UAAW,SAASnhH,EAAWxG,GAC7B,OAAOs0G,GAAMz0G,KAAM0yG,GAAiB1yG,KAAM2G,EAAWxG,GAAS,KAGhE4nH,UAAW,SAASphH,EAAWxG,GAC7B,OAAOH,KAAK8nH,UAAU33G,GAAIxJ,GAAYxG,IAGxC+4G,OAAQ,SAAShI,EAAQyC,GACvB,OAAOc,GAAMz0G,KAAM0zG,GAAY1zG,KAAM2zG,EAAYzC,KAGnD8W,KAAM,SAASJ,GACb,OAAO5nH,KAAKqjB,MAAM,EAAG9D,KAAK2vB,IAAI,EAAG04E,KAGnCK,SAAU,SAASL,GACjB,OAAOnT,GAAMz0G,KAAMA,KAAKosG,QAAQY,UAAUgb,KAAKJ,GAAQ5a,YAGzDkb,UAAW,SAASvhH,EAAWxG,GAC7B,OAAOs0G,GAAMz0G,KAn3CjB,SAA0B+N,EAAUpH,EAAWxG,GAC7C,IAAIgoH,EAAevW,GAAa7jG,GAoChC,OAnCAo6G,EAAarb,kBAAoB,SAAS9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACnE,GAAIgtG,EACF,OAAOhtG,KAAK4sG,cAAcvE,UAAUr7F,EAAIggG,GAE1C,IAAI/mF,EAAa,EAIjB,OAHAlY,EAASs6F,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GAC/B,OAAOpa,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,MAAQkF,GAAcjZ,EAAG2tB,EAAG/4B,EAAGu6M,MAEhEl2L,GAETkiG,EAAahb,mBAAqB,SAAShnG,EAAM6mG,GAAU,IAAImvG,EAASn8M,KACtE,GAAIgtG,EACF,OAAOhtG,KAAK4sG,cAAcM,WAAW/mG,EAAM6mG,GAE7C,IAAI7/F,EAAWY,EAASm/F,WA3gGN,EA2gGkCF,GAChDob,GAAY,EAChB,OAAO,IAAIld,GAAS,WAClB,IAAKkd,EACH,MA1+FC,CAAE/oH,WAAOyC,EAAWizF,MAAM,GA4+F7B,IAAIoZ,EAAOhhG,EAASspC,OACpB,GAAI03D,EAAKpZ,KACP,OAAOoZ,EAET,IAAI57F,EAAQ47F,EAAK9uG,MACbuC,EAAI2Q,EAAM,GACVooB,EAAIpoB,EAAM,GACd,OAAK5L,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGu6M,GAxhGnB,IA4hGTh2M,EAA2BgoG,EAChChD,EAAchlG,EAAMvE,EAAG+4B,EAAGwzE,IAJ1Bia,GAAY,EAp/FX,CAAE/oH,WAAOyC,EAAWizF,MAAM,QA2/F1BozB,EA80CcE,CAAiBroH,KAAM2G,EAAWxG,KAGvDmoH,UAAW,SAAS3hH,EAAWxG,GAC7B,OAAOH,KAAKkoH,UAAU/3G,GAAIxJ,GAAYxG,IAGxC2wG,SAAU,WACR,OAAO9wG,KAAKstG,gBAMdqB,SAAU,WACR,OAAO3uG,KAAKg5G,SAAWh5G,KAAKg5G,OAwQhC,SAAsBjrG,GACpB,GAAIA,EAASd,OAAS6lF,EAAAA,EACpB,OAAO,EAET,IAAIy1B,EAAUzd,EAAU/8F,GACpBy6G,EAAQpf,EAAQr7F,GAChBisB,EAAIuuF,EAAU,EAAI,EAUtB,OAGF,SAA0Bt7G,EAAM+sB,GAQ9B,OAPAA,EAAI+0E,GAAK/0E,EAAG,YACZA,EAAI+0E,GAAK/0E,GAAK,GAAKA,KAAO,GAAI,WAC9BA,EAAI+0E,GAAK/0E,GAAK,GAAKA,KAAO,GAAI,GAE9BA,EAAI+0E,IADJ/0E,GAAKA,EAAI,WAAa,GAAK/sB,GACd+sB,IAAM,GAAI,YAEnBg1E,IADJh1E,EAAI+0E,GAAK/0E,EAAIA,IAAM,GAAI,aACXA,IAAM,IAVXyuF,CATI16G,EAASs6F,UAClBmgB,EACED,EACE,SAAS5tF,EAAG/4B,GAAMo4B,EAAI,GAAKA,EAAI0uF,GAAU35G,GAAK4rB,GAAI5rB,GAAKnN,IAAM,GAC7D,SAAS+4B,EAAG/4B,GAAMo4B,EAAIA,EAAI0uF,GAAU35G,GAAK4rB,GAAI5rB,GAAKnN,IAAM,GAC1D2mH,EACE,SAAS5tF,GAAMX,EAAI,GAAKA,EAAIjrB,GAAK4rB,GAAK,GACtC,SAASA,GAAMX,EAAIA,EAAIjrB,GAAK4rB,GAAK,IAETX,GAxRSgkL,CAAah+M,UAgBtD,IAAIi+M,GAAoBhyF,EAASzpH,UACjCy7M,GAAkBhD,IAAwB,EAC1CgD,GAAkBhzG,GAAmBgzG,GAAkBlxM,OACvDkxM,GAAkBJ,OAASI,GAAkBt0M,QAC7Cs0M,GAAkB94F,iBAAmB7P,GACrC2oG,GAAkBrjM,QAClBqjM,GAAkBhyG,SAAW,WAAa,OAAOjsG,KAAK6N,YACtDowM,GAAkBp1F,MAAQo1F,GAAkBv3F,QAC5Cu3F,GAAkB1kI,SAAW0kI,GAAkBnlM,SAE/C6pG,GAAMm4F,EAAe,CAInBjpG,KAAM,WACJ,OAAO4C,GAAMz0G,KAAM0xG,GAAY1xG,QAGjCwjH,WAAY,SAAStS,EAAQ/wG,GAAU,IAAIg8M,EAASn8M,KAC9CimB,EAAa,EACjB,OAAOwuF,GAAMz0G,KACXA,KAAKosG,QAAQpmG,KACX,SAAS20B,EAAG/4B,GAAK,OAAOsvG,EAAOxuG,KAAKvC,EAAS,CAACyB,EAAG+4B,GAAI1U,IAAck2L,MACnE7vG,iBAINwc,QAAS,SAAS5X,EAAQ/wG,GAAU,IAAIg8M,EAASn8M,KAC/C,OAAOy0G,GAAMz0G,KACXA,KAAKosG,QAAQyF,OAAO7rG,KAClB,SAASpE,EAAG+4B,GAAK,OAAOu2E,EAAOxuG,KAAKvC,EAASyB,EAAG+4B,EAAGwhL,MACnDtqG,WAMR,IAAIqsG,GAAyBpD,EAAct4M,UAmL3C,SAAS6kH,GAAU1sF,EAAG/4B,GACpB,OAAOA,EAGT,SAASwkH,GAAYzrF,EAAG/4B,GACtB,MAAO,CAACA,EAAG+4B,GAGb,SAASxqB,GAAIxJ,GACX,OAAO,WACL,OAAQA,EAAU0Z,MAAMrgB,KAAM+c,YAIlC,SAASyqG,GAAI7gH,GACX,OAAO,WACL,OAAQA,EAAU0Z,MAAMrgB,KAAM+c,YAIlC,SAASu4F,GAAYj2G,GACnB,MAAwB,iBAAVA,EAAqB+M,KAAKC,UAAUhN,GAAS8gB,OAAO9gB,GAGpE,SAASqqH,KACP,OAAO/U,EAAQ53F,WAGjB,SAAS0qG,GAAqBjkG,EAAGC,GAC/B,OAAOD,EAAIC,EAAI,EAAID,EAAIC,GAAK,EAAI,EAiClC,SAASilG,GAAUllG,EAAGC,GACpB,OAAOD,EAAIC,EAAI,YAAcD,GAAK,IAAMA,GAAK,GAAK,EAyBpD,OA1QA06L,GAAuBhD,IAAqB,EAC5CgD,GAAuBjzG,GAAmBgzG,GAAkBh9M,QAC5Di9M,GAAuBL,OAASI,GAAkBt5F,SAClDu5F,GAAuB/4F,iBAAmB,SAASxqF,EAAG/4B,GAAK,OAAOwK,KAAKC,UAAUzK,GAAK,KAAO0zG,GAAY36E,IAIzGgoF,GAAMo4F,EAAiB,CAIrB3tG,WAAY,WACV,OAAO,IAAIqD,GAAgBzwG,MAAM,IAMnCsN,OAAQ,SAAS3G,EAAWxG,GAC1B,OAAOs0G,GAAMz0G,KAAM+xG,GAAc/xG,KAAM2G,EAAWxG,GAAS,KAG7DmnC,UAAW,SAAS3gC,EAAWxG,GAC7B,IAAIoS,EAAQvS,KAAKqlH,UAAU1+G,EAAWxG,GACtC,OAAOoS,EAAQA,EAAM,IAAM,GAG7BuF,QAAS,SAASssG,GAChB,IAAIjjH,EAAMnB,KAAKonH,MAAMhD,GACrB,YAAetiH,IAARX,GAAqB,EAAIA,GAGlC24B,YAAa,SAASsqF,GACpB,IAAIjjH,EAAMnB,KAAKsnH,UAAUlD,GACzB,YAAetiH,IAARX,GAAqB,EAAIA,GAGlC6rG,QAAS,WACP,OAAOyH,GAAMz0G,KAAMixG,GAAejxG,MAAM,KAG1CqjB,MAAO,SAASqlF,EAAO9d,GACrB,OAAO6pB,GAAMz0G,KAAMiyG,GAAajyG,KAAM0oG,EAAO9d,GAAK,KAGpD7yE,OAAQ,SAAS3W,EAAO4nH,GACtB,IAAIC,EAAUlsG,UAAUhX,OAExB,GADAijH,EAAYzpG,KAAK2vB,IAAgB,EAAZ85E,EAAe,GACpB,IAAZC,GAA8B,IAAZA,IAAkBD,EACtC,OAAOhpH,KAKToB,EAAQwnG,EAAaxnG,EAAOA,EAAQ,EAAIpB,KAAK+5F,QAAU/5F,KAAKiN,MAC5D,IAAIi8G,EAAUlpH,KAAKqjB,MAAM,EAAGjiB,GAC5B,OAAOqzG,GACLz0G,KACY,IAAZipH,EACEC,EACAA,EAAQzqG,OAAOk2F,EAAQ53F,UAAW,GAAI/c,KAAKqjB,MAAMjiB,EAAQ4nH,MAO/DG,cAAe,SAASxiH,EAAWxG,GACjC,IAAIoS,EAAQvS,KAAKwmH,cAAc7/G,EAAWxG,GAC1C,OAAOoS,EAAQA,EAAM,IAAM,GAG7Bm3E,MAAO,WACL,OAAO1pF,KAAKqC,IAAI,IAGlB6wG,QAAS,SAASG,GAChB,OAAOoB,GAAMz0G,KAAMozG,GAAepzG,KAAMqzG,GAAO,KAGjDhxG,IAAK,SAASjB,EAAOusG,GAEnB,OADAvsG,EAAQmnG,EAAUvoG,KAAMoB,IACR,GAAMpB,KAAKiN,OAAS6lF,EAAAA,QACjBhxF,IAAd9B,KAAKiN,MAAsB7L,EAAQpB,KAAKiN,KAC3C0gG,EACA3tG,KAAK0hC,MAAK,SAAS3G,EAAG55B,GAAO,OAAOA,IAAQC,SAAQU,EAAW6rG,IAGnEzlG,IAAK,SAAS9G,GAEZ,OADAA,EAAQmnG,EAAUvoG,KAAMoB,KACR,SAAoBU,IAAd9B,KAAKiN,KACzBjN,KAAKiN,OAAS6lF,EAAAA,GAAY1xF,EAAQpB,KAAKiN,MACd,IAAzBjN,KAAK8X,QAAQ1W,KAIjBgoH,UAAW,SAAS7D,GAClB,OAAO9Q,GAAMz0G,KAx1CjB,SAA0B+N,EAAUw3G,GAClC,IAAI8D,EAAqBzX,GAAa7jG,GA2BtC,OA1BAs7G,EAAmBp8G,KAAOc,EAASd,MAAwB,EAAhBc,EAASd,KAAU,EAC9Do8G,EAAmBvc,kBAAoB,SAAS9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACrEimB,EAAa,EAMjB,OALAlY,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAC5B,QAASqkB,IAAsD,IAAxCjZ,EAAGu4G,EAAWt/F,IAAck2L,MACpB,IAAhCnvM,EAAG2tB,EAAG1U,IAAck2L,KACpBnvG,GAEK/mF,GAETojG,EAAmBlc,mBAAqB,SAAShnG,EAAM6mG,GACrD,IAEImB,EAFAhhG,EAAWY,EAASm/F,WA1sGP,EA0sGkCF,GAC/C/mF,EAAa,EAEjB,OAAO,IAAIilF,GAAS,WAClB,QAAKiD,GAAQloF,EAAa,KACxBkoF,EAAOhhG,EAASspC,QACPs+C,KACAoZ,EAGJloF,EAAa,EAClBklF,EAAchlG,EAAM8f,IAAcs/F,GAClCpa,EAAchlG,EAAM8f,IAAckoF,EAAK9uG,MAAO8uG,OAG7Ckb,EA4zCcC,CAAiBtpH,KAAMulH,KAG5CgE,WAAY,WACV,IAAImzF,EAAY,CAAC18M,MAAMye,OAAOk2F,EAAQ53F,YAClCysG,EAASxV,GAAeh0G,KAAKosG,QAASpC,EAAWwD,GAAIkvG,GACrDjzF,EAAcD,EAAOtW,SAAQ,GAIjC,OAHIsW,EAAOv8G,OACTw8G,EAAYx8G,KAAOu8G,EAAOv8G,KAAOyvM,EAAU32M,QAEtC0uG,GAAMz0G,KAAMypH,IAGrBxG,OAAQ,WACN,OAAOgB,GAAM,EAAGjkH,KAAKiN,OAGvBsV,KAAM,WACJ,OAAOviB,KAAKqC,KAAK,IAGnBylH,UAAW,SAASnhH,EAAWxG,GAC7B,OAAOs0G,GAAMz0G,KAAM0yG,GAAiB1yG,KAAM2G,EAAWxG,GAAS,KAGhEqqB,IAAK,WAEH,OAAOiqF,GAAMz0G,KAAMg0G,GAAeh0G,KAAM0pH,GADxB,CAAC1pH,MAAMye,OAAOk2F,EAAQ53F,eAIxC4sG,QAAS,SAASzV,GAChB,IAAIwoG,EAAY/nG,EAAQ53F,WAExB,OADA2/L,EAAU,GAAK18M,KACRy0G,GAAMz0G,KAAMg0G,GAAeh0G,KAAMk0G,EAAQwoG,OAKpD3B,EAAgBv4M,UAAU24M,IAAuB,EACjDJ,EAAgBv4M,UAAU44M,IAAuB,EAIjDz4F,GAAMq4F,EAAa,CAIjB34M,IAAK,SAAShD,EAAOsuG,GACnB,OAAO3tG,KAAKkI,IAAI7I,GAASA,EAAQsuG,GAGnC70F,SAAU,SAASzZ,GACjB,OAAOW,KAAKkI,IAAI7I,IAMlB4jH,OAAQ,WACN,OAAOjjH,KAAK8wG,cAKhBkqG,EAAYx4M,UAAU0F,IAAM+1M,GAAkBnlM,SAC9CkiM,EAAYx4M,UAAU+2E,SAAWyhI,EAAYx4M,UAAUsW,SAKvD6pG,GAAM7Y,EAAUgxG,EAAct4M,WAC9BmgH,GAAM3Y,EAAY+wG,EAAgBv4M,WAClCmgH,GAAMzY,EAAQ8wG,EAAYx4M,WAE1BmgH,GAAM9Y,GAAiBixG,EAAct4M,WACrCmgH,GAAM5Y,GAAmBgxG,EAAgBv4M,WACzCmgH,GAAM1Y,GAAe+wG,EAAYx4M,WAuEjB,CAEdypH,SAAUA,EAEVriB,IAAKA,EACLD,WAAYA,GACZ9kG,IAAKA,GACLo0G,WAAYA,GACZoE,KAAMA,GACNkE,MAAOA,GACP/zG,IAAKA,GACLm2G,WAAYA,GAEZyG,OAAQA,GACRnG,MAAOA,GACPwH,OAAQA,GAER7c,GAAIA,GACJgd,OAAQA,IAl2JsEh6G,iCCPlF1S,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQi/K,4BAAyB,EACjC,MAAM9+K,EAAS,EAAQ,MAYvB,MAAM8+K,UAA+B9+K,EAAOC,MAIxCC,YAAYC,GACRC,MAAMD,IAGdN,EAAQi/K,uBAAyBA,sCCtBjC,IAAI78K,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA6BlD,iCCflDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4gL,yBAAsB,EAC9B,MAAMzB,EAAoB,EAAQ,OAYlC,MAAMyB,UAA4BzB,EAAkB4/B,sBAIhD1+M,YAAYC,GACRC,MAAMD,IAGdN,EAAQ4gL,oBAAsBA,sCCtB9B,IAAIx+K,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA0BlD,iCCf/CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQo/K,sBAAmB,EAC3B,MAAM4/B,EAAyB,EAAQ,OAYvC,MAAM5/B,UAAyB4/B,EAAuBC,qBAIlD5+M,YAAYC,GACRC,MAAMD,GAWVE,8BAA8BC,EAAQkM,EAAOjI,EAAS27K,EAAc,GAChE,OAAOz/K,KAAKs+M,wBAAwBz+M,EAAQkM,EAAO,CAAEtI,IAAK5D,EAAO4D,IAAKoM,QAAQ,EAAO/L,QAAAA,EAAS27K,YAAAA,KAGtGrgL,EAAQo/K,iBAAmBA,gCClC3Bt/K,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQi/M,qBAAuBj/M,EAAQm/M,YAAcn/M,EAAQygL,mBAAgB,EAC7E,MAAMl1K,EAAW,EAAQ,OACnB9H,EAAoB,EAAQ,MAC5BtD,EAAS,EAAQ,MACvB,SAASsgL,IACL,MAAM32K,EAAO,IAAIyB,EAASiB,SAE1B,OADA1C,EAAKzD,KAAK,MACHyD,EAQX,SAASq1M,EAAYp+M,GACjB,OAAQA,EAAQkC,IAAIQ,EAAkBsF,cAAciM,SAPxDhV,EAAQygL,cAAgBA,EASxBzgL,EAAQm/M,YAAcA,EAYtB,MAAMF,UAA6B9+M,EAAOC,MACtCC,YAAYC,GACRC,MAAMD,GASVE,8BAA8BC,EAAQkM,EAAOrI,GACzC,GAAI66M,EAAY1+M,EAAOM,SACnB,MAAM4L,EAGV,OADA/L,KAAKmX,SAAStX,EAAOM,QAAS4L,EAAM2K,SAC7B,IAAKhT,EAAQwF,KAAM22K,MAGlCzgL,EAAQi/M,qBAAuBA,gCClD/Bn/M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ++M,sBAAwB/+M,EAAQo/M,+BAA4B,EACpE,MAAM7zM,EAAW,EAAQ,OACnByzM,EAAyB,EAAQ,OASvC,SAASI,EAA0B9sM,EAAM+sM,GACrC,MAAMC,EAAWhtM,EAAKooB,YAAY,KAElC,OAAQ4kL,GAAY,GAAKD,IAAgB/sM,EAAK2R,MAAMq7L,EAAW,KAAQ,GAE3Et/M,EAAQo/M,0BAA4BA,EAUpC,MAAML,UAA8BC,EAAuBC,qBACvD5+M,YAAYC,GACRC,MAAMD,GAEVE,WAAWC,GACP,OAAO,EAQX8+M,8BAA8B9+M,EAAQqJ,GAUlC,OARK,EAAIk1M,EAAuBG,aAAa1+M,EAAOM,WAChD+I,EAAKsC,GAAG,SAASO,IACb/L,KAAKmX,SAAStX,EAAOM,QAAS4L,EAAM2K,SAAS,KAAM,CAAGjT,IAAK5D,EAAO4D,QAElEyF,EAAKzD,KAAK,SAEdyD,EAAOA,EAAK+jH,KAAK,IAAItiH,EAAS21H,YAAY,CAAEoB,YAAY,MAErDx4H,EAEXtJ,UAAUC,GACN,MAAM,QAAEM,GAAYN,EACdogL,QAAoBjgL,KAAK4+M,oBAAoBh7M,QAAQ,IACpD/D,EACHO,WAAYR,gBAAmBI,KAAK6+M,yBAAyBj7M,QAAQ,CAAEzD,QAAAA,EAASC,YAAY,OAAUA,aAE1G,IAAIkH,EACJ,IACIA,SAAgBtH,KAAK8+M,cAAcl7M,QAAQ,CACvCzD,QAAAA,EACAJ,OAAQ,CAAEI,QAAAA,KAAY8/K,EAAa76K,eAAgBpF,KAAK04B,YAAYunJ,IACpE//K,gBAAiB+/K,EAAY3+K,WACzBk9M,EAA0Bv+B,EAAYx8K,IAAKzD,KAAKy+M,gBAChD5+M,EAAOyB,aACXvB,OACJuH,EAAO4B,KAAOlJ,KAAK2+M,8BAA8B9+M,EAAQyH,EAAO4B,MAEpE,MAAO6C,SAEGk0K,EAAY/2K,KAAKgH,WACvB5I,QAAetH,KAAKs+M,wBAAwBz+M,EAAQkM,EAAO,IAG/D,MAAO,IAAKk0K,KAAgB34K,IAGpClI,EAAQ++M,sBAAwBA,sCC9EhC,IAAI38M,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAuBlD,GAC5CkD,EAAa,EAAQ,OAA4BlD,GACjDkD,EAAa,EAAQ,OAA2BlD,iCCjBhDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQihL,uBAAoB,EAC5B,MAAM9gL,EAAS,EAAQ,MAavB,MAAM8gL,UAA0B9gL,EAAOC,MAInCC,YAAYC,GACRC,MAAMD,IAGdN,EAAQihL,kBAAoBA,sCCvB5B,IAAI7+K,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAwBlD,iCCf7CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2/M,yBAAsB,EAC9B,MAAMx/M,EAAS,EAAQ,MAYvB,MAAMw/M,UAA4Bx/M,EAAOC,MAIrCC,YAAYC,GACRC,MAAMD,IAGdN,EAAQ2/M,oBAAsBA,gCCtB9B7/M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4/M,mCAAgC,EACxC,MAAMC,EAAwB,EAAQ,OAMtC,MAAMD,UAAsCC,EAAsBF,oBAC9Dt/M,YAAYC,GACRC,MAAMD,GACNM,KAAKk/M,oBAAsB,GAC3Bl/M,KAAKk/M,oBAAsB,GAE/BlK,sBAAsB17G,GAClBt5F,KAAKk/M,oBAAoBz5M,KAAK6zF,GAElC15F,WAAWC,GACP,OAAO,EAEXD,UAAUC,GACN,IAAK,MAAMy5F,KAAYt5F,KAAKk/M,oBACxB5lH,EAASz5F,GAEb,MAAO,IAGfT,EAAQ4/M,8BAAgCA,sCC3BxC,IAAIx9M,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA0BlD,GAC/CkD,EAAa,EAAQ,OAAoClD,iCChBzDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0D,eAAY,EACpB,MAAMvD,EAAS,EAAQ,MACjBmP,EAAgC,EAAQ,OACxCC,EAAW,EAAQ,OACnBC,EAAsB,6BAa5B,MAAM9L,UAAkBvD,EAAOC,MAI3BC,YAAYC,GACRC,MAAMD,GAQV0K,sBAAsByE,GAClB,OAAOF,EAASE,IAAkB,OAATA,EACrBA,EACA,IAAIH,EAA8BI,wBAAwBD,GAOlEzE,2BAA2ByE,GACvB,OAAOD,EAAoBC,GAM/BzE,qBAAqBtG,GACjB,MAAMiL,EAAO,GAIb,OAHAjL,EAAQ5C,SAAQ,CAAC7B,EAAO8B,KACpB4N,EAAK5N,GAAO9B,KAET0P,GAGf3P,EAAQ0D,UAAYA,sCCxDpB,IAAItB,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAgBlD,iCCfrCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQqF,eAAY,EACpB,MAAMlF,EAAS,EAAQ,MAavB,MAAMkF,UAAkBlF,EAAOC,MAI3BC,YAAYC,GACRC,MAAMD,IAGdN,EAAQqF,UAAYA,sCCvBpB,IAAIjD,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAgBlD,iCCfrCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmiL,iCAA8B,EACtC,MAAMhiL,EAAS,EAAQ,MAYvB,MAAMgiL,UAAoChiL,EAAOC,MAI7CC,YAAYC,GACRC,MAAMD,IAGdN,EAAQmiL,4BAA8BA,sCCtBtC,IAAI//K,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAkClD,iCCfvDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4P,yBAAsB,EAC9B,MAAMnM,EAAoB,EAAQ,MAC5BtD,EAAS,EAAQ,MACjB0P,EAAiB,EAAQ,OACzBb,EAAa,EAAQ,OAO3B,IAAIc,EAAe,EAYnB,MAAMF,UAA4BzP,EAAOC,MAIrCC,YAAYC,GACRC,MAAMD,GAQV0K,uBAAuB1G,GAEnB,OADAsL,EAAoBG,oBAAoBzL,EAAQ,YACzCA,EAQX0G,oBAAoB1G,GAEhB,OADAsL,EAAoBG,oBAAoBzL,EAAQ,SACzCA,EAQX0G,sBAAsB1G,GAElB,OADAsL,EAAoBG,oBAAoBzL,EAAQ,WACzCA,EAQX0G,mBAAmB1G,GAEf,OADAsL,EAAoBG,oBAAoBzL,EAAQ,QACzCA,EAOX0G,uBAAuBhF,GACnB,IAAIgK,EAEJ,MAAO,IAAOA,IAAeA,EAAahK,KAO9CgF,2BAA2B1G,EAAQ2D,GAC/B,GAAI3D,EAAOyC,OAASkB,EAChB,MAAM,IAAI7G,MAAM,wCAAwC6G,eAA0B3D,EAAOyC,SAGjGiE,gCAAgCjK,GAC5B,MAAMkP,EAAMlP,EAAQkC,IAAIQ,EAAkBsF,cAAcI,gBAClDD,EAAUnI,EAAQkC,IAAIQ,EAAkBsF,cAAcG,SAE5D,GAAInI,EAAQ+H,IAAIrF,EAAkBsF,cAAcmH,2BAA6BnP,EAAQ+H,IAAIrF,EAAkBsF,cAAcoH,oBACrH,MAAM,IAAI/O,MAAM,4FAEpB,IAAI8O,EAA2BnP,EAC1BkC,IAAIQ,EAAkBsF,cAAcmH,0BAEzC,MAAMC,EAAqBpP,EACtBkC,IAAIQ,EAAkBsF,cAAcoH,oBAIzC,OAHIA,IACAD,EAA2BE,GAAqBD,EAAmBC,EAAkBnQ,QAElF,CAAEgQ,IAAAA,EAAK/G,QAAAA,EAASgH,yBAAAA,GAQ3BlF,4BAA4BjK,EAASqJ,GACjC,MAAO,IACAxJ,KAAKyP,yBAAyBtP,GACjCuP,MAAQlM,GAAU,IAAIyL,EAAeU,wBAAwBnM,GAAS,SAAS0L,MASvF9E,iCAAiCjK,EAASqJ,GACtC,MAAMoG,EAAoB,IACnB5P,KAAKyP,yBAAyBtP,GACjCuP,MAAQlM,GAAUwH,QAAQC,QAAQ,IAAIgE,EAAeU,wBAAwBnM,GAAS,SAAS0L,OAKnG,OAHI1F,IACAoG,EAAkBC,OAASb,EAAoBc,wBAAwB3P,EAASqJ,IAE7EoG,EAOXxF,+BAA+BjK,EAASqJ,GACpC,OAAO5J,MAAOmQ,EAAMtE,KAChB,MAAMvF,GAAY,EAAIkI,EAAWhF,sBAAsB2G,EAAKvM,MAAOiI,GAC7DuE,QAAkBxG,EAAuB5F,QAAQ,CAAEsC,UAAAA,EAAW/F,QAAAA,IAC9DuD,EAASsL,EAAoBiB,gBAAgBD,GACnD,OAAO,IAAIhF,SAAQ,CAACC,EAASC,KACzBxH,EAAO4G,eAAekB,GAAG,OAAO,KAC5BP,GAAQ,MAEZvH,EAAO4G,eAAekB,GAAG,QAASN,GAClCxH,EAAO4G,eAAekB,GAAG,QAAQ,KAC7B9H,EAAO4G,eAAe4F,QACtBjF,GAAQ,SAGXkB,MAAM0D,GAAWE,EAAKI,KAAON,EAASA,KAOnDzF,uBAAuBjK,GACnB,GAAIA,EAAQkC,IAAIQ,EAAkBuN,mBAAmBC,UACjD,MAAM,IAAI7P,MAAM,kDAI5BpB,EAAQ4P,oBAAsBA,gCCzK9B9P,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQkR,8BAA2B,EACnC,MAAMzN,EAAoB,EAAQ,MAC5B0N,EAAwB,EAAQ,OAItC,MAAMD,UAAiCC,EAAsBvB,oBACzDvP,YAAYC,EAAM8Q,GAEd,GADA7Q,MAAM,IAAKD,EAAM8Q,cAAAA,KACZxQ,KAAKwQ,cACN,MAAM,IAAIhQ,MAAM,sDAGxBZ,WAAWC,GACP,IAAKA,EAAOqG,UACR,MAAM,IAAI1F,MAAM,0DAEpB,GAAIX,EAAOqG,UAAUC,OAASnG,KAAKwQ,cAC/B,MAAM,IAAIhQ,MAAM,SAASR,KAAKkD,sBAAsBlD,KAAKwQ,qCAAqC3Q,EAAOqG,UAAUC,QAEnH,MAAMD,EAAYrG,EAAOqG,UACzB,OAAOlG,KAAKyQ,cAAcvK,EAAWrG,EAAOM,SAEhDP,UAAUC,GAEN,MAAM0J,EAA0B1J,EAAOM,QAClCkC,IAAIQ,EAAkBsF,cAAcoB,yBACrCA,IACAA,EAAwBzE,aAAajF,EAAOqG,UAAUC,UAAMrE,EAAWjC,EAAOqG,UAAWrG,EAAOM,QAAQkC,IAAIQ,EAAkBsF,cAAcuI,uBAAwB1Q,KAAKkD,KAAM,IAC/KrD,EAAOM,QAAUN,EAAOM,QAAQoF,IAAI1C,EAAkBsF,cAAcuI,sBAAuB7Q,EAAOqG,YAEtG,MAAMA,EAAYrG,EAAOqG,UACnByK,EAAa9Q,EAAOM,QAAQoF,IAAI1C,EAAkBuN,mBAAmBlK,UAAWA,GAChFxC,QAAe1D,KAAK4Q,aAAa1K,EAAWyK,GAKlD,MAJI,aAAcjN,IACdA,EAAO0B,SAAWmL,EAAsBvB,oBACnC6B,gBAAgBnN,EAAO0B,WAEzB1B,GAGftE,EAAQkR,yBAA2BA,gCC1CnCpR,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0R,sCAAmC,EAC3C,MAAMC,EAA6B,EAAQ,OAI3C,MAAMD,UAAyCC,EAA2BT,yBACtE7Q,YAAYC,EAAM8Q,GACd7Q,MAAMD,EAAM8Q,IAGpBpR,EAAQ0R,iCAAmCA,gCCX3C5R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgK,qBAAuBhK,EAAQ4R,qBAAkB,EACzD,MAAMC,EAAqB,EAAQ,OAC7BtM,EAAe,EAAQ,MACvBuM,EAAoB,EAAQ,MAC5BC,EAAK,IAAIF,EAAmB/C,gBAalC,SAAS8C,EAAgBI,EAAM3F,GAC3B,GAAsB,aAAlB2F,EAAKtK,SAAyB,CAC9B,MAAMzH,EAAQoM,EAASpJ,IAAI+O,GAC3B,GAAI/R,EACA,OAAOA,EAGf,OAAO+R,EAEXhS,EAAQ4R,gBAAkBA,EAkL1B5R,EAAQgK,qBAxKR,SAASA,EAAqBlD,EAAWuF,EAAU4F,EAAU,IAKzD,OAJAA,EAAU,CACNC,sBAAuB,0BAA2BD,GAAUA,EAAQC,sBACpEC,aAAY,eAAgBF,IAAUA,EAAQE,YAE3CL,EAAkBM,KAAKC,aAAavL,EAAW,CAClDwL,KAAI,CAACC,EAAIC,KAGE,CACHC,SAAS,EACTvK,OAAQsK,EAAQE,WAAWd,EAAgBW,EAAGjL,QAAS+E,GAAWkG,EAAGhL,UAAWqK,EAAgBW,EAAG/K,OAAQ6E,GAAWuF,EAAgBW,EAAG9K,MAAO4E,MAGxJrF,QAAO,CAACuL,EAAIC,KAED,CACHC,SAAS,EACTvK,OAAQsK,EAAQG,cAAcf,EAAgBW,EAAGjL,QAAS+E,GAAWuF,EAAgBW,EAAGhL,UAAW8E,GAAWuF,EAAgBW,EAAG/K,OAAQ6E,GAAWuF,EAAgBW,EAAG9K,MAAO4E,MAGtLuG,OAAOL,GAIH,GAAIlG,EAASvD,IAAIyJ,EAAGpL,UAAW,CAC3B,GAAI8K,EAAQC,sBACR,MAAM,IAAI9Q,MAAM,2BAA0B,EAAImE,EAAa8B,cAAckL,EAAGpL,iCAG5E,MAAO,CACHsL,SAAS,EACTvK,OAAQ8B,EAAqBuI,EAAGnO,MAAOiI,EAAU4F,IAI7D,MAAO,CACHQ,SAAS,EACTvK,OAAQqK,IAGhBM,MAAMN,EAAIC,GAIN,GAAIP,EAAQC,sBAAuB,CAC/B,IAAK,MAAM/K,KAAYoL,EAAGrL,UACtB,GAAImF,EAASvD,IAAI3B,GACb,MAAM,IAAI/F,MAAM,2BAA0B,EAAImE,EAAa8B,cAAcF,8BAGjF,MAAO,CACHsL,SAAS,EACTvK,OAAQqK,GAGhB,MAAMrL,EAAYqL,EAAGrL,UAAUgH,QAAO/G,IAAakF,EAASvD,IAAI3B,KAChE,MAAO,CACHsL,SAAS,EACTvK,OAAQsK,EAAQM,YAAYP,EAAGnO,MAAO8C,EAAWqL,EAAGQ,cAG5DC,QAAQT,EAAIC,GAIR,GAAIP,EAAQC,sBAAuB,CAC/B,IAAK,MAAM/K,KAAYoL,EAAGrL,UACtB,GAAImF,EAASvD,IAAI3B,GACb,MAAM,IAAI/F,MAAM,2BAA0B,EAAImE,EAAa8B,cAAcF,4BAGjF,MAAO,CACHsL,SAAS,EACTvK,OAAQqK,GAGhB,MAAMrL,EAAYqL,EAAGrL,UAAUgH,QAAO/G,IAAakF,EAASvD,IAAI3B,KAG1D8L,EAAclB,EAAG1F,SAASkG,EAAGrL,UAAUN,KAAIO,IAC7C,MAAM+L,EAAU7G,EAASpJ,IAAIkE,GAC7B,GAAI+L,EACA,MAAO,CAAC/L,EAAU+L,MAIvBhF,QAAOiF,GAASC,QAAQD,MAC3B,MAAO,CACHV,SAAS,EACTvK,OAAQsK,EAAQa,cAAcrJ,EAAqBuI,EAAGnO,MAAO6O,EAAahB,GAAU/K,KAG5FyG,OAAO4E,EAAIC,GAIP,IAAIP,EAAQC,sBAOP,CACD,MAAMhL,EAAYqL,EAAGrL,UAAUgH,QAAO/G,IAAakF,EAASvD,IAAI3B,KAC1DmM,EAAgBf,EAAGlG,SAASzF,KAAIsM,IAClC,MAAMK,EAAa,IAAKL,GACxB,IAAIM,GAAQ,EAWZ,OAVAnH,EAASvK,SAAQ,CAAC7B,EAAO8B,KACrB,MAAM0R,GAAY,EAAIlO,EAAa8B,cAActF,GAC7C0R,KAAaF,IACRtT,EAAM+N,OAAOuF,EAAWE,MAEzBD,GAAQ,UAELD,EAAWE,OAGnBD,EAAQD,OAAa7Q,KAC7BwL,OAAOkF,SACV,MAAO,CACHX,SAAS,EACTvK,OAAQsK,EAAQkB,aAAaxM,EAAWoM,IAzB5C,IAAK,MAAMnM,KAAYoL,EAAGrL,UACtB,GAAImF,EAASvD,IAAI3B,GACb,MAAM,IAAI/F,MAAM,2BAA0B,EAAImE,EAAa8B,cAAcF,4BA0BrF,MAAO,CACHsL,SAAS,EACTvK,OAAQqK,IAGhBoB,WAAWpB,EAAIC,GACX,IAAKP,EAAQE,WACT,MAAO,CACHM,SAAS,EACTvK,OAAQqK,GAGhB,GAA0B,SAAtBA,EAAGqB,eAEH,MAAO,CACHnB,SAAS,EACTvK,OAAQsK,EAAQqB,qBAAqBjC,EAAgBW,EAAGP,KAAM3F,KAGtE,GAA0B,cAAtBkG,EAAGqB,gBACH,aAAcrB,GACdlG,EAASvD,IAAIyJ,EAAGpL,UAAW,CAI3B,GAAI8K,EAAQC,sBACR,MAAM,IAAI9Q,MAAM,kBAAiB,EAAImE,EAAa8B,cAAckL,EAAGpL,kBAAkBoL,EAAGuB,yBAGxF,MAAO,CACHrB,SAAS,EACTvK,OAAQqK,GAIpB,MAAO,CACHE,SAAS,EACTvK,OAAQqK,qCCxMxBzS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+T,uBAAoB,EAC5B,MAAM5T,EAAS,EAAQ,MAIvB,MAAM4T,UAA0B5T,EAAO6T,WACnC3T,YAAYC,GACRC,MAAM,IACCD,EACH2T,sBAAuB,CAAC,iBACxBC,uBAAwB,CAAC,YAAa,WAIlDlU,EAAQ+T,kBAAoBA,sCCf5B,IAAI3R,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA0BlD,GAC/CkD,EAAa,EAAQ,OAA+BlD,GACpDkD,EAAa,EAAQ,OAAuClD,GAC5DkD,EAAa,EAAQ,OAAelD,GACpCkD,EAAa,EAAQ,OAAwBlD,iCCnB7CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4xL,qBAAkB,EAC1B,MAAMzxL,EAAS,EAAQ,MAYvB,MAAMyxL,UAAwBzxL,EAAOC,MAIjCC,YAAYC,GACRC,MAAMD,IAGdN,EAAQ4xL,gBAAkBA,sCCtB1B,IAAIxvL,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAsBlD,iCCf3CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmU,+BAA4B,EACpC,MAAMC,EAA8B,EAAQ,OAY5C,MAAMD,UAAkCC,EAA4BlU,wBAIhEG,YAAYC,GACRC,MAAMD,IAGdN,EAAQmU,0BAA4BA,gCCtBpCrU,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0L,8CAA2C,EACnD,MAAM0I,EAA8B,EAAQ,OAW5C,MAAM1I,UAAiD0I,EAA4B5S,6BAM/EnB,YAAYC,GACRC,MAAMD,GAGVE,wBAAwBC,EAAQM,GAC5B,OAAO,GAGff,EAAQ0L,yCAA2CA,sCC3BnD,IAAItJ,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAgClD,GACrDkD,EAAa,EAAQ,OAA+ClD,iCChBpEF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ40L,6BAA0B,EAClC,MAAMz0L,EAAS,EAAQ,MAavB,MAAMy0L,UAAgCz0L,EAAOC,MAIzCC,YAAYC,GACRC,MAAMD,IAGdN,EAAQ40L,wBAA0BA,sCCvBlC,IAAIxyL,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA8BlD,iCCfnDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQq6L,6BAA0B,EAClC,MAAMl6L,EAAS,EAAQ,MAavB,MAAMk6L,UAAgCl6L,EAAOC,MAIzCC,YAAYC,GACRC,MAAMD,IAGdN,EAAQq6L,wBAA0BA,sCCvBlC,IAAIj4L,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA8BlD,iCCfnDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQk1L,kBAAe,EACvB,MAAMttL,EAAwB,EAAQ,OAChCnE,EAAoB,EAAQ,MAC5BtD,EAAS,EAAQ,MACjB4O,EAAqB,EAAQ,OAC7BxJ,EAAe,EAAQ,MACvB80H,EAAK,IAAItrH,EAAmBE,YAYlC,MAAMimL,UAAqB/0L,EAAOC,MAK9BC,YAAYC,EAAM2R,GACd1R,MAAMD,GAINM,KAAKi4L,eAAgB,EACrBj4L,KAAKu0L,YAAcljL,EAAQkjL,YAC3Bv0L,KAAKw0L,aAAenjL,EAAQmjL,aAC5Bx0L,KAAKy0L,aAAepjL,EAAQojL,cAAgBpxL,OAAOC,kBACnDtD,KAAKs3L,gBAAkBjmL,EAAQimL,kBAAmB,EAClDt3L,KAAKq1L,gBAAkBhkL,EAAQgkL,kBAAmB,EAStDjrL,YAAYqB,EAAUnF,GAClB,OAAOA,EACFgH,QAAO/G,GAAYkF,EAASvD,IAAI3B,KAChCP,KAAIO,IAAY,EAAI5B,EAAa8B,cAAcgF,EAASpJ,IAAIkE,MAC5Dia,KAAK,IAOdpW,4BAA4B45K,GACxB,MAAM19K,EAAY09K,EAAUh+K,KAAIZ,GAAYA,EAASkB,YACrD,IAAI64M,EAAY74M,EAAU,GAC1B,IAAK,MAAM01C,KAAS11C,EAAU+c,MAAM,GAChC87L,EAAYA,EAAU7xM,QAAO24F,GAAMjqD,EAAMxyB,MAAKnqB,GAASA,EAAMA,QAAU4mG,EAAG5mG,UAE9E,OAAO8/M,EAOX/0M,qBAAqB45K,GACjB,MAAO,IAAI,IAAIx2K,IAAIw2K,EAAUt9D,SAAQthH,GAAYA,EAASkB,UAAUN,KAAIO,GAAYA,EAASlH,YACxF2G,KAAIO,GAAYkzH,EAAGlzH,SAASA,KAOrC6D,uBAAuBqB,GACnB,GAAwB,IAApBA,EAAS1F,OACT,OAAO,KAEX,GAAwB,IAApB0F,EAAS1F,OACT,OAAO0F,EAAS,GAEpB,IAAImS,EAAMnS,EAAS,GACnB,IAAK,MAAM6G,KAAW7G,EAAS4X,MAAM,GAAI,CACrC,MAAMy0F,EAASl6F,EAAIrQ,MAAM+E,GACzB,IAAKwlG,EACD,OAAO,KAEXl6F,EAAMk6F,EAEV,OAAOl6F,EAOXxT,sBAAsBhF,GAClB,OAAOA,EAASw9K,YAMpBx4K,0BAA0BnJ,GACtB,aAAa+J,QAAQ4nB,IAAI3xB,EAAQ+E,KAAIuM,GAASA,EAAM7O,OAAO0B,cAM/DgF,qCAAqCnJ,GACjC,MAAM+iL,QAAkBsQ,EAAaI,aAAazzL,GAClD,OAAOA,EAAQ+E,KAAI,CAACuM,EAAOqG,KAAM,IAAMrG,EAAOnN,SAAU4+K,EAAUprK,OAMtExO,8BAA8B45K,GAC1B,OAAOA,EAAUh+K,KAAIZ,GAAYA,EAASw5L,SAAW,EAAIx5L,EAASq6K,aAAe,IAMrFr1K,2BAA2B45K,GACvB,OAAOA,EACFh+K,KAAIZ,GAAaA,EAASw5L,UAAgBx5L,EAASq6K,aAAe,GAAKr6K,EAASw5L,SAA3C,IAU9Ch/L,8BAA8BqB,EAAS+iL,EAAW7jL,EAASi/M,EAAkB,IACzE,IAAIC,EAeJ,OAdID,EAAgBx8B,YAChBy8B,EAAoBD,EAAgBx8B,aAGpCy8B,EAAoBr7B,EACfzqK,QAAO,CAACqE,EAAKxY,KACd,MAAMk6M,EAAkBhrB,EAAa6C,eAAe/xL,GACpD,MAAO,CACHe,KAA+B,aAAzBm5M,EAAgBn5M,KAAsB,WAAayX,EAAIzX,KAC7D9G,MAAOue,EAAIve,MAAQigN,EAAgBjgN,SAExC,CAAE8G,KAAM,QAAS9G,MAAO,IAC3BggN,EAAkBhgN,cAAgBW,KAAK42L,wBAAwBhzL,QAAQ,CAAE3C,QAAAA,EAASd,QAAAA,KAAY02L,aAE3F,IACAuoB,EACHx8B,YAAa,CACTz8K,KAAMk5M,EAAkBl5M,KACxB9G,MAAOggN,EAAkBhgN,OAE7BwjL,iBAAkBu8B,EAAgBv8B,kBAAoBmB,EAAUx6J,MAAKpkB,GAAYA,EAASy9K,mBAC1Fv8K,UAAWguL,EAAa8C,cAAcpT,IAU9CpkL,WAAWC,GAEP,GAAIA,EAAOsG,OAASnG,KAAKu0L,YACrB,MAAM,IAAI/zL,MAAM,GAAGR,KAAKkD,+CAA+ClD,KAAKu0L,wBAAwB10L,EAAOsG,oBAG/G,GAAItG,EAAOoB,QAAQ8E,QAAU,EACzB,MAAM,IAAIvF,MAAM,GAAGR,KAAKkD,4CAG5B,GAAIlD,KAAKs3L,gBAAkBz3L,EAAOoB,QAAQ8E,OAAS/F,KAAKy0L,aAAe50L,EAAOoB,QAAQ8E,OAAS/F,KAAKy0L,aAChG,MAAM,IAAIj0L,MAAM,GAAGR,KAAKkD,iBAAiBlD,KAAKy0L,gCAAgCz0L,KAAKs3L,gBAAkB,QAAU,+BAA+Bz3L,EAAOoB,QAAQ8E,WAGjK,IAAK,MAAMwM,KAAS1S,EAAOoB,QACvB,GAA0B,aAAtBsR,EAAM7O,OAAOyC,KACb,MAAM,IAAI3F,MAAM,8DAA8D+R,EAAM7O,OAAOyC,SAGnG,MAAM69K,QAAkBsQ,EAAaI,aAAa70L,EAAOoB,SAEzD,IAAKjB,KAAKq1L,gBACN,IAAK,MAAMjwL,KAAY4+K,EACnB,GAAI5+K,EAASy9K,iBACT,MAAM,IAAIriL,MAAM,SAASR,KAAKkD,+CAI1C,aAAalD,KAAK+3L,oBAAoBl4L,EAAQmkL,GAOlDpkL,UAAUC,GAGN,IAAI0/M,EACA1/M,EAAOM,QAAQ+H,IAAIrF,EAAkBsF,cAAcoB,2BACnDg2M,EAA8B1/M,EAAOM,QAAQkC,IAAIQ,EAAkBsF,cAAcuI,uBACjF7Q,EAAOM,QAAUN,EAAOM,QAAQoF,IAAI1C,EAAkBsF,cAAcuI,sBAAuB7Q,IAE/F,MAAM,OAAEyH,EAAM,qBAAEivL,SAA+Bv2L,KAAKw/M,UAAU3/M,GACxDmkL,QAAkBsQ,EAAaI,aAAa70L,EAAOoB,SAEnDsI,EAA0B1J,EAAOM,QAAQkC,IAAIQ,EAAkBsF,cAChEoB,yBAUL,OATIvJ,KAAKi4L,eAAiB1uL,GACtBA,EAAwBzE,aAAa,QAAQ9E,KAAKu0L,cAAev0L,KAAKw0L,aAAc30L,EAAQ0/M,EAA6Bv/M,KAAKkD,KAAM,IAC7HqzL,EACHkpB,cAAez7B,EAAUh+K,IAAIsuL,EAAa6C,gBAC1CuoB,uBAAwB1/M,KAAK+3L,oBAAoBl4L,EAAQmkL,KAIjE18K,EAAOlC,SAAW4B,EAAsBgI,oBAAoB6B,gBAAgBvJ,EAAOlC,UAC5EkC,GAGflI,EAAQk1L,aAAeA,sCCxOvB,IAAI9yL,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAmBlD,iCCfxCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ09L,6BAA0B,EAClC,MAAMv9L,EAAS,EAAQ,MAYvB,MAAMu9L,UAAgCv9L,EAAOC,MAIzCC,YAAYC,GACRC,MAAMD,IAGdN,EAAQ09L,wBAA0BA,sCCtBlC,IAAIt7L,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA8BlD,iCCfnDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQu9L,sBAAmB,EAC3B,MAAMp9L,EAAS,EAAQ,MAYvB,MAAMo9L,UAAyBp9L,EAAOC,MAIlCC,YAAYC,GACRC,MAAMD,IAGdN,EAAQu9L,iBAAmBA,sCCtB3B,IAAIn7L,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAuBlD,iCCf5CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2gM,uBAAoB,EAC5B,MAAMxgM,EAAS,EAAQ,MAYvB,MAAMwgM,UAA0BxgM,EAAOC,MAInCC,YAAYC,GACRC,MAAMD,IAGdN,EAAQ2gM,kBAAoBA,sCCtB5B,IAAIv+L,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAwBlD,iCCf7CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQugN,mBAAgB,EACxB,MAAMnsM,EAA8B,EAAQ,OAW5C,MAAMmsM,UAAsBnsM,EAA4BlU,wBAIpDG,YAAYC,GACRC,MAAMD,IAGdN,EAAQugN,cAAgBA,gCCrBxBzgN,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQijM,kCAA+B,EACvC,MAAM7uL,EAA8B,EAAQ,OAW5C,MAAM6uL,UAAqC7uL,EAA4B5S,6BAMnEnB,YAAYC,GACRC,MAAMD,GAGVE,wBAAwBC,GACpB,OAAO,GAGfT,EAAQijM,6BAA+BA,sCC3BvC,IAAI7gM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAoBlD,GACzCkD,EAAa,EAAQ,OAAmClD,iCChBxDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8vM,yCAAsC,EAC9C,MAAM3vM,EAAS,EAAQ,MAYvB,MAAM2vM,UAA4C3vM,EAAOC,MAIrDC,YAAYC,GACRC,MAAMD,IAGdN,EAAQ8vM,oCAAsCA,8BCtB9ChwM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,gCCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwgN,sBAAmB,EAwB3BxgN,EAAQwgN,iBApBR,MACIngN,YAAY0vM,GACRnvM,KAAKmvM,UAAYA,EAErB1pM,KAAK83L,EAAMhzH,GACP,OAAOvqE,KAAKmvM,UAAU1pM,KAAK83L,EAAMhzH,GAErC8kI,UACI,OAAOrvM,KAAKmvM,UAAUE,UAE1BvpF,UACI,OAAO9lH,KAAKmvM,UAAUrpF,UAE1BtjG,MACI,OAAOxiB,KAAKmvM,UAAU3sL,MAE1Bo/F,OACI,OAAO5hH,KAAKmvM,UAAUvtF,6CCtB9B,IAAIpgH,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA0ClD,GAC/DkD,EAAa,EAAQ,OAAiBlD,GACtCkD,EAAa,EAAQ,OAAuBlD,iCCjB5CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0vM,oCAAiC,EACzC,MAAMvvM,EAAS,EAAQ,MAYvB,MAAMuvM,UAAuCvvM,EAAOC,MAIhDC,YAAYC,GACRC,MAAMD,IAGdN,EAAQ0vM,+BAAiCA,sCCtBzC,IAAIttM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAqClD,iCCf1DF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQswM,+BAA4B,EACpC,MAAMnwM,EAAS,EAAQ,MAYvB,MAAMmwM,UAAkCnwM,EAAOC,MAK3CC,YAAYC,EAAMktL,GACdjtL,MAAMD,GACNM,KAAK4sL,WAAaA,EAEtBhtL,WAAWC,GACP,GAAIA,EAAOgyM,iBAAmB7xM,KAAK4sL,aAAe/sL,EAAOgyM,gBACrD,MAAM,IAAIrxM,MAAM,SAASR,KAAKkD,0CAA0CrD,EAAOgyM,oBAEnF,OAAO7xM,KAAK6/M,aAAahgN,IAGjCT,EAAQswM,0BAA4BA,sCC9BpC,IAAIluM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAgClD,iCCfrDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0gN,gCAA6B,EACrC,MAAMvgN,EAAS,EAAQ,MAYvB,MAAMugN,UAAmCvgN,EAAOC,MAI5CC,YAAYC,GACRC,MAAMD,IAGdN,EAAQ0gN,2BAA6BA,gCCtBrC5gN,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2zM,sCAAmC,EAC3C,MAAMgN,EAA+B,EAAQ,OAO7C,MAAMhN,UAAyCgN,EAA6BD,2BACxErgN,YAAYC,GACRC,MAAMD,GAEVE,WAAWC,GACP,OAAO,EAEXD,UAAUC,GACN,MAAMqV,QAAelV,KAAKm1M,UAAUt1M,EAAOM,QAASN,EAAOuG,SAC3D,aAAapG,KAAKw/M,UAAUtqM,EAAQrV,EAAOuG,QAASvG,EAAOM,SAU/DP,gBAAgBsV,EAAQ9O,EAASjG,GAG7B,MAAO,CAAE+I,KADIgM,EAAO4T,MAAM1iB,EAAQM,QAASN,EAAQO,UAAWP,EAAQQ,OAAQR,EAAQS,SAI9FzH,EAAQ2zM,iCAAmCA,sCClC3C,IAAIvxM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAiClD,GACtDkD,EAAa,EAAQ,OAAuClD,GAC5DkD,EAAa,EAAQ,OAAYlD,iCCjBjCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQw4M,6BAA+Bx4M,EAAQ81M,uBAAyB91M,EAAQk2M,oBAAsBl2M,EAAQuuL,sBAAwBvuL,EAAQi2M,iBAAmBj2M,EAAQ6zM,kBAAoB7zM,EAAQs1M,qBAAuBt1M,EAAQ6uL,mBAAqB7uL,EAAQyuL,kBAAoBzuL,EAAQ4gN,yBAAsB,EACnT,MAAMn9M,EAAoB,EAAQ,MAKlC,SAASm9M,EAAoBC,GACzB,MAA6B,iBAAfA,GAA2B,UAAWA,EAOxD,SAASpyB,EAAkBoyB,GACvB,MAA0B,iBAAfA,EACA,GAEJ,UAAWA,EAAa,cAAgBA,EAAW95M,KAO9D,SAAS8nL,EAAmBgyB,GACxB,OAAOD,EAAoBC,GAAcA,EAAaA,EAAW5gN,MA6BrE,SAASg2M,EAAiBl1M,GACtB,OAAOA,EAAQkC,IAAIQ,EAAkB4F,0BAA0ByM,QA/CnE9V,EAAQ4gN,oBAAsBA,EAW9B5gN,EAAQyuL,kBAAoBA,EAQ5BzuL,EAAQ6uL,mBAAqBA,EAY7B7uL,EAAQs1M,qBANR,SAA8BuL,EAAY9/M,GACtC,MAA0B,iBAAf8/M,GAA2B,UAAWA,IAAeA,EAAW9/M,QAChEA,EAEJA,EAAQoN,MAAM0yM,EAAW9/M,UAWpCf,EAAQ6zM,kBAHR,SAA2B9yM,GACvB,OAAOA,EAAQkC,IAAIQ,EAAkB4F,0BAA0BwM,UAWnE7V,EAAQi2M,iBAAmBA,EAkB3Bj2M,EAAQuuL,sBAXR,SAA+BxtL,GAC3B,GAAIA,EAAQ+H,IAAIrF,EAAkB4F,0BAA0ByM,QAExD,OAAO/U,EAAQkC,IAAIQ,EAAkB4F,0BAA0ByM,QAGnE,MAAMgrM,EAAc//M,EAAQkC,IAAIQ,EAAkB4F,0BAA0BwM,SAC5E,OAA4B,IAAxBirM,GAAan6M,OACNm6M,EAAY,QADvB,GAuBJ9gN,EAAQk2M,oBAbR,SAA6BpgM,GACzB,GAAIA,EAAQ,CACR,IAAIirM,EAAUlyB,EAAmB/4K,GACjC,GAAuB,iBAAZirM,EAAsB,CAE7B,MAAMC,EAAeD,EAAQroM,QAAQ,KAIrC,OAHIsoM,GAAgB,IAChBD,EAAUA,EAAQ98L,MAAM,EAAG+8L,IAExBD,KAcnB/gN,EAAQ81M,uBAJR,SAAgC/0M,GAC5B,MAAM+U,EAASmgM,EAAiBl1M,GAChC,OAAOqS,QAAQ0C,IAAW8qM,EAAoB9qM,IAAWA,EAAO7V,SAapED,EAAQw4M,6BAJR,SAAsCyI,EAAclgN,GAChD,MAAM+U,EAASmgM,EAAiBl1M,GAChC,OAAOqS,QAAQ0C,GAAU24K,EAAkB34K,KAAYmrM,GAAgBpyB,EAAmB/4K,mCCnH9FhW,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQkhN,uBAAoB,EAC5B,MAAM9sM,EAA8B,EAAQ,OAY5C,MAAM8sM,UAA0B9sM,EAA4BlU,wBAIxDG,YAAYC,GACRC,MAAMD,IAGdN,EAAQkhN,kBAAoBA,gCCtB5BphN,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+4M,sCAAmC,EAC3C,MAAM3kM,EAA8B,EAAQ,OAW5C,MAAM2kM,UAAyC3kM,EAA4B5S,6BAMvEnB,YAAYC,GACRC,MAAMD,GAGVE,wBAAwBC,GACpB,OAAO,GAGfT,EAAQ+4M,iCAAmCA,sCC3B3C,IAAI32M,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAwBlD,GAC7CkD,EAAa,EAAQ,OAAuClD,iCChB5DF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQw5M,8BAA2B,EACnC,MAAMr5M,EAAS,EAAQ,MAYvB,MAAMq5M,UAAiCr5M,EAAOC,MAK1CC,YAAYC,EAAMouL,GACdnuL,MAAMD,GACNM,KAAK8tL,gBAAkBA,EAE3BluL,WAAWC,GACP,GAAIA,EAAOg5M,sBAAwB74M,KAAK8tL,kBAAoBjuL,EAAOg5M,qBAC/D,MAAM,IAAIr4M,MAAM,SAASR,KAAKkD,+CAA+CrD,EAAOg5M,yBAExF,OAAO74M,KAAK6/M,aAAahgN,IAGjCT,EAAQw5M,yBAA2BA,sCC9BnC,IAAIp3M,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA+BlD,iCCfpDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmhN,yBAAsB,EAC9B,MAAMhhN,EAAS,EAAQ,MAYvB,MAAMghN,UAA4BhhN,EAAOC,MAIrCC,YAAYC,GACRC,MAAMD,IAGdN,EAAQmhN,oBAAsBA,gCCtB9BrhN,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ46M,oCAAiC,EACzC,MAAMwG,EAA6C,EAAQ,OACrD39M,EAAoB,EAAQ,MAC5B49M,EAAwB,EAAQ,OACtC,SAASC,EAAkBj4H,EAAQ5lD,GAC/B,OAAO4lD,GAAQziF,KAAIQ,GAAQg6M,EAA2CtN,oBAAoByN,gBAAgBn6M,EAAMq8B,KAoBpH,MAAMm3K,UAAuCyG,EAAsBF,oBAC/D3gN,WAAWC,GACP,OAAO,EAEXD,UAAUC,GACN,MAAMsV,QAAoBnV,KAAKm6M,eAAet6M,EAAOM,SACrD,aAAaH,KAAKw/M,UAAUrqM,EAxBpC,SAAqBtV,GACjB,MAAMsV,EAActV,EAAOM,QAAQkC,IAAIQ,EAAkB4Q,mBAAmB0B,aACtE0tB,EAAKhjC,EAAOM,QAAQkC,IAAIQ,EAAkB4F,0BAA0BC,YAAYrG,IAAI8S,GAC1F,OAAK0tB,EAGE,IACAhjC,EACHywL,iBAAkBowB,EAAkB7gN,EAAOywL,iBAAkBztJ,GAC7D0tJ,iBAAkBmwB,EAAkB7gN,EAAO0wL,iBAAkB1tJ,IALtDhjC,EAoBkC+gN,CAAY/gN,GAASA,EAAOM,SAQzEP,gBAAgBuV,EAAatV,EAAQM,GAajC,MAAO,CAAEqH,QAZO,IAAMwD,QAAQ4nB,IAAI,CAC9B/yB,EAAOywL,iBAAmBn7K,EAAYipG,OAAOv+G,EAAOywL,kBAAoBtlL,QAAQC,UAChFpL,EAAO0wL,iBAAmBp7K,EAAYtR,OAAOhE,EAAO0wL,kBAAoBvlL,QAAQC,UAChFpL,EAAO4vL,aACHt6K,EAAYs6K,aAAa5vL,EAAO4vL,aAAap2C,OAAQx5I,EAAO4vL,aAAaC,iBAAkB7vL,EAAO4vL,aAAaE,YAC/G3kL,QAAQC,UACZpL,EAAOowL,aACH96K,EAAY86K,aAAapwL,EAAOowL,aAAa52C,OAAQx5I,EAAOowL,aAAaC,qBACzEllL,QAAQC,YACbkB,MAAK,WAMhB/M,EAAQ46M,+BAAiCA,gCCxDzC96M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ65M,0BAAuB,EAC/B,MAAMr2M,EAAa,EAAQ,OACrBq8K,EAAkB,EAAQ,OAoBhC7/K,EAAQ65M,qBAdRr5M,eAAoC6D,EAAK6gF,GAErC,GAAIA,EAAatzD,QAAU,IAAK,CAE5B,IAAI0uJ,EAAa,iBACjB,GAAIp7F,EAAaz1E,KAAM,CACnB,MAAMgyM,EAAiBj+M,EAAWE,UAAU68K,eAAer7F,EAAaz1E,MACxE6wK,QAAmBT,EAAgB4hC,GAEvC,MAAM,IAAIrgN,MAAM,oBAAoBiD,kBAAoB6gF,EAAatzD,aAAa0uJ,WAGhFp7F,EAAaz1E,MAAM83B,+CCrB7B,IAAInlC,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA0BlD,GAC/CkD,EAAa,EAAQ,OAAqClD,GAC1DkD,EAAa,EAAQ,OAAuBlD,GAC5CkD,EAAa,EAAQ,OAAYlD,iCClBjCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ66M,yBAA2B76M,EAAQwuL,2BAA6BxuL,EAAQ86M,sBAAwB96M,EAAQ0hN,0BAA4B1hN,EAAQ+uL,wBAA0B/uL,EAAQ2uL,uBAAyB3uL,EAAQ2hN,8BAA2B,EAClP,MAAMl+M,EAAoB,EAAQ,MAKlC,SAASk+M,EAAyB3G,GAC9B,MAAkC,iBAApBA,GAAgC,WAAYA,EAkB9D,SAASjsB,EAAwBisB,GAC7B,OAAO2G,EAAyB3G,GAAmBA,EAAkBA,EAAgB/6M,MAjBzFD,EAAQ2hN,yBAA2BA,EAWnC3hN,EAAQ2uL,uBANR,SAAgCqsB,GAC5B,MAA+B,iBAApBA,EACA,GAEJ,WAAYA,EAAkB,aAAeA,EAAgBj0M,MAUxE/G,EAAQ+uL,wBAA0BA,EAYlC/uL,EAAQ0hN,0BANR,SAAmC1G,EAAiBj6M,GAChD,MAA+B,iBAApBi6M,GAAgC,WAAYA,IAAoBA,EAAgBj6M,QAChFA,EAEJA,EAAQoN,MAAM6sM,EAAgBj6M,UAWzCf,EAAQ86M,sBAHR,SAA+B/5M,GAC3B,OAAOA,EAAQkC,IAAIQ,EAAkB4Q,mBAAmB0B,cAc5D/V,EAAQwuL,2BANR,SAAoCztL,GAChC,GAAIA,EAAQ+H,IAAIrF,EAAkB4Q,mBAAmB0B,aAEjD,OAAOhV,EAAQkC,IAAIQ,EAAkB4Q,mBAAmB0B,cAsBhE/V,EAAQ66M,yBAbR,SAAkC9kM,GAC9B,GAAIA,EAAa,CACb,IAAIgrM,EAAUhyB,EAAwBh5K,GACtC,GAAuB,iBAAZgrM,EAAsB,CAE7B,MAAMC,EAAeD,EAAQroM,QAAQ,KAIrC,OAHIsoM,GAAgB,IAChBD,EAAUA,EAAQ98L,MAAM,EAAG+8L,IAExBD,mCC7EnBjhN,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQqU,mBAAqBrU,EAAQqJ,0BAA4BrJ,EAAQsU,uBAAyBtU,EAAQuU,mBAAqBvU,EAAQgR,mBAAqBhR,EAAQ+I,cAAgB/I,EAAQ4D,cAAgB5D,EAAQwU,gBAAkBxU,EAAQyU,SAAWzU,EAAQuJ,cAAW,EAC5Q,MAAMpJ,EAAS,EAAQ,MAMvBH,EAAQuJ,SAAW,CAKfC,IAAKrJ,EAAOuU,oBAEhB1U,EAAQyU,SAAW,CAIfE,mBAAoB,IAAIxU,EAAOyU,iBAAiB,0CAIhDC,KAAM,IAAI1U,EAAOyU,iBAAiB,2BAIlCE,MAAO,IAAI3U,EAAOyU,iBAAiB,6BAEvC5U,EAAQwU,gBAAkB,CAItBO,SAAU,IAAI5U,EAAOyU,iBAAiB,0CAE1C5U,EAAQ4D,cAAgB,CAIpBC,iBAAkB,IAAI1D,EAAOyU,iBAAiB,gDAElD5U,EAAQ+I,cAAgB,CAIpBgB,gBAAiB,IAAI5J,EAAOyU,iBAAiB,8CAK7CjM,YAAa,IAAIxI,EAAOyU,iBAAiB,0CAIzC3L,4BAA6B,IAAI9I,EAAOyU,iBAAiB,mDAIzDI,QAAS,IAAI7U,EAAOyU,iBAAiB,sCAIrCjL,YAAa,IAAIxJ,EAAOyU,iBAAiB,0CAIzC7M,MAAO,IAAI5H,EAAOyU,iBAAiB,oCAInC1L,QAAS,IAAI/I,EAAOyU,iBAAiB,sCAKrCzL,eAAgB,IAAIhJ,EAAOyU,iBAAiB,6CAS5C1E,yBAA0B,IAAI/P,EAAOyU,iBAAiB,uDAOtDzE,mBAAoB,IAAIhQ,EAAOyU,iBAAiB,iDAIhDK,gBAAiB,IAAI9U,EAAOyU,iBAAiB,8CAI7CrM,QAAS,IAAIpI,EAAOyU,iBAAiB,sCAIrCzK,wBAAyB,IAAIhK,EAAOyU,iBAAiB,sDAKrDtD,sBAAuB,IAAInR,EAAOyU,iBAAiB,oDAInDM,cAAe,IAAI/U,EAAOyU,iBAAiB,aAE/C5U,EAAQgR,mBAAqB,CAIzBlK,UAAW,IAAI3G,EAAOyU,iBAAiB,2CAIvCO,iBAAkB,IAAIhV,EAAOyU,iBAAiB,kDAI9CQ,mBAAoB,IAAIjV,EAAOyU,iBAAiB,oDAIhDS,aAAc,IAAIlV,EAAOyU,iBAAiB,8CAI1C3D,SAAU,IAAI9Q,EAAOyU,iBAAiB,0CAItCU,iCAAkC,IAAInV,EAAOyU,iBAAiB,+DAI9DW,eAAgB,IAAIpV,EAAOyU,iBAAiB,iDAEhD5U,EAAQuU,mBAAqB,CAIzBiB,eAAgB,IAAIrV,EAAOyU,iBAAiB,mDAI5Ca,aAAc,IAAItV,EAAOyU,iBAAiB,iDAI1Cc,cAAe,IAAIvV,EAAOyU,iBAAiB,mDAE/C5U,EAAQsU,uBAAyB,CAI7BqB,qBAAsB,IAAIxV,EAAOyU,iBAAiB,8DAIlDgB,kBAAmB,IAAIzV,EAAOyU,iBAAiB,sBAEnD5U,EAAQqJ,0BAA4B,CAIhCwM,QAAS,IAAI1V,EAAOyU,iBAAiB,kDAIrCkB,OAAQ,IAAI3V,EAAOyU,iBAAiB,iDAIpCtL,UAAW,IAAInJ,EAAOyU,iBAAiB,qDAE3C5U,EAAQqU,mBAAqB,CAIzB0B,YAAa,IAAI5V,EAAOyU,iBAAiB,kFC1L7C,IAAIxS,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAWlD,iCCfhCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4U,iBAAmB5U,EAAQ0I,mBAAgB,EACnD,MAAM2E,EAAc,EAAQ,OAI5B,MAAM3E,EACFrI,YAAYyJ,EAAO,IACflJ,KAAKgG,KAAM,EAAIyG,EAAY5H,KAAKqE,GAKpCd,WAAWjH,EAAK9B,GACZ,OAAOW,KAAKkI,IAAI/G,GAAOnB,KAAOA,KAAKuF,IAAIpE,EAAK9B,GAEhDkG,IAAIpE,EAAK9B,GACL,OAAOW,KAAKoV,OAAOjU,EAAI+B,KAAM7D,GAEjC+V,OAAOjU,EAAK9B,GACR,OAAO,IAAIyI,EAAc9H,KAAKgG,IAAIT,IAAIpE,EAAK9B,IAE/CwE,OAAO1C,GACH,OAAO,IAAI2G,EAAc9H,KAAKgG,IAAInC,OAAO1C,EAAI+B,OAEjDb,IAAIlB,GACA,OAAOnB,KAAKqV,OAAOlU,EAAI+B,MAE3BmS,OAAOlU,GACH,OAAOnB,KAAKgG,IAAI3D,IAAIlB,GAExB+G,IAAI/G,GACA,OAAOnB,KAAKuV,OAAOpU,EAAI+B,MAE3BqS,OAAOpU,GACH,OAAOnB,KAAKgG,IAAIkC,IAAI/G,GAExBoM,SAASiI,GAEL,IAAIrV,EAAUH,KACd,IAAK,MAAMkV,KAAUM,EACjB,IAAK,MAAMrU,KAAO+T,EAAOtI,OACrBzM,EAAUA,EAAQoF,IAAIpE,EAAK+T,EAAO7S,IAAIlB,IAG9C,OAAOhB,EAEXyM,OACI,MAAO,IAAI5M,KAAKgG,IAAI4G,QACf5G,KAAIyP,GAAW,IAAIzB,EAAiByB,KAE7CC,OACI,OAAO1V,KAAKgG,IAAI0P,OAEpB7H,WACI,MAAO,iBAAiBzB,KAAKC,UAAUrM,KAAKgG,IAAI0P,WAEpD,CAACxI,OAAOyI,IAAI,iCACR,MAAO,iBAAiBvJ,KAAKC,UAAUrM,KAAKgG,IAAI0P,OAAQ,KAAM,SAQlEtL,2BAA2BwL,GACvB,OAAOA,aAA8B9N,EACjC8N,EACA,IAAI9N,GAAc,EAAI2E,EAAY5H,KAAK+Q,GAAsB,MAGzExW,EAAQ0I,cAAgBA,EAIxB,MAAMkM,EACFvU,YAAYyD,GACRlD,KAAKkD,KAAOA,GAGpB9D,EAAQ4U,iBAAmBA,8BCjF3B9U,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQyW,oBAAiB,EA0BzBzW,EAAQyW,eAbR,MASIpW,YAAYC,GACRR,OAAO4W,OAAO9V,KAAMN,mCCxB5BR,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQI,WAAQ,EAChB,MAAMuW,EAAmB,EAAQ,OAiBjC,MAAMvW,EAYFC,YAAYC,GACRM,KAAKgW,aAAe,GACpB9W,OAAO4W,OAAO9V,KAAMN,GACpBM,KAAKiW,IAAIC,UAAUlW,MACfA,KAAKgW,aAAajQ,OAAS,GAC3B/F,KAAKiW,IAAIE,gBAAgBnW,KAAMA,KAAKgW,cAQ5C5L,wBAAwBjK,GACpB,OAAOA,EAAQkC,IAAI0T,EAAiBjC,oBASxCsC,cAAcvW,GACV,MAAM6D,EAAS1D,KAAKqW,IAAIxW,GAExB,OADAG,KAAKiW,IAAIK,MAAMtW,KAAMH,EAAQ6D,GACtBA,EASX9D,mBACI,OAAO,EASXA,qBACI,OAAO,EAGX2W,kBAAkBpW,EAAS+I,GACvB,MAAMsN,EAAatN,EAAOA,IAAS,GAEnC,OADAsN,EAAWrR,MAAQnF,KAAKkD,KACjBsT,EAEXC,SAAStW,EAASuW,EAASxN,GACvB,MAAML,EAASrJ,EAAMmX,iBAAiBxW,GAClC0I,GACAA,EAAO+N,MAAMF,EAAS1W,KAAKuW,kBAAkBpW,EAAS+I,IAG9D2N,SAAS1W,EAASuW,EAASxN,GACvB,MAAML,EAASrJ,EAAMmX,iBAAiBxW,GAClC0I,GACAA,EAAOiO,MAAMJ,EAAS1W,KAAKuW,kBAAkBpW,EAAS+I,IAG9D6N,QAAQ5W,EAASuW,EAASxN,GACtB,MAAML,EAASrJ,EAAMmX,iBAAiBxW,GAClC0I,GACAA,EAAOmO,KAAKN,EAAS1W,KAAKuW,kBAAkBpW,EAAS+I,IAG7D+N,QAAQ9W,EAASuW,EAASxN,GACtB,MAAML,EAASrJ,EAAMmX,iBAAiBxW,GAClC0I,GACAA,EAAOqO,KAAKR,EAAS1W,KAAKuW,kBAAkBpW,EAAS+I,IAG7DiO,SAAShX,EAASuW,EAASxN,GACvB,MAAML,EAASrJ,EAAMmX,iBAAiBxW,GAClC0I,GACAA,EAAOkD,MAAM2K,EAAS1W,KAAKuW,kBAAkBpW,EAAS+I,IAG9DkO,SAASjX,EAASuW,EAASxN,GACvB,MAAML,EAASrJ,EAAMmX,iBAAiBxW,GAClC0I,GACAA,EAAOwO,MAAMX,EAAS1W,KAAKuW,kBAAkBpW,EAAS+I,KAIlE9J,EAAQI,MAAQA,8BC1HhBN,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQkY,SAAM,EA8KdlY,EAAQkY,IA9JR,MAQI7X,YAAYC,GACRM,KAAKuX,OAAS,GACdvX,KAAKwX,UAAY,GAEjBxX,KAAKyX,gBAAkB,IAAI5S,IAC3B3F,OAAO4W,OAAO9V,KAAMN,GAUxBwW,UAAU/Q,GACNnF,KAAKuX,OAAO9R,KAAKN,GACjBnF,KAAK0X,yBAUTC,kBAAkBC,GACd5X,KAAKwX,UAAU/R,KAAKmS,GAWxBC,YAAY1S,GACR,MAAM/D,EAAQpB,KAAKuX,OAAOO,QAAQ3S,GAClC,OAAI/D,GAAS,IACTpB,KAAKuX,OAAOQ,OAAO3W,EAAO,IACnB,GAaf4W,oBAAoBJ,GAChB,MAAMxW,EAAQpB,KAAKwX,UAAUM,QAAQF,GACrC,OAAIxW,GAAS,IACTpB,KAAKwX,UAAUO,OAAO3W,EAAO,IACtB,GAaf6W,QAAQpY,GACJ,OAAOG,KAAKuX,OAAOvR,KAAKb,IAAU,CAAGA,MAAAA,EAAO+S,MAAO/S,EAAMgT,KAAKtY,OASlEyW,MAAMnR,EAAOtF,EAAQ6D,GACjB,IAAK,MAAMkU,KAAY5X,KAAKwX,UACxBI,EAAStB,MAAMnR,EAAOtF,EAAQ6D,GAWtCyS,gBAAgBiC,EAAWC,GACvB,IAAK,MAAMC,KAAcD,EAAc,CACnC,IAAIE,EAAuBvY,KAAKyX,gBAAgBpV,IAAIiW,GAC/CC,IACDA,EAAuB,GACvBvY,KAAKyX,gBAAgBlS,IAAI+S,EAAYC,IAEzCA,EAAqB9S,KAAK2S,GAE9BpY,KAAK0X,yBAKTA,yBACI,GAAI1X,KAAKyX,gBAAgBxK,KAAO,EAAG,CAC/B,MAAMuL,EAAc,GAEpB,IAAK,MAAMC,KAAczY,KAAKyX,gBAAgB7K,OAAQ,CAClD,MAAM8L,EAAe1Y,KAAKuX,OAAOO,QAAQW,GACrCC,GAAgB,IAChB1Y,KAAKuX,OAAOQ,OAAOW,EAAc,GACjCF,EAAY/S,KAAKgT,IAKzB,KAAOD,EAAYzS,OAAS,GAAG,CAE3B,IAAI4S,GAAsB,EAC1B,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAAYzS,OAAQ6S,IAAK,CACzC,IAAIC,GAAY,EAChB,IAAK,MAAMP,KAActY,KAAKyX,gBAAgBpV,IAAImW,EAAYI,IAC1D,IAAK5Y,KAAKuX,OAAOuB,SAASR,IAAeE,EAAYM,SAASR,GAAa,CACvEO,GAAY,EACZ,MAGR,GAAIA,EAAW,CACXF,EAAqBC,EACrB,OAIR,GAAID,EAAqB,EACrB,MAAM,IAAInY,MAAM,2CAA2CR,KAAKkD,QAGpE,MAAM6V,EAAmBP,EAAYT,OAAOY,EAAoB,GAAG,GACnE3Y,KAAKuX,OAAO9R,KAAKsT,oCC1KjC7Z,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgU,gBAAa,EACrB,MAAM4F,EAAQ,EAAQ,OAiBtB,MAAM5F,UAAmB4F,EAAM1B,IAQ3B7X,YAAYC,GACRC,MAAMD,GACNM,KAAKiZ,YAAc,GAEvB/C,UAAU/Q,GACN,MAAM+T,EAAUlZ,KAAKmZ,mBAAmBhU,IAAU,cAClD,IAAIoS,EAASvX,KAAKiZ,YAAYC,GACzB3B,IACDA,EAASvX,KAAKiZ,YAAYC,GAAW,IAEzC3B,EAAO9R,KAAKN,GACZxF,MAAMuW,UAAU/Q,GAEpB0S,YAAY1S,GACR,MAAM+T,EAAUlZ,KAAKmZ,mBAAmBhU,IAAU,cAC5CoS,EAASvX,KAAKiZ,YAAYC,GAChC,GAAI3B,EAAQ,CACR,MAAMqB,EAAIrB,EAAOO,QAAQ3S,GACrByT,GAAK,GACLrB,EAAOQ,OAAOa,EAAG,GAEC,IAAlBrB,EAAOxR,eACA/F,KAAKiZ,YAAYC,GAGhC,OAAOvZ,MAAMkY,YAAY1S,GAE7B8S,QAAQpY,GACJ,MAAMuZ,EAAWpZ,KAAKqZ,oBAAoBxZ,GAC1C,OAAIuZ,EACe,IAAIpZ,KAAKiZ,YAAYG,IAAa,MAAOpZ,KAAKiZ,YAAYK,aAAe,IAC1EtT,KAAKb,IAAU,CAAGA,MAAAA,EAAO+S,MAAO/S,EAAMgT,KAAKtY,OAEtDF,MAAMsY,QAAQpY,GAEzBsZ,mBAAmBhU,GACf,OAAOnF,KAAKqT,sBAAsBkG,QAAO,CAAC3S,EAAQ4S,IAAU5S,EAAO4S,IAAQrU,GAE/EkU,oBAAoBxZ,GAChB,OAAOG,KAAKsT,uBAAuBiG,QAAO,CAAC3S,EAAQ4S,IAAU5S,EAAO4S,IAAQ3Z,IAGpFT,EAAQgU,WAAaA,gCCrErBlU,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0U,wBAAqB,EAC7B,MAAM2F,EAAkB,EAAQ,OAChCra,EAAQ0U,mBAAqB,IAAI2F,EAAgBzF,iBAAiB,kDCHlE9U,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQsa,YAAS,EAKjB,MAAMA,EAMFtP,uBAAuBuP,GACnB,OAAOD,EAAOE,OAAOD,IAG7Bva,EAAQsa,OAASA,EAKjBA,EAAOE,OAAS,CACZhD,MAAO,EACPE,MAAO,EACPE,KAAM,EACNE,KAAM,EACNnL,MAAO,EACPsL,MAAO,+BC3BXnY,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQya,cAAW,EA+EnBza,EAAQya,SA7DR,MAWIpa,YAAYC,GACRR,OAAO4W,OAAO9V,KAAMN,GAYxBuY,QAAQpY,GAEJ,MAAM0X,EAASvX,KAAKiW,IAAIgC,QAAQpY,GAChC,GAAsB,IAAlB0X,EAAOxR,OACP,MAAM,IAAIvF,MAAM,uDAAuDR,KAAKiW,IAAI/S,QAEpF,OAAOqU,EAWX3X,mBAAmBC,GAEf,aAAaG,KAAK8Z,YAAYja,EAAQG,KAAKiY,QAAQpY,IAYvDD,cAAcC,GAGV,aADoBG,KAAK+Z,aAAala,IACzBuW,cAAcvW,wCC7EnC,IAAI2B,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAoBlD,GACzCkD,EAAa,EAAQ,OAAUlD,GAC/BkD,EAAa,EAAQ,MAAiBlD,GACtCkD,EAAa,EAAQ,OAAqBlD,GAC1CkD,EAAa,EAAQ,OAAqBlD,GAC1CkD,EAAa,EAAQ,OAAYlD,GACjCkD,EAAa,EAAQ,OAAalD,GAClCkD,EAAa,EAAQ,OAAelD,sBCf6B4sE,EAAO5sE,QAGhE,WAAc,aAAa,IAAIw7M,EAAU9+L,MAAMtZ,UAAU6gB,MAE/D,SAASw3L,EAAYj4F,EAAMwc,GACrBA,IACFxc,EAAKpgH,UAAYtD,OAAOuC,OAAO29H,EAAW58H,YAE5CogH,EAAKpgH,UAAU/C,YAAcmjH,EAG/B,SAASqJ,EAAS5sH,GACd,OAAOulH,EAAWvlH,GAASA,EAAQuqG,EAAIvqG,GAKzC,SAASy7M,EAAcz7M,GACrB,OAAO+pG,EAAQ/pG,GAASA,EAAQyqG,EAASzqG,GAK3C,SAAS07M,EAAgB17M,GACvB,OAAOkqG,EAAUlqG,GAASA,EAAQ2qG,EAAW3qG,GAK/C,SAAS27M,EAAY37M,GACnB,OAAOulH,EAAWvlH,KAAWoqG,EAAcpqG,GAASA,EAAQ6qG,EAAO7qG,GAKvE,SAASulH,EAAWrZ,GAClB,SAAUA,IAAiBA,EAAc0vG,IAG3C,SAAS7xG,EAAQC,GACf,SAAUA,IAAcA,EAAW6xG,IAGrC,SAAS3xG,EAAUC,GACjB,SAAUA,IAAgBA,EAAa2xG,IAGzC,SAAS1xG,EAAcC,GACrB,OAAON,EAAQM,IAAqBH,EAAUG,GAGhD,SAASoB,EAAUC,GACjB,SAAUA,IAAgBA,EAAaqwG,IApCzCP,EAAYC,EAAe7uF,GAM3B4uF,EAAYE,EAAiB9uF,GAM7B4uF,EAAYG,EAAa/uF,GA2BzBA,EAASrH,WAAaA,EACtBqH,EAAS7iB,QAAUA,EACnB6iB,EAAS1iB,UAAYA,EACrB0iB,EAASxiB,cAAgBA,EACzBwiB,EAASnhB,UAAYA,EAErBmhB,EAAS9hB,MAAQ2wG,EACjB7uF,EAAS7hB,QAAU2wG,EACnB9uF,EAASz+G,IAAMwtM,EAGf,IAAIC,EAAuB,6BACvBC,EAAoB,0BACpBC,EAAsB,4BACtBC,EAAsB,4BAOtBtzG,EAAO,GACPC,EAAOD,GAIPE,EAAU,GAGVqzG,EAAgB,CAAEh8M,OAAO,GACzBi8M,EAAY,CAAEj8M,OAAO,GAEzB,SAASk8M,EAAQrzG,GAEf,OADAA,EAAI7oG,OAAQ,EACL6oG,EAGT,SAASD,EAAOC,GACdA,IAAQA,EAAI7oG,OAAQ,GAMtB,SAAS8oG,KAGT,SAASwM,EAAQz0F,EAAKf,GACpBA,EAASA,GAAU,EAGnB,IAFA,IAAIuE,EAAMnE,KAAK2vB,IAAI,EAAGhvB,EAAIna,OAASoZ,GAC/By1F,EAAS,IAAI94F,MAAM4H,GACdkqF,EAAK,EAAGA,EAAKlqF,EAAKkqF,IACzBgH,EAAOhH,GAAM1tF,EAAI0tF,EAAKzuF,GAExB,OAAOy1F,EAGT,SAASxM,EAAWjiF,GAIlB,YAHkBrkB,IAAdqkB,EAAKlZ,OACPkZ,EAAKlZ,KAAOkZ,EAAKkiF,UAAUC,IAEtBniF,EAAKlZ,KAGd,SAASs7F,EAAUpiF,EAAM/kB,GAQvB,GAAqB,iBAAVA,EAAoB,CAC7B,IAAIonG,EAAcpnG,IAAU,EAC5B,GAAI,GAAKonG,IAAgBpnG,GAAyB,aAAhBonG,EAChC,OAAOjkC,IAETnjE,EAAQonG,EAEV,OAAOpnG,EAAQ,EAAIgnG,EAAWjiF,GAAQ/kB,EAAQA,EAGhD,SAASknG,IACP,OAAO,EAGT,SAASG,EAAWC,EAAO9d,EAAK39E,GAC9B,OAAkB,IAAVy7F,QAAyB5mG,IAATmL,GAAsBy7F,IAAUz7F,UAC7CnL,IAAR8oF,QAA+B9oF,IAATmL,GAAsB29E,GAAO39E,GAGxD,SAAS27F,EAAaF,EAAOz7F,GAC3B,OAAO47F,EAAaH,EAAOz7F,EAAM,GAGnC,SAAS67F,EAAWle,EAAK39E,GACvB,OAAO47F,EAAaje,EAAK39E,EAAMA,GAGjC,SAAS47F,EAAaznG,EAAO6L,EAAM87F,GACjC,YAAiBjnG,IAAVV,EACL2nG,EACA3nG,EAAQ,EACNme,KAAK2vB,IAAI,EAAGjiC,EAAO7L,QACVU,IAATmL,EACE7L,EACAme,KAAK6vB,IAAIniC,EAAM7L,GAKvB,IAII4pG,EAAyC,mBAAX99F,QAAyBA,OAAOC,SAC9D0+F,EAAuB,aAEvBZ,EAAkBD,GAAwBa,EAG9C,SAASX,EAASz0D,GACdz2C,KAAKy2C,KAAOA,EAmBhB,SAAS00D,EAAchlG,EAAMvE,EAAG+4B,EAAGywE,GACjC,IAAI/rG,EAAiB,IAAT8G,EAAavE,EAAa,IAATuE,EAAaw0B,EAAI,CAAC/4B,EAAG+4B,GAIlD,OAHAywE,EAAkBA,EAAe/rG,MAAQA,EAAU+rG,EAAiB,CAClE/rG,MAAOA,EAAO01F,MAAM,GAEfqW,EAGT,SAASC,IACP,MAAO,CAAEhsG,WAAOyC,EAAWizF,MAAM,GAGnC,SAASuW,EAAYC,GACnB,QAASC,EAAcD,GAGzB,SAASE,EAAWC,GAClB,OAAOA,GAA+C,mBAAvBA,EAAcj1D,KAG/C,SAASk1D,EAAY59F,GACnB,IAAI69F,EAAaJ,EAAcz9F,GAC/B,OAAO69F,GAAcA,EAAWlpG,KAAKqL,GAGvC,SAASy9F,EAAcz9F,GACrB,IAAI69F,EAAa79F,IACdi9F,GAAwBj9F,EAASi9F,IAClCj9F,EAAS89F,eAEX,GAA0B,mBAAfD,EACT,OAAOA,EAIX,SAASM,EAAY7sG,GACnB,OAAOA,GAAiC,iBAAjBA,EAAM0G,OAI7B,SAAS6jG,EAAIvqG,GACX,OAAOA,MAAAA,EAAwC8sG,KAC7CyY,EAAWvlH,GAASA,EAAM+sG,QAoUhC,SAAsB/sG,GACpB,IAAIy4D,EAAMu0C,GAAyBhtG,IACf,iBAAVA,GAAsB,IAAIotG,EAAUptG,GAC9C,IAAKy4D,EACH,MAAM,IAAI52C,UACR,iEAAmE7hB,GAGvE,OAAOy4D,EA5UiC40C,CAAartG,GAsCrD,SAASyqG,EAASzqG,GAChB,OAAOA,MAAAA,EACL8sG,KAAgBiB,aAChBwX,EAAWvlH,GACR+pG,EAAQ/pG,GAASA,EAAM+sG,QAAU/sG,EAAMitG,eACxCe,GAAkBhuG,GAUxB,SAAS2qG,EAAW3qG,GAClB,OAAOA,MAAAA,EAAwC8sG,KAC5CyY,EAAWvlH,GACZ+pG,EAAQ/pG,GAASA,EAAM0tG,WAAa1tG,EAAMiuG,eADrBC,GAAoBluG,GA2B7C,SAAS6qG,EAAO7qG,GACd,OACEA,MAAAA,EAAwC8sG,KACvCyY,EAAWvlH,GACZ+pG,EAAQ/pG,GAASA,EAAM0tG,WAAa1tG,EADfkuG,GAAoBluG,IAEzCmtG,WAjJJtB,EAAS1oG,UAAUqL,SAAW,WAC5B,MAAO,cAIXq9F,EAASY,KAnBU,EAoBnBZ,EAASa,OAnBY,EAoBrBb,EAASc,QAnBa,EAqBtBd,EAAS1oG,UAAUoY,QACnBswF,EAAS1oG,UAAUypG,SAAW,WAAc,OAAOjsG,KAAK6N,YACxDq9F,EAAS1oG,UAAUyoG,GAAmB,WACpC,OAAOjrG,MA2CT66M,EAAYjxG,EAAKqiB,GAMfriB,EAAI4D,GAAK,WACP,OAAO5D,EAAI7sF,YAGb6sF,EAAIpnG,UAAU4pG,MAAQ,WACpB,OAAOpsG,MAGT4pG,EAAIpnG,UAAUqL,SAAW,WACvB,OAAO7N,KAAK2sG,WAAW,QAAS,MAGlC/C,EAAIpnG,UAAUoqG,YAAc,WAK1B,OAJK5sG,KAAK6sG,QAAU7sG,KAAK8sG,oBACvB9sG,KAAK6sG,OAAS7sG,KAAK+sG,WAAWpjG,UAC9B3J,KAAKiN,KAAOjN,KAAK6sG,OAAO9mG,QAEnB/F,MAKT4pG,EAAIpnG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GACrC,OAAOwuG,GAAWx7M,KAAMgN,EAAIggG,GAAS,IAKvCpD,EAAIpnG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACxC,OAAOyuG,GAAYz7M,KAAMmG,EAAM6mG,GAAS,IAK5C6tG,EAAY/wG,EAAUF,GASpBE,EAAStnG,UAAU4qG,WAAa,WAC9B,OAAOptG,MAKX66M,EAAY7wG,EAAYJ,GAOtBI,EAAWwD,GAAK,WACd,OAAOxD,EAAWjtF,YAGpBitF,EAAWxnG,UAAU8qG,aAAe,WAClC,OAAOttG,MAGTgqG,EAAWxnG,UAAUqL,SAAW,WAC9B,OAAO7N,KAAK2sG,WAAW,QAAS,MAGlC3C,EAAWxnG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAC5C,OAAOwuG,GAAWx7M,KAAMgN,EAAIggG,GAAS,IAGvChD,EAAWxnG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC/C,OAAOyuG,GAAYz7M,KAAMmG,EAAM6mG,GAAS,IAK5C6tG,EAAY3wG,EAAQN,GASlBM,EAAOsD,GAAK,WACV,OAAOtD,EAAOntF,YAGhBmtF,EAAO1nG,UAAUgqG,SAAW,WAC1B,OAAOxsG,MAKX4pG,EAAIU,MAAQA,GACZV,EAAIO,MAAQL,EACZF,EAAIp8F,IAAM08F,EACVN,EAAIQ,QAAUJ,EAEd,IA2LI+D,EAuUAyd,EAqHAxH,EAvnBA03F,EAAkB,wBAOpB,SAASjuG,EAASzxD,GAChBh8C,KAAK0tG,OAAS1xD,EACdh8C,KAAKiN,KAAO+uC,EAAMj2C,OAgCpB,SAAS0mG,EAAU7lG,GACjB,IAAIgG,EAAO1N,OAAO0N,KAAKhG,GACvB5G,KAAK6tG,QAAUjnG,EACf5G,KAAK8tG,MAAQlhG,EACb5M,KAAKiN,KAAOL,EAAK7G,OA4CnB,SAAS41M,EAAY5tM,GACnB/N,KAAK47M,UAAY7tM,EACjB/N,KAAKiN,KAAOc,EAAShI,QAAUgI,EAASd,KAwC1C,SAAS4uM,EAAY1uM,GACnBnN,KAAK87M,UAAY3uM,EACjBnN,KAAK+7M,eAAiB,GAkD1B,SAASzxG,GAAMC,GACb,SAAUA,IAAYA,EAASmxG,IAKjC,SAASvvG,KACP,OAAO4B,IAAcA,EAAY,IAAIN,EAAS,KAGhD,SAASJ,GAAkBhuG,GACzB,IAAIy4D,EACFh8C,MAAMC,QAAQ1c,GAAS,IAAIouG,EAASpuG,GAAOitG,eAC3Cb,EAAWpsG,GAAS,IAAIw8M,EAAYx8M,GAAOitG,eAC3ChB,EAAYjsG,GAAS,IAAIs8M,EAAYt8M,GAAOitG,eAC3B,iBAAVjtG,EAAqB,IAAIotG,EAAUptG,QAC1CyC,EACF,IAAKg2D,EACH,MAAM,IAAI52C,UACR,yEACsB7hB,GAG1B,OAAOy4D,EAGT,SAASy1C,GAAoBluG,GAC3B,IAAIy4D,EAAMu0C,GAAyBhtG,GACnC,IAAKy4D,EACH,MAAM,IAAI52C,UACR,gDAAkD7hB,GAGtD,OAAOy4D,EAcT,SAASu0C,GAAyBhtG,GAChC,OACE6sG,EAAY7sG,GAAS,IAAIouG,EAASpuG,GAClCosG,EAAWpsG,GAAS,IAAIw8M,EAAYx8M,GACpCisG,EAAYjsG,GAAS,IAAIs8M,EAAYt8M,QACrCyC,EAIJ,SAAS05M,GAAW1jJ,EAAK9qD,EAAIggG,EAAS2D,GACpC,IAAI1D,EAAQn1C,EAAI+0C,OAChB,GAAII,EAAO,CAET,IADA,IAAImP,EAAWnP,EAAMlnG,OAAS,EACrB6nG,EAAK,EAAGA,GAAMwO,EAAUxO,IAAM,CACrC,IAAIr7F,EAAQ06F,EAAMD,EAAUoP,EAAWxO,EAAKA,GAC5C,IAAmD,IAA/C5gG,EAAGuF,EAAM,GAAIo+F,EAAUp+F,EAAM,GAAKq7F,EAAI91C,GACxC,OAAO81C,EAAK,EAGhB,OAAOA,EAET,OAAO91C,EAAIg1C,kBAAkB9/F,EAAIggG,GAGnC,SAASyuG,GAAY3jJ,EAAK3xD,EAAM6mG,EAAS2D,GACvC,IAAI1D,EAAQn1C,EAAI+0C,OAChB,GAAII,EAAO,CACT,IAAImP,EAAWnP,EAAMlnG,OAAS,EAC1B6nG,EAAK,EACT,OAAO,IAAI1C,GAAS,WAClB,IAAI34F,EAAQ06F,EAAMD,EAAUoP,EAAWxO,EAAKA,GAC5C,OAAOA,IAAOwO,EA/YX,CAAE/8G,WAAOyC,EAAWizF,MAAM,GAiZ3BoW,EAAchlG,EAAMwqG,EAAUp+F,EAAM,GAAKq7F,EAAK,EAAGr7F,EAAM,OAG7D,OAAOulD,EAAIq1C,mBAAmBhnG,EAAM6mG,GAGtC,SAAS4e,GAAO36F,EAAM7lB,GACpB,OAAOA,EACLygH,GAAWzgH,EAAW6lB,EAAM,GAAI,CAAC,GAAIA,IACrC+qL,GAAc/qL,GAGlB,SAAS46F,GAAWzgH,EAAW6lB,EAAM9vB,EAAK86M,GACxC,OAAIngM,MAAMC,QAAQkV,GACT7lB,EAAU1I,KAAKu5M,EAAY96M,EAAK6oG,EAAW/4E,GAAMjrB,KAAI,SAAS20B,EAAG/4B,GAAK,OAAOiqH,GAAWzgH,EAAWuvB,EAAG/4B,EAAGqvB,OAE9GirL,GAAWjrL,GACN7lB,EAAU1I,KAAKu5M,EAAY96M,EAAK2oG,EAAS74E,GAAMjrB,KAAI,SAAS20B,EAAG/4B,GAAK,OAAOiqH,GAAWzgH,EAAWuvB,EAAG/4B,EAAGqvB,OAEzGA,EAGT,SAAS+qL,GAAc/qL,GACrB,OAAInV,MAAMC,QAAQkV,GACT+4E,EAAW/4E,GAAMjrB,IAAIg2M,IAAe92F,SAEzCg3F,GAAWjrL,GACN64E,EAAS74E,GAAMjrB,IAAIg2M,IAAe76F,QAEpClwF,EAGT,SAASirL,GAAW78M,GAClB,OAAOA,IAAUA,EAAMI,cAAgBP,aAAgC4C,IAAtBzC,EAAMI,aAyDzD,SAASmvG,GAAGC,EAAQC,GAClB,GAAID,IAAWC,GAAWD,GAAWA,GAAUC,GAAWA,EACxD,OAAO,EAET,IAAKD,IAAWC,EACd,OAAO,EAET,GAA8B,mBAAnBD,EAAOh1D,SACY,mBAAnBi1D,EAAOj1D,QAAwB,CAGxC,IAFAg1D,EAASA,EAAOh1D,cAChBi1D,EAASA,EAAOj1D,YACUg1D,GAAWA,GAAUC,GAAWA,EACxD,OAAO,EAET,IAAKD,IAAWC,EACd,OAAO,EAGX,QAA6B,mBAAlBD,EAAOzhG,QACW,mBAAlB0hG,EAAO1hG,SACdyhG,EAAOzhG,OAAO0hG,IAMpB,SAASwT,GAAU9+F,EAAGC,GACpB,GAAID,IAAMC,EACR,OAAO,EAGT,IACGmhG,EAAWnhG,SACD3hB,IAAX0hB,EAAEvW,WAAiCnL,IAAX2hB,EAAExW,MAAsBuW,EAAEvW,OAASwW,EAAExW,WAChDnL,IAAb0hB,EAAEw1F,aAAqCl3G,IAAb2hB,EAAEu1F,QAAwBx1F,EAAEw1F,SAAWv1F,EAAEu1F,QACnE5P,EAAQ5lF,KAAO4lF,EAAQ3lF,IACvB8lF,EAAU/lF,KAAO+lF,EAAU9lF,IAC3BqnF,EAAUtnF,KAAOsnF,EAAUrnF,GAE3B,OAAO,EAGT,GAAe,IAAXD,EAAEvW,MAAyB,IAAXwW,EAAExW,KACpB,OAAO,EAGT,IAAIs1G,GAAkB9Y,EAAcjmF,GAEpC,GAAIsnF,EAAUtnF,GAAI,CAChB,IAAIviB,EAAUuiB,EAAEviB,UAChB,OAAOwiB,EAAEuK,OAAM,SAAS2M,EAAG/4B,GACzB,IAAI2Q,EAAQtR,EAAQw1C,OAAOp3C,MAC3B,OAAOkT,GAASq8F,GAAGr8F,EAAM,GAAIooB,KAAO4nF,GAAkB3T,GAAGr8F,EAAM,GAAI3Q,QAC/DX,EAAQw1C,OAAOs+C,KAGvB,IAAIytB,GAAU,EAEd,QAAe1gH,IAAX0hB,EAAEvW,KACJ,QAAenL,IAAX2hB,EAAExW,KACyB,mBAAlBuW,EAAEopF,aACXppF,EAAEopF,kBAEC,CACL4V,GAAU,EACV,IAAIznF,EAAIvX,EACRA,EAAIC,EACJA,EAAIsX,EAIR,IAAI0nF,GAAW,EACXC,EAAQj/F,EAAE4kF,WAAU,SAAS1tE,EAAG/4B,GAClC,GAAI2gH,GAAkB/+F,EAAEtb,IAAIyyB,GACxB6nF,GAAW5T,GAAGj0E,EAAGnX,EAAEnhB,IAAIT,EAAGomG,KAAa4G,GAAGprF,EAAEnhB,IAAIT,EAAGomG,GAAUrtE,GAE/D,OADA8nF,GAAW,GACJ,KAIX,OAAOA,GAAYj/F,EAAEvW,OAASy1G,EAK9B,SAAS+I,GAAOpsH,EAAOqsH,GACrB,KAAM1rH,gBAAgByrH,IACpB,OAAO,IAAIA,GAAOpsH,EAAOqsH,GAI3B,GAFA1rH,KAAK2rH,OAAStsH,EACdW,KAAKiN,UAAiBnL,IAAV4pH,EAAsB54B,EAAAA,EAAWvzE,KAAK2vB,IAAI,EAAGw8E,GACvC,IAAd1rH,KAAKiN,KAAY,CACnB,GAAIu+G,EACF,OAAOA,EAETA,EAAexrH,MAoErB,SAAS60G,GAAUC,EAAW/oG,GAC5B,IAAK+oG,EAAW,MAAM,IAAIt0G,MAAMuL,GAKhC,SAASk4G,GAAMv7E,EAAOkiD,EAAKujB,GACzB,KAAMnuG,gBAAgBikH,IACpB,OAAO,IAAIA,GAAMv7E,EAAOkiD,EAAKujB,GAe/B,GAbA0G,GAAmB,IAAT1G,EAAY,4BACtBzlE,EAAQA,GAAS,OACL5mC,IAAR8oF,IACFA,EAAMkI,EAAAA,GAERqb,OAAgBrsG,IAATqsG,EAAqB,EAAI5uF,KAAKyzB,IAAIm7D,GACrCvjB,EAAMliD,IACRylE,GAAQA,GAEVnuG,KAAKgoC,OAASU,EACd1oC,KAAKkkH,KAAOt5B,EACZ5qF,KAAKmkH,MAAQhW,EACbnuG,KAAKiN,KAAOsS,KAAK2vB,IAAI,EAAG3vB,KAAKsG,MAAM+kE,EAAMliD,GAASylE,EAAO,GAAK,GAC5C,IAAdnuG,KAAKiN,KAAY,CACnB,GAAI+2G,EACF,OAAOA,EAETA,EAAchkH,MA2FlB,SAAS2pG,KACP,MAAMzoF,UAAU,YAIqB,SAAS2oF,MAEP,SAASE,MAEb,SAASE,MAjoBhDL,EAAIpnG,UAAUk5M,IAAmB,EAIjCb,EAAYptG,EAAUzD,GAMpByD,EAASjrG,UAAUH,IAAM,SAASjB,EAAOusG,GACvC,OAAO3tG,KAAKkI,IAAI9G,GAASpB,KAAK0tG,OAAOnF,EAAUvoG,KAAMoB,IAAUusG,GAGjEF,EAASjrG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAG1C,IAFA,IAAIhxD,EAAQh8C,KAAK0tG,OACb0O,EAAWpgE,EAAMj2C,OAAS,EACrB6nG,EAAK,EAAGA,GAAMwO,EAAUxO,IAC/B,IAA0D,IAAtD5gG,EAAGgvC,EAAMgxD,EAAUoP,EAAWxO,EAAKA,GAAKA,EAAI5tG,MAC9C,OAAO4tG,EAAK,EAGhB,OAAOA,GAGTH,EAASjrG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC7C,IAAIhxD,EAAQh8C,KAAK0tG,OACb0O,EAAWpgE,EAAMj2C,OAAS,EAC1B6nG,EAAK,EACT,OAAO,IAAI1C,GAAS,WACjB,OAAO0C,EAAKwO,EA1KV,CAAE/8G,WAAOyC,EAAWizF,MAAM,GA4K3BoW,EAAchlG,EAAMynG,EAAI5xD,EAAMgxD,EAAUoP,EAAWxO,IAAOA,UAMlEitG,EAAYpuG,EAAW3C,GAQrB2C,EAAUjqG,UAAUH,IAAM,SAASlB,EAAKwsG,GACtC,YAAoB7rG,IAAhB6rG,GAA8B3tG,KAAKkI,IAAI/G,GAGpCnB,KAAK6tG,QAAQ1sG,GAFXwsG,GAKXlB,EAAUjqG,UAAU0F,IAAM,SAAS/G,GACjC,OAAOnB,KAAK6tG,QAAQprG,eAAetB,IAGrCsrG,EAAUjqG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAI3C,IAHA,IAAIpmG,EAAS5G,KAAK6tG,QACdjhG,EAAO5M,KAAK8tG,MACZsO,EAAWxvG,EAAK7G,OAAS,EACpB6nG,EAAK,EAAGA,GAAMwO,EAAUxO,IAAM,CACrC,IAAIzsG,EAAMyL,EAAKogG,EAAUoP,EAAWxO,EAAKA,GACzC,IAAmC,IAA/B5gG,EAAGpG,EAAOzF,GAAMA,EAAKnB,MACvB,OAAO4tG,EAAK,EAGhB,OAAOA,GAGTnB,EAAUjqG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC9C,IAAIpmG,EAAS5G,KAAK6tG,QACdjhG,EAAO5M,KAAK8tG,MACZsO,EAAWxvG,EAAK7G,OAAS,EACzB6nG,EAAK,EACT,OAAO,IAAI1C,GAAS,WAClB,IAAI/pG,EAAMyL,EAAKogG,EAAUoP,EAAWxO,EAAKA,GACzC,OAAOA,IAAOwO,EAzNX,CAAE/8G,WAAOyC,EAAWizF,MAAM,GA2N3BoW,EAAchlG,EAAMhF,EAAKyF,EAAOzF,QAIxCsrG,EAAUjqG,UAAU44M,IAAuB,EAG3CP,EAAYc,EAAa3xG,GAMvB2xG,EAAYn5M,UAAUsqG,kBAAoB,SAAS9/F,EAAIggG,GACrD,GAAIA,EACF,OAAOhtG,KAAK4sG,cAAcvE,UAAUr7F,EAAIggG,GAE1C,IACI7/F,EAAWw+F,EADA3rG,KAAK47M,WAEhB31L,EAAa,EACjB,GAAIwlF,EAAWt+F,GAEb,IADA,IAAIghG,IACKA,EAAOhhG,EAASspC,QAAQs+C,OACY,IAAvC/nF,EAAGmhG,EAAK9uG,MAAO4mB,IAAcjmB,QAKrC,OAAOimB,GAGT01L,EAAYn5M,UAAU2qG,mBAAqB,SAAShnG,EAAM6mG,GACxD,GAAIA,EACF,OAAOhtG,KAAK4sG,cAAcM,WAAW/mG,EAAM6mG,GAE7C,IACI7/F,EAAWw+F,EADA3rG,KAAK47M,WAEpB,IAAKnwG,EAAWt+F,GACd,OAAO,IAAI+9F,EAASG,GAEtB,IAAIplF,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,OAAO03D,EAAKpZ,KAAOoZ,EAAOhD,EAAchlG,EAAM8f,IAAckoF,EAAK9uG,WAMvEw7M,EAAYgB,EAAa7xG,GAMvB6xG,EAAYr5M,UAAUsqG,kBAAoB,SAAS9/F,EAAIggG,GACrD,GAAIA,EACF,OAAOhtG,KAAK4sG,cAAcvE,UAAUr7F,EAAIggG,GAK1C,IAHA,IAQImB,EARAhhG,EAAWnN,KAAK87M,UAChB7uG,EAAQjtG,KAAK+7M,eACb91L,EAAa,EACVA,EAAagnF,EAAMlnG,QACxB,IAAkD,IAA9CiH,EAAGigG,EAAMhnF,GAAaA,IAAcjmB,MACtC,OAAOimB,EAIX,OAASkoF,EAAOhhG,EAASspC,QAAQs+C,MAAM,CACrC,IAAIhI,EAAMohB,EAAK9uG,MAEf,GADA4tG,EAAMhnF,GAAc8mE,GACgB,IAAhC//E,EAAG+/E,EAAK9mE,IAAcjmB,MACxB,MAGJ,OAAOimB,GAGT41L,EAAYr5M,UAAU2qG,mBAAqB,SAAShnG,EAAM6mG,GACxD,GAAIA,EACF,OAAOhtG,KAAK4sG,cAAcM,WAAW/mG,EAAM6mG,GAE7C,IAAI7/F,EAAWnN,KAAK87M,UAChB7uG,EAAQjtG,KAAK+7M,eACb91L,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,GAAIjlF,GAAcgnF,EAAMlnG,OAAQ,CAC9B,IAAIooG,EAAOhhG,EAASspC,OACpB,GAAI03D,EAAKpZ,KACP,OAAOoZ,EAETlB,EAAMhnF,GAAckoF,EAAK9uG,MAE3B,OAAO8rG,EAAchlG,EAAM8f,EAAYgnF,EAAMhnF,UAsQnD40L,EAAYpvF,GAAQzhB,GAgBlByhB,GAAOjpH,UAAUqL,SAAW,WAC1B,OAAkB,IAAd7N,KAAKiN,KACA,YAEF,YAAcjN,KAAK2rH,OAAS,IAAM3rH,KAAKiN,KAAO,YAGvDw+G,GAAOjpH,UAAUH,IAAM,SAASjB,EAAOusG,GACrC,OAAO3tG,KAAKkI,IAAI9G,GAASpB,KAAK2rH,OAAShe,GAGzC8d,GAAOjpH,UAAUsW,SAAW,SAASsrG,GACnC,OAAOxV,GAAG5uG,KAAK2rH,OAAQvH,IAGzBqH,GAAOjpH,UAAU6gB,MAAQ,SAASqlF,EAAO9d,GACvC,IAAI39E,EAAOjN,KAAKiN,KAChB,OAAOw7F,EAAWC,EAAO9d,EAAK39E,GAAQjN,KACpC,IAAIyrH,GAAOzrH,KAAK2rH,OAAQ7iB,EAAWle,EAAK39E,GAAQ27F,EAAaF,EAAOz7F,KAGxEw+G,GAAOjpH,UAAUwqG,QAAU,WACzB,OAAOhtG,MAGTyrH,GAAOjpH,UAAUsV,QAAU,SAASssG,GAClC,OAAIxV,GAAG5uG,KAAK2rH,OAAQvH,GACX,GAED,GAGVqH,GAAOjpH,UAAUs3B,YAAc,SAASsqF,GACtC,OAAIxV,GAAG5uG,KAAK2rH,OAAQvH,GACXpkH,KAAKiN,MAEN,GAGVw+G,GAAOjpH,UAAU6lG,UAAY,SAASr7F,EAAIggG,GACxC,IAAK,IAAIY,EAAK,EAAGA,EAAK5tG,KAAKiN,KAAM2gG,IAC/B,IAAkC,IAA9B5gG,EAAGhN,KAAK2rH,OAAQ/d,EAAI5tG,MACtB,OAAO4tG,EAAK,EAGhB,OAAOA,GAGT6d,GAAOjpH,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAAU,IAAImvG,EAASn8M,KAC9D4tG,EAAK,EACT,OAAO,IAAI1C,GAAS,WACjB,OAAO0C,EAAKuuG,EAAOlvM,KAAOk+F,EAAchlG,EAAMynG,IAAMuuG,EAAOxwF,QAjoBzD,CAAEtsH,WAAOyC,EAAWizF,MAAM,OAqoBjC02B,GAAOjpH,UAAU4K,OAAS,SAASC,GACjC,OAAOA,aAAiBo+G,GACtB7c,GAAG5uG,KAAK2rH,OAAQt+G,EAAMs+G,QACtBrJ,GAAUj1G,IAUhBwtM,EAAY52F,GAAOja,GA2BjBia,GAAMzhH,UAAUqL,SAAW,WACzB,OAAkB,IAAd7N,KAAKiN,KACA,WAEF,WACLjN,KAAKgoC,OAAS,MAAQhoC,KAAKkkH,MACX,IAAflkH,KAAKmkH,MAAc,OAASnkH,KAAKmkH,MAAQ,IAC5C,MAGFF,GAAMzhH,UAAUH,IAAM,SAASjB,EAAOusG,GACpC,OAAO3tG,KAAKkI,IAAI9G,GACdpB,KAAKgoC,OAASugE,EAAUvoG,KAAMoB,GAASpB,KAAKmkH,MAC5CxW,GAGJsW,GAAMzhH,UAAUsW,SAAW,SAASsrG,GAClC,IAAIC,GAAiBD,EAAcpkH,KAAKgoC,QAAUhoC,KAAKmkH,MACvD,OAAOE,GAAiB,GACtBA,EAAgBrkH,KAAKiN,MACrBo3G,IAAkB9kG,KAAKC,MAAM6kG,IAGjCJ,GAAMzhH,UAAU6gB,MAAQ,SAASqlF,EAAO9d,GACtC,OAAI6d,EAAWC,EAAO9d,EAAK5qF,KAAKiN,MACvBjN,MAET0oG,EAAQE,EAAaF,EAAO1oG,KAAKiN,OACjC29E,EAAMke,EAAWle,EAAK5qF,KAAKiN,QAChBy7F,EACF,IAAIub,GAAM,EAAG,GAEf,IAAIA,GAAMjkH,KAAKqC,IAAIqmG,EAAO1oG,KAAKkkH,MAAOlkH,KAAKqC,IAAIuoF,EAAK5qF,KAAKkkH,MAAOlkH,KAAKmkH,SAG9EF,GAAMzhH,UAAUsV,QAAU,SAASssG,GACjC,IAAIE,EAAcF,EAAcpkH,KAAKgoC,OACrC,GAAIs8E,EAActkH,KAAKmkH,OAAU,EAAG,CAClC,IAAI/iH,EAAQkjH,EAActkH,KAAKmkH,MAC/B,GAAI/iH,GAAS,GAAKA,EAAQpB,KAAKiN,KAC7B,OAAO7L,EAGX,OAAQ,GAGV6iH,GAAMzhH,UAAUs3B,YAAc,SAASsqF,GACrC,OAAOpkH,KAAK8X,QAAQssG,IAGtBH,GAAMzhH,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAIvC,IAHA,IAAIoP,EAAWp8G,KAAKiN,KAAO,EACvBkhG,EAAOnuG,KAAKmkH,MACZ9kH,EAAQ2tG,EAAUhtG,KAAKgoC,OAASo0E,EAAWjO,EAAOnuG,KAAKgoC,OAClD4lE,EAAK,EAAGA,GAAMwO,EAAUxO,IAAM,CACrC,IAA4B,IAAxB5gG,EAAG3N,EAAOuuG,EAAI5tG,MAChB,OAAO4tG,EAAK,EAEdvuG,GAAS2tG,GAAWmB,EAAOA,EAE7B,OAAOP,GAGTqW,GAAMzhH,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC1C,IAAIoP,EAAWp8G,KAAKiN,KAAO,EACvBkhG,EAAOnuG,KAAKmkH,MACZ9kH,EAAQ2tG,EAAUhtG,KAAKgoC,OAASo0E,EAAWjO,EAAOnuG,KAAKgoC,OACvD4lE,EAAK,EACT,OAAO,IAAI1C,GAAS,WAClB,IAAIvwE,EAAIt7B,EAER,OADAA,GAAS2tG,GAAWmB,EAAOA,EACpBP,EAAKwO,EApvBT,CAAE/8G,WAAOyC,EAAWizF,MAAM,GAovBWoW,EAAchlG,EAAMynG,IAAMjzE,OAItEspF,GAAMzhH,UAAU4K,OAAS,SAASC,GAChC,OAAOA,aAAiB42G,GACtBjkH,KAAKgoC,SAAW36B,EAAM26B,QACtBhoC,KAAKkkH,OAAS72G,EAAM62G,MACpBlkH,KAAKmkH,QAAU92G,EAAM82G,MACrB7B,GAAUtiH,KAAMqN,IAMtBwtM,EAAYlxG,GAAYsiB,GAMxB4uF,EAAYhxG,GAAiBF,IAE7BkxG,EAAY9wG,GAAmBJ,IAE/BkxG,EAAY5wG,GAAeN,IAG3BA,GAAWQ,MAAQN,GACnBF,GAAWS,QAAUL,GACrBJ,GAAWn8F,IAAMy8F,GAEjB,IAAI8E,GACmB,mBAAdxvF,KAAKwvF,OAAqD,IAA9BxvF,KAAKwvF,KAAK,WAAY,GACzDxvF,KAAKwvF,KACL,SAAcvrF,EAAGC,GAGf,IAAI1C,EAAQ,OAFZyC,GAAQ,GAGJ2E,EAAQ,OAFZ1E,GAAQ,GAIR,OAAQ1C,EAAIoH,IAAS3E,IAAM,IAAM2E,EAAIpH,GAAK0C,IAAM,KAAQ,KAAQ,GAAK,GAOzE,SAASurF,GAAIC,GACX,OAASA,IAAQ,EAAK,WAAqB,WAANA,EAGvC,SAASlgG,GAAKrN,GACZ,IAAU,IAANA,GAAAA,MAAeA,EACjB,OAAO,EAET,GAAyB,mBAAdA,EAAEm4C,WAED,KADVn4C,EAAIA,EAAEm4C,YACFn4C,MAAeA,GACjB,OAAO,EAGX,IAAU,IAANA,EACF,OAAO,EAET,IAAIyE,SAAczE,EAClB,GAAa,WAATyE,EAAmB,CACrB,GAAIzE,GAAMA,GAAKA,IAAMoxF,EAAAA,EACnB,OAAO,EAET,IAAI94D,EAAQ,EAAJt4B,EAIR,IAHIs4B,IAAMt4B,IACRs4B,GAAS,WAAJt4B,GAEAA,EAAI,YAETs4B,GADAt4B,GAAK,WAGP,OAAOstG,GAAIh1E,GAEb,GAAa,WAAT7zB,EACF,OAAOzE,EAAEqE,OAASupG,GActB,SAA0BlkB,GACxB,IAAIr8E,EAAOwgG,GAAgBnkB,GAU3B,YATatpF,IAATiN,IACFA,EAAOu2B,GAAW8lD,GACdokB,KAA2BC,KAC7BD,GAAyB,EACzBD,GAAkB,IAEpBC,KACAD,GAAgBnkB,GAAUr8E,GAErBA,EAzB4CqtM,CAAiB16M,GAAK4jC,GAAW5jC,GAEpF,GAA0B,mBAAfA,EAAEitG,SACX,OAAOjtG,EAAEitG,WAEX,GAAa,WAATxoG,EACF,OAqCJ,SAAmB+1C,GACjB,IAAIntC,EACJ,GAAI2gG,SAEW5tG,KADbiN,EAAO4gG,GAAQttG,IAAI65C,IAEjB,OAAOntC,EAKX,QAAajN,KADbiN,EAAOmtC,EAAI0zD,KAET,OAAO7gG,EAGT,IAAK8gG,GAAmB,CAEtB,QAAa/tG,KADbiN,EAAOmtC,EAAI6jD,sBAAwB7jD,EAAI6jD,qBAAqB6P,KAE1D,OAAO7gG,EAIT,QAAajN,KADbiN,EA4DJ,SAAuB9J,GACrB,GAAIA,GAAQA,EAAK6qG,SAAW,EAC1B,OAAQ7qG,EAAK6qG,UACX,KAAK,EACH,OAAO7qG,EAAK8qG,SACd,KAAK,EACH,OAAO9qG,EAAK+qG,iBAAmB/qG,EAAK+qG,gBAAgBD,UAlEjDE,CAAc/zD,IAEnB,OAAOntC,EASX,GALAA,IAASstM,GACQ,WAAbA,KACFA,GAAa,GAGX3sG,GACFC,GAAQpqG,IAAI22C,EAAKntC,OACZ,SAAqBjN,IAAjBquG,KAAoD,IAAtBA,GAAaj0D,GACpD,MAAM,IAAI17C,MAAM,mDACX,GAAIqvG,GACT3wG,OAAOC,eAAe+8C,EAAK0zD,GAAc,CACvC,YAAc,EACd,cAAgB,EAChB,UAAY,EACZ,MAAS7gG,SAEN,QAAiCjN,IAA7Bo6C,EAAI6jD,sBACJ7jD,EAAI6jD,uBAAyB7jD,EAAIz8C,YAAY+C,UAAUu9F,qBAKhE7jD,EAAI6jD,qBAAuB,WACzB,OAAO//F,KAAKP,YAAY+C,UAAUu9F,qBAAqB1/E,MAAMrgB,KAAM+c,YAErEm/B,EAAI6jD,qBAAqB6P,IAAgB7gG,MACpC,SAAqBjN,IAAjBo6C,EAAI4zD,SAOb,MAAM,IAAItvG,MAAM,sDAFhB07C,EAAI0zD,IAAgB7gG,GAKtB,OAAOA,EAnGEqhG,CAAU1uG,GAEnB,GAA0B,mBAAfA,EAAEmM,SACX,OAAOy3B,GAAW5jC,EAAEmM,YAEtB,MAAM,IAAIrN,MAAM,cAAgB2F,EAAO,sBAkBzC,SAASm/B,GAAW8lD,GAQlB,IADA,IAAIr8E,EAAO,EACF6+F,EAAK,EAAGA,EAAKxiB,EAAOrlF,OAAQ6nG,IACnC7+F,EAAO,GAAKA,EAAOq8E,EAAOpqE,WAAW4sF,GAAM,EAE7C,OAAOoB,GAAIjgG,GAqEb,IAAIohG,GAAejxG,OAAOixG,aAGtBN,GAAqB,WACvB,IAEE,OADA3wG,OAAOC,eAAe,GAAI,IAAK,KACxB,EACP,MAAOsvB,GACP,OAAO,GALa,GAuBxB,IACIkhF,GADAD,GAAkC,mBAAZ5gF,QAEtB4gF,KACFC,GAAU,IAAI7gF,SAGhB,IAAIutL,GAAa,EAEbzsG,GAAe,oBACG,mBAAX1iG,SACT0iG,GAAe1iG,OAAO0iG,KAGxB,IAAIN,GAA+B,GAC/BG,GAA6B,IAC7BD,GAAyB,EACzBD,GAAkB,GAEtB,SAASwF,GAAkB9nG,GACzB4nG,GACE5nG,IAAS6lF,EAAAA,EACT,qDAQF,SAASjuF,GAAIxF,GACX,OAAOA,MAAAA,EAAwCg3G,KAC7ChI,GAAMhvG,KAAWyrG,EAAUzrG,GAASA,EACpCg3G,KAAWa,eAAc,SAASlxG,GAChC,IAAImgB,EAAO20L,EAAcz7M,GACzB01G,GAAkB5uF,EAAKlZ,MACvBkZ,EAAKjlB,SAAQ,SAASy5B,EAAG/4B,GAAK,OAAOoE,EAAIT,IAAI3D,EAAG+4B,SA6KxD,SAAS0zE,GAAMC,GACb,SAAUA,IAAYA,EAASguG,KAxLjCzB,EAAYh2M,GAAKglG,IAcfhlG,GAAI2oG,GAAK,WAAY,IAAIoL,EAAYgiG,EAAQl4M,KAAKqa,UAAW,GAC3D,OAAOs5F,KAAWa,eAAc,SAASlxG,GACvC,IAAK,IAAI4S,EAAI,EAAGA,EAAIggG,EAAU7yG,OAAQ6S,GAAK,EAAG,CAC5C,GAAIA,EAAI,GAAKggG,EAAU7yG,OACrB,MAAM,IAAIvF,MAAM,0BAA4Bo4G,EAAUhgG,IAExD5S,EAAIT,IAAIqzG,EAAUhgG,GAAIggG,EAAUhgG,EAAI,SAK1C/T,GAAIrC,UAAUqL,SAAW,WACvB,OAAO7N,KAAK2sG,WAAW,QAAS,MAKlC9nG,GAAIrC,UAAUH,IAAM,SAAST,EAAG+rG,GAC9B,OAAO3tG,KAAK64G,MACV74G,KAAK64G,MAAMx2G,IAAI,OAAGP,EAAWF,EAAG+rG,GAChCA,GAKJ9oG,GAAIrC,UAAU+C,IAAM,SAAS3D,EAAG+4B,GAC9B,OAAOm+E,GAAU94G,KAAM4B,EAAG+4B,IAG5B91B,GAAIrC,UAAU+zG,MAAQ,SAAStB,EAASt6E,GACtC,OAAO36B,KAAK22G,SAAS1B,EAASjN,GAAS,WAAa,OAAOrtE,MAG7D91B,GAAIrC,UAAUy+B,OAAS,SAASr/B,GAC9B,OAAOk3G,GAAU94G,KAAM4B,EAAGomG,IAG5BnjG,GAAIrC,UAAUi0G,SAAW,SAASxB,GAChC,OAAOj1G,KAAK22G,SAAS1B,GAAS,WAAa,OAAOjN,MAGpDnjG,GAAIrC,UAAUitC,OAAS,SAAS7tC,EAAG+rG,EAAaiI,GAC9C,OAA4B,IAArB74F,UAAUhX,OACfnE,EAAE5B,MACFA,KAAK22G,SAAS,CAAC/0G,GAAI+rG,EAAaiI,IAGpC/wG,GAAIrC,UAAUm0G,SAAW,SAAS1B,EAAStH,EAAaiI,GACjDA,IACHA,EAAUjI,EACVA,OAAc7rG,GAEhB,IAAI+zG,EAAe0mG,GACjBv8M,KACAw8M,GAAcvnG,GACdtH,EACAiI,GAEF,OAAOC,IAAiB7N,OAAUlmG,EAAY+zG,GAGhDhxG,GAAIrC,UAAUkwE,MAAQ,WACpB,OAAkB,IAAd1yE,KAAKiN,KACAjN,KAELA,KAAKi3G,WACPj3G,KAAKiN,KAAO,EACZjN,KAAK64G,MAAQ,KACb74G,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEFq2G,MAKTxxG,GAAIrC,UAAU+K,MAAQ,WACpB,OAAOkvM,GAAiBz8M,UAAM8B,EAAWib,YAG3ClY,GAAIrC,UAAUmL,UAAY,SAASC,GACjC,OAAO6uM,GAAiBz8M,KAAM4N,EADwBgtM,EAAQl4M,KAAKqa,UAAW,KAIhFlY,GAAIrC,UAAU41G,QAAU,SAASnD,GAAU,IAAIlC,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GAC7E,OAAO/c,KAAK22G,SACV1B,EACAoB,MACA,SAAS10G,GAAK,MAA0B,mBAAZA,EAAE4L,MAC5B5L,EAAE4L,MAAM8S,MAAM1e,EAAGoxG,GACjBA,EAAMA,EAAMhtG,OAAS,OAI3BlB,GAAIrC,UAAU01G,UAAY,WACxB,OAAOukG,GAAiBz8M,KAAMy3G,GAAY16F,YAG5ClY,GAAIrC,UAAU21G,cAAgB,SAASvqG,GAAS,IAAImlG,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GAClF,OAAO0/L,GAAiBz8M,KAAM63G,GAAejqG,GAASmlG,IAGxDluG,GAAIrC,UAAU61G,YAAc,SAASpD,GAAU,IAAIlC,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GACjF,OAAO/c,KAAK22G,SACV1B,EACAoB,MACA,SAAS10G,GAAK,MAA8B,mBAAhBA,EAAEu2G,UAC5Bv2G,EAAEu2G,UAAU73F,MAAM1e,EAAGoxG,GACrBA,EAAMA,EAAMhtG,OAAS,OAI3BlB,GAAIrC,UAAU29C,KAAO,SAASwzD,GAE5B,OAAOsF,GAAWvF,GAAY1zG,KAAM2zG,KAGtC9uG,GAAIrC,UAAU02G,OAAS,SAAShI,EAAQyC,GAEtC,OAAOsF,GAAWvF,GAAY1zG,KAAM2zG,EAAYzC,KAKlDrsG,GAAIrC,UAAU00G,cAAgB,SAASlqG,GACrC,IAAIsrG,EAAUt4G,KAAKu4G,YAEnB,OADAvrG,EAAGsrG,GACIA,EAAQE,aAAeF,EAAQG,cAAcz4G,KAAKi3G,WAAaj3G,MAGxE6E,GAAIrC,UAAU+1G,UAAY,WACxB,OAAOv4G,KAAKi3G,UAAYj3G,KAAOA,KAAKy4G,cAAc,IAAItQ,IAGxDtjG,GAAIrC,UAAUk2G,YAAc,WAC1B,OAAO14G,KAAKy4G,iBAGd5zG,GAAIrC,UAAUg2G,WAAa,WACzB,OAAOx4G,KAAK24G,WAGd9zG,GAAIrC,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACxC,OAAO,IAAImM,GAAYn5G,KAAMmG,EAAM6mG,IAGrCnoG,GAAIrC,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACxDimB,EAAa,EAKjB,OAJAjmB,KAAK64G,OAAS74G,KAAK64G,MAAMO,SAAQ,SAAS7mG,GAExC,OADA0T,IACOjZ,EAAGuF,EAAM,GAAIA,EAAM,GAAI4pM,KAC7BnvG,GACI/mF,GAGTphB,GAAIrC,UAAUi2G,cAAgB,SAASY,GACrC,OAAIA,IAAYr5G,KAAKi3G,UACZj3G,KAEJq5G,EAKEC,GAAQt5G,KAAKiN,KAAMjN,KAAK64G,MAAOQ,EAASr5G,KAAKg5G,SAJlDh5G,KAAKi3G,UAAYoC,EACjBr5G,KAAK24G,WAAY,EACV34G,OAUb6E,GAAIwpG,MAAQA,GAEZ,IA2ZIgO,GA3ZAigG,GAAkB,wBAElB/iG,GAAe10G,GAAIrC,UAUrB,SAASi3G,GAAaJ,EAASp4G,GAC7BjB,KAAKq5G,QAAUA,EACfr5G,KAAKiB,QAAUA,EAgEjB,SAASm5G,GAAkBf,EAASgB,EAAQC,GAC1Ct6G,KAAKq5G,QAAUA,EACfr5G,KAAKq6G,OAASA,EACdr6G,KAAKs6G,MAAQA,EAkEf,SAASS,GAAiB1B,EAAStf,EAAOugB,GACxCt6G,KAAKq5G,QAAUA,EACfr5G,KAAK+5F,MAAQA,EACb/5F,KAAKs6G,MAAQA,EAuDf,SAAS2B,GAAkB5C,EAASK,EAASz4G,GAC3CjB,KAAKq5G,QAAUA,EACfr5G,KAAK05G,QAAUA,EACf15G,KAAKiB,QAAUA,EAyEjB,SAAS+4G,GAAUX,EAASK,EAASnnG,GACnCvS,KAAKq5G,QAAUA,EACfr5G,KAAK05G,QAAUA,EACf15G,KAAKuS,MAAQA,EAgEf,SAAS4mG,GAAYnzG,EAAKG,EAAM6mG,GAC9BhtG,KAAKs8G,MAAQn2G,EACbnG,KAAKu8G,SAAWvP,EAChBhtG,KAAKw8G,OAASx2G,EAAI6yG,OAAS4D,GAAiBz2G,EAAI6yG,OAsCpD,SAAS6D,GAAiBv2G,EAAMoM,GAC9B,OAAO44F,EAAchlG,EAAMoM,EAAM,GAAIA,EAAM,IAG7C,SAASkqG,GAAiBx3G,EAAM43G,GAC9B,MAAO,CACL53G,KAAMA,EACN7D,MAAO,EACPw7G,OAAQC,GAIZ,SAASvD,GAAQrsG,EAAM67E,EAAMuwB,EAAStqG,GACpC,IAAI/I,EAAM9G,OAAOuC,OAAO83G,IAMxB,OALAvzG,EAAIiH,KAAOA,EACXjH,EAAI6yG,MAAQ/vB,EACZ9iF,EAAIixG,UAAYoC,EAChBrzG,EAAIgzG,OAASjqG,EACb/I,EAAI2yG,WAAY,EACT3yG,EAIT,SAASqwG,KACP,OAAOgG,KAAcA,GAAY/C,GAAQ,IAG3C,SAASR,GAAU9yG,EAAKpE,EAAG+4B,GACzB,IAAImiF,EACAC,EACJ,GAAK/2G,EAAI6yG,MAMF,CACL,IAAIc,EAAgB4hG,EAAQF,GACxBzhG,EAAW2hG,EAAQD,GAEvB,GADAx+F,EAAUnC,GAAW30G,EAAI6yG,MAAO7yG,EAAIixG,UAAW,OAAGn1G,EAAWF,EAAG+4B,EAAGg/E,EAAeC,IAC7EA,EAASv6G,MACZ,OAAO2G,EAET+2G,EAAU/2G,EAAIiH,MAAQ0sG,EAAct6G,MAAQs7B,IAAMqtE,GAAW,EAAI,EAAI,OAbvD,CACd,GAAIrtE,IAAMqtE,EACR,OAAOhiG,EAET+2G,EAAU,EACVD,EAAU,IAAIrD,GAAazzG,EAAIixG,UAAW,CAAC,CAACr1G,EAAG+4B,KAUjD,OAAI30B,EAAIixG,WACNjxG,EAAIiH,KAAO8vG,EACX/2G,EAAI6yG,MAAQiE,EACZ92G,EAAIgzG,YAASl3G,EACbkE,EAAI2yG,WAAY,EACT3yG,GAEF82G,EAAUxD,GAAQyD,EAASD,GAAWzG,KAG/C,SAASsE,GAAW11G,EAAMo0G,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GAC5E,OAAK30G,EAQEA,EAAKwqC,OAAO4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GAPjEv6G,IAAU2oG,EACL/iG,GAETgjG,EAAO2R,GACP3R,EAAO0R,GACA,IAAIK,GAAUX,EAASK,EAAS,CAACv4G,EAAK9B,KAKjD,SAAS47G,GAAWh2G,GAClB,OAAOA,EAAKxF,cAAgBu6G,IAAa/0G,EAAKxF,cAAgBw8G,GAGhE,SAASC,GAAcj3G,EAAMo0G,EAASl/D,EAAOu/D,EAASnnG,GACpD,GAAItN,EAAKy0G,UAAYA,EACnB,OAAO,IAAIuC,GAAkB5C,EAASK,EAAS,CAACz0G,EAAKsN,MAAOA,IAG9D,IAGImoG,EAHAsC,GAAkB,IAAV7iE,EAAcl1C,EAAKy0G,QAAUz0G,EAAKy0G,UAAYv/D,GAAS4tD,EAC/DkV,GAAkB,IAAV9iE,EAAcu/D,EAAUA,IAAYv/D,GAAS4tD,EAOzD,OAAO,IAAIqS,GAAkBf,EAAU,GAAK2D,EAAS,GAAKC,EAJ9CD,IAASC,EACnB,CAACf,GAAcj3G,EAAMo0G,EAASl/D,EA1vDtB,EA0vDqCu/D,EAASnnG,KACpDmoG,EAAU,IAAIV,GAAUX,EAASK,EAASnnG,GAASyqG,EAAOC,EAAO,CAACh4G,EAAMy1G,GAAW,CAACA,EAASz1G,KAyCnG,SAASw3M,GAAiBz2M,EAAK4H,EAAQ8uM,GAErC,IADA,IAAI3pG,EAAQ,GACHnF,EAAK,EAAGA,EAAK8uG,EAAU32M,OAAQ6nG,IAAM,CAC5C,IAAIvuG,EAAQq9M,EAAU9uG,GAClBznF,EAAO20L,EAAcz7M,GACpBulH,EAAWvlH,KACd8mB,EAAOA,EAAKngB,KAAI,SAAS20B,GAAK,OAAOixF,GAAOjxF,OAE9Co4E,EAAMttG,KAAK0gB,GAEb,OAAOw2L,GAAwB32M,EAAK4H,EAAQmlG,GAG9C,SAAS0E,GAAW9d,EAAUt6F,EAAO8B,GACnC,OAAOw4F,GAAYA,EAASue,WAAa0M,EAAWvlH,GAClDs6F,EAASue,UAAU74G,GACnBuvG,GAAGjV,EAAUt6F,GAASs6F,EAAWt6F,EAGrC,SAASw4G,GAAejqG,GACtB,OAAO,SAAS+rF,EAAUt6F,EAAO8B,GAC/B,GAAIw4F,GAAYA,EAASwe,eAAiByM,EAAWvlH,GACnD,OAAOs6F,EAASwe,cAAcvqG,EAAQvO,GAExC,IAAIu9M,EAAYhvM,EAAO+rF,EAAUt6F,EAAO8B,GACxC,OAAOytG,GAAGjV,EAAUijH,GAAajjH,EAAWijH,GAIhD,SAASD,GAAwB1uG,EAAYrgG,EAAQmlG,GAEnD,OAAqB,KADrBA,EAAQA,EAAMzlG,QAAO,SAASW,GAAK,OAAkB,IAAXA,EAAEhB,SAClClH,OACDkoG,EAEe,IAApBA,EAAWhhG,MAAeghG,EAAWgJ,WAA8B,IAAjBlE,EAAMhtG,OAGrDkoG,EAAWiJ,eAAc,SAASjJ,GAUvC,IATA,IAAI4uG,EAAejvM,EACjB,SAASvO,EAAO8B,GACd8sG,EAAWx+D,OAAOtuC,EAAK6mG,GAAS,SAASrO,GACtC,OAAOA,IAAaqO,EAAU3oG,EAAQuO,EAAO+rF,EAAUt6F,EAAO8B,OAGnE,SAAS9B,EAAO8B,GACd8sG,EAAW1oG,IAAIpE,EAAK9B,IAEfuuG,EAAK,EAAGA,EAAKmF,EAAMhtG,OAAQ6nG,IAClCmF,EAAMnF,GAAI1sG,QAAQ27M,MAbb5uG,EAAWxuG,YAAYszG,EAAM,IAkBxC,SAASwpG,GAAgB5iH,EAAUmjH,EAAanvG,EAAaiI,GAC3D,IAAImnG,EAAWpjH,IAAaqO,EACxBmG,EAAO2uG,EAAYrmK,OACvB,GAAI03D,EAAKpZ,KAAM,CACb,IAAIkhB,EAAgB8mG,EAAWpvG,EAAchU,EACzCuc,EAAWN,EAAQK,GACvB,OAAOC,IAAaD,EAAgBtc,EAAWuc,EAEjDrB,GACEkoG,GAAapjH,GAAYA,EAASp0F,IAClC,mBAEF,IAAIpE,EAAMgtG,EAAK9uG,MACX82G,EAAe4mG,EAAW/0G,EAAUrO,EAASt3F,IAAIlB,EAAK6mG,GACtDoO,EAAcmmG,GAChBpmG,EACA2mG,EACAnvG,EACAiI,GAEF,OAAOQ,IAAgBD,EAAexc,EACpCyc,IAAgBpO,EAAUrO,EAAS14D,OAAO9/B,IACzC47M,EAAW1mG,KAAa1c,GAAUp0F,IAAIpE,EAAKi1G,GAGhD,SAASoE,GAASvsG,GAMhB,OAHAA,GADAA,GAAS,WADTA,GAAUA,GAAK,EAAK,cACKA,GAAK,EAAK,aACzBA,GAAK,GAAM,UAGV,KAFXA,GAASA,GAAK,IACLA,GAAK,IAIhB,SAASsoG,GAAMv6D,EAAO89D,EAAK/sB,EAAKsuB,GAC9B,IAAIE,EAAWF,EAAUr/D,EAAQ24D,EAAQ34D,GAEzC,OADAu/D,EAASzB,GAAO/sB,EACTwuB,EAvlBThC,GAAa+iG,KAAmB,EAChC/iG,GAAmB,OAAIA,GAAat4E,OACpCs4E,GAAa/C,SAAW+C,GAAa9C,SAYnCgD,GAAaj3G,UAAUH,IAAM,SAAS83C,EAAOu/D,EAASv4G,EAAKwsG,GAEzD,IADA,IAAI1sG,EAAUjB,KAAKiB,QACV2sG,EAAK,EAAGlqF,EAAMziB,EAAQ8E,OAAQ6nG,EAAKlqF,EAAKkqF,IAC/C,GAAIgB,GAAGztG,EAAKF,EAAQ2sG,GAAI,IACtB,OAAO3sG,EAAQ2sG,GAAI,GAGvB,OAAOD,GAGT8L,GAAaj3G,UAAUitC,OAAS,SAAS4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GAK3F,IAJA,IAAIC,EAAUx6G,IAAU2oG,EAEpB/mG,EAAUjB,KAAKiB,QACf64G,EAAM,EACDp2F,EAAMziB,EAAQ8E,OAAQ+zG,EAAMp2F,IAC/BkrF,GAAGztG,EAAKF,EAAQ64G,GAAK,IADeA,KAK1C,IAAIjqG,EAASiqG,EAAMp2F,EAEnB,GAAI7T,EAAS5O,EAAQ64G,GAAK,KAAOz6G,EAAQw6G,EACvC,OAAO75G,KAMT,GAHAioG,EAAO2R,IACNC,IAAYhqG,IAAWo4F,EAAO0R,IAE3BE,GAA8B,IAAnB54G,EAAQ8E,OAAvB,CAIA,IAAK8J,IAAWgqG,GAAW54G,EAAQ8E,QAAUg0G,GAC3C,OAyaN,SAAqBV,EAASp4G,EAASE,EAAK9B,GACrCg6G,IACHA,EAAU,IAAIlR,GAGhB,IADA,IAAIljG,EAAO,IAAI+0G,GAAUX,EAAStqG,GAAK5N,GAAM,CAACA,EAAK9B,IAC1CuuG,EAAK,EAAGA,EAAK3sG,EAAQ8E,OAAQ6nG,IAAM,CAC1C,IAAIr7F,EAAQtR,EAAQ2sG,GACpB3oG,EAAOA,EAAKwqC,OAAO4pE,EAAS,OAAGv3G,EAAWyQ,EAAM,GAAIA,EAAM,IAE5D,OAAOtN,EAlbIg1G,CAAYZ,EAASp4G,EAASE,EAAK9B,GAG5C,IAAI66G,EAAab,GAAWA,IAAYr5G,KAAKq5G,QACzCc,EAAaD,EAAaj5G,EAAU0zG,EAAQ1zG,GAYhD,OAVI4O,EACEgqG,EACFC,IAAQp2F,EAAM,EAAIy2F,EAAW33F,MAAS23F,EAAWL,GAAOK,EAAW33F,MAEnE23F,EAAWL,GAAO,CAAC34G,EAAK9B,GAG1B86G,EAAW10G,KAAK,CAACtE,EAAK9B,IAGpB66G,GACFl6G,KAAKiB,QAAUk5G,EACRn6G,MAGF,IAAIy5G,GAAaJ,EAASc,KAYnCC,GAAkB53G,UAAUH,IAAM,SAAS83C,EAAOu/D,EAASv4G,EAAKwsG,QAC9C7rG,IAAZ43G,IACFA,EAAU3qG,GAAK5N,IAEjB,IAAIo5G,EAAO,KAAiB,IAAVpgE,EAAcu/D,EAAUA,IAAYv/D,GAAS4tD,GAC3DsS,EAASr6G,KAAKq6G,OAClB,OAA0B,IAAlBA,EAASE,GAAa5M,EAC5B3tG,KAAKs6G,MAAME,GAASH,EAAUE,EAAM,IAAKl4G,IAAI83C,EA/3CvC,EA+3CsDu/D,EAASv4G,EAAKwsG,IAG9EyM,GAAkB53G,UAAUitC,OAAS,SAAS4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,QAChF93G,IAAZ43G,IACFA,EAAU3qG,GAAK5N,IAEjB,IAAIs5G,GAAyB,IAAVtgE,EAAcu/D,EAAUA,IAAYv/D,GAAS4tD,EAC5DwS,EAAM,GAAKE,EACXJ,EAASr6G,KAAKq6G,OACdxqG,EAA4B,IAAlBwqG,EAASE,GAEvB,IAAK1qG,GAAUxQ,IAAU2oG,EACvB,OAAOhoG,KAGT,IAAI85G,EAAMU,GAASH,EAAUE,EAAM,GAC/BD,EAAQt6G,KAAKs6G,MACbr1G,EAAO4K,EAASyqG,EAAMR,QAAOh4G,EAC7B44G,EAAUC,GAAW11G,EAAMo0G,EAASl/D,EAl5ChC,EAk5C+Cu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GAE3F,GAAIc,IAAYz1G,EACd,OAAOjF,KAGT,IAAK6P,GAAU6qG,GAAWJ,EAAMv0G,QAAU60G,GACxC,OAiYN,SAAqBvB,EAASiB,EAAOD,EAAQQ,EAAW51G,GAGtD,IAFA,IAAI80F,EAAQ,EACR+gB,EAAgB,IAAIh/F,MAAMgsF,GACrB8F,EAAK,EAAc,IAAXyM,EAAczM,IAAMyM,KAAY,EAC/CS,EAAclN,GAAe,EAATyM,EAAaC,EAAMvgB,UAAWj4F,EAGpD,OADAg5G,EAAcD,GAAa51G,EACpB,IAAI81G,GAAiB1B,EAAStf,EAAQ,EAAG+gB,GAxYrCE,CAAY3B,EAASiB,EAAOD,EAAQI,EAAaC,GAG1D,GAAI7qG,IAAW6qG,GAA4B,IAAjBJ,EAAMv0G,QAAgBk1G,GAAWX,EAAY,EAANR,IAC/D,OAAOQ,EAAY,EAANR,GAGf,GAAIjqG,GAAU6qG,GAA4B,IAAjBJ,EAAMv0G,QAAgBk1G,GAAWP,GACxD,OAAOA,EAGT,IAAIR,EAAab,GAAWA,IAAYr5G,KAAKq5G,QACzC6B,EAAYrrG,EAAS6qG,EAAUL,EAASA,EAASE,EAAMF,EAASE,EAChEY,EAAWtrG,EAAS6qG,EACtBnE,GAAM+D,EAAOR,EAAKY,EAASR,GA6ejC,SAAmBl+D,EAAO89D,EAAKuB,GAC7B,IAAIC,EAASt/D,EAAMj2C,OAAS,EAC5B,GAAIs1G,GAAWvB,IAAQwB,EAErB,OADAt/D,EAAMx5B,MACCw5B,EAIT,IAFA,IAAIu/D,EAAW,IAAIz/F,MAAMw/F,GACrBE,EAAQ,EACH5N,EAAK,EAAGA,EAAK0N,EAAQ1N,IACxBA,IAAOkM,IACT0B,EAAQ,GAEVD,EAAS3N,GAAM5xD,EAAM4xD,EAAK4N,GAE5B,OAAOD,EA1fHE,CAAUnB,EAAOR,EAAKI,GAyd5B,SAAkBl+D,EAAO89D,EAAK/sB,EAAKsuB,GACjC,IAAIC,EAASt/D,EAAMj2C,OAAS,EAC5B,GAAIs1G,GAAWvB,EAAM,IAAMwB,EAEzB,OADAt/D,EAAM89D,GAAO/sB,EACN/wC,EAIT,IAFA,IAAIu/D,EAAW,IAAIz/F,MAAMw/F,GACrBE,EAAQ,EACH5N,EAAK,EAAGA,EAAK0N,EAAQ1N,IACxBA,IAAOkM,GACTyB,EAAS3N,GAAM7gB,EACfyuB,GAAS,GAETD,EAAS3N,GAAM5xD,EAAM4xD,EAAK4N,GAG9B,OAAOD,EAxeHG,CAASpB,EAAOR,EAAKY,EAASR,GAEhC,OAAIA,GACFl6G,KAAKq6G,OAASa,EACdl7G,KAAKs6G,MAAQa,EACNn7G,MAGF,IAAIo6G,GAAkBf,EAAS6B,EAAWC,IAYnDJ,GAAiBv4G,UAAUH,IAAM,SAAS83C,EAAOu/D,EAASv4G,EAAKwsG,QAC7C7rG,IAAZ43G,IACFA,EAAU3qG,GAAK5N,IAEjB,IAAI24G,GAAiB,IAAV3/D,EAAcu/D,EAAUA,IAAYv/D,GAAS4tD,EACpD9iG,EAAOjF,KAAKs6G,MAAMR,GACtB,OAAO70G,EAAOA,EAAK5C,IAAI83C,EAn8Cf,EAm8C8Bu/D,EAASv4G,EAAKwsG,GAAeA,GAGrEoN,GAAiBv4G,UAAUitC,OAAS,SAAS4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,QAC/E93G,IAAZ43G,IACFA,EAAU3qG,GAAK5N,IAEjB,IAAI24G,GAAiB,IAAV3/D,EAAcu/D,EAAUA,IAAYv/D,GAAS4tD,EACpD8R,EAAUx6G,IAAU2oG,EACpBsS,EAAQt6G,KAAKs6G,MACbr1G,EAAOq1G,EAAMR,GAEjB,GAAID,IAAY50G,EACd,OAAOjF,KAGT,IAAI06G,EAAUC,GAAW11G,EAAMo0G,EAASl/D,EAn9ChC,EAm9C+Cu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GAC3F,GAAIc,IAAYz1G,EACd,OAAOjF,KAGT,IAAI27G,EAAW37G,KAAK+5F,MACpB,GAAK90F,GAEE,IAAKy1G,KACViB,EACeC,GACb,OA8SR,SAAmBvC,EAASiB,EAAOvgB,EAAO8hB,GAIxC,IAHA,IAAIxB,EAAS,EACTyB,EAAW,EACXC,EAAc,IAAIjgG,MAAMi+E,GACnB6T,EAAK,EAAG2M,EAAM,EAAG72F,EAAM42F,EAAMv0G,OAAQ6nG,EAAKlqF,EAAKkqF,IAAM2M,IAAQ,EAAG,CACvE,IAAIt1G,EAAOq1G,EAAM1M,QACJ9rG,IAATmD,GAAsB2oG,IAAOiO,IAC/BxB,GAAUE,EACVwB,EAAYD,KAAc72G,GAG9B,OAAO,IAAIm1G,GAAkBf,EAASgB,EAAQ0B,GAzTjCC,CAAU3C,EAASiB,EAAOqB,EAAU7B,QAJ7C6B,IAQF,IAAIzB,EAAab,GAAWA,IAAYr5G,KAAKq5G,QACzC8B,EAAW5E,GAAM+D,EAAOR,EAAKY,EAASR,GAE1C,OAAIA,GACFl6G,KAAK+5F,MAAQ4hB,EACb37G,KAAKs6G,MAAQa,EACNn7G,MAGF,IAAI+6G,GAAiB1B,EAASsC,EAAUR,IAYjDc,GAAkBz5G,UAAUH,IAAM,SAAS83C,EAAOu/D,EAASv4G,EAAKwsG,GAE9D,IADA,IAAI1sG,EAAUjB,KAAKiB,QACV2sG,EAAK,EAAGlqF,EAAMziB,EAAQ8E,OAAQ6nG,EAAKlqF,EAAKkqF,IAC/C,GAAIgB,GAAGztG,EAAKF,EAAQ2sG,GAAI,IACtB,OAAO3sG,EAAQ2sG,GAAI,GAGvB,OAAOD,GAGTsO,GAAkBz5G,UAAUitC,OAAS,SAAS4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,QAChF93G,IAAZ43G,IACFA,EAAU3qG,GAAK5N,IAGjB,IAAI04G,EAAUx6G,IAAU2oG,EAExB,GAAI0R,IAAY15G,KAAK05G,QACnB,OAAIG,EACK75G,MAETioG,EAAO2R,GACP3R,EAAO0R,GACAuC,GAAcl8G,KAAMq5G,EAASl/D,EAAOu/D,EAAS,CAACv4G,EAAK9B,KAK5D,IAFA,IAAI4B,EAAUjB,KAAKiB,QACf64G,EAAM,EACDp2F,EAAMziB,EAAQ8E,OAAQ+zG,EAAMp2F,IAC/BkrF,GAAGztG,EAAKF,EAAQ64G,GAAK,IADeA,KAK1C,IAAIjqG,EAASiqG,EAAMp2F,EAEnB,GAAI7T,EAAS5O,EAAQ64G,GAAK,KAAOz6G,EAAQw6G,EACvC,OAAO75G,KAMT,GAHAioG,EAAO2R,IACNC,IAAYhqG,IAAWo4F,EAAO0R,GAE3BE,GAAmB,IAARn2F,EACb,OAAO,IAAIs2F,GAAUX,EAASr5G,KAAK05G,QAASz4G,EAAc,EAAN64G,IAGtD,IAAII,EAAab,GAAWA,IAAYr5G,KAAKq5G,QACzCc,EAAaD,EAAaj5G,EAAU0zG,EAAQ1zG,GAYhD,OAVI4O,EACEgqG,EACFC,IAAQp2F,EAAM,EAAIy2F,EAAW33F,MAAS23F,EAAWL,GAAOK,EAAW33F,MAEnE23F,EAAWL,GAAO,CAAC34G,EAAK9B,GAG1B86G,EAAW10G,KAAK,CAACtE,EAAK9B,IAGpB66G,GACFl6G,KAAKiB,QAAUk5G,EACRn6G,MAGF,IAAIi8G,GAAkB5C,EAASr5G,KAAK05G,QAASS,IAYtDH,GAAUx3G,UAAUH,IAAM,SAAS83C,EAAOu/D,EAASv4G,EAAKwsG,GACtD,OAAOiB,GAAGztG,EAAKnB,KAAKuS,MAAM,IAAMvS,KAAKuS,MAAM,GAAKo7F,GAGlDqM,GAAUx3G,UAAUitC,OAAS,SAAS4pE,EAASl/D,EAAOu/D,EAASv4G,EAAK9B,EAAOs6G,EAAeC,GACxF,IAAIC,EAAUx6G,IAAU2oG,EACpBmU,EAAWvN,GAAGztG,EAAKnB,KAAKuS,MAAM,IAClC,OAAI4pG,EAAW98G,IAAUW,KAAKuS,MAAM,GAAKsnG,GAChC75G,MAGTioG,EAAO2R,GAEHC,OACF5R,EAAO0R,GAILwC,EACE9C,GAAWA,IAAYr5G,KAAKq5G,SAC9Br5G,KAAKuS,MAAM,GAAKlT,EACTW,MAEF,IAAIg6G,GAAUX,EAASr5G,KAAK05G,QAAS,CAACv4G,EAAK9B,KAGpD4oG,EAAO0R,GACAuC,GAAcl8G,KAAMq5G,EAASl/D,EAAOprC,GAAK5N,GAAM,CAACA,EAAK9B,OAOhEo6G,GAAaj3G,UAAU42G,QACvB6C,GAAkBz5G,UAAU42G,QAAU,SAAUpsG,EAAIggG,GAElD,IADA,IAAI/rG,EAAUjB,KAAKiB,QACV2sG,EAAK,EAAGwO,EAAWn7G,EAAQ8E,OAAS,EAAG6nG,GAAMwO,EAAUxO,IAC9D,IAAkD,IAA9C5gG,EAAG/L,EAAQ+rG,EAAUoP,EAAWxO,EAAKA,IACvC,OAAO,GAKbwM,GAAkB53G,UAAU42G,QAC5B2B,GAAiBv4G,UAAU42G,QAAU,SAAUpsG,EAAIggG,GAEjD,IADA,IAAIsN,EAAQt6G,KAAKs6G,MACR1M,EAAK,EAAGwO,EAAW9B,EAAMv0G,OAAS,EAAG6nG,GAAMwO,EAAUxO,IAAM,CAClE,IAAI3oG,EAAOq1G,EAAMtN,EAAUoP,EAAWxO,EAAKA,GAC3C,GAAI3oG,IAAsC,IAA9BA,EAAKm0G,QAAQpsG,EAAIggG,GAC3B,OAAO,IAKbgN,GAAUx3G,UAAU42G,QAAU,SAAUpsG,EAAIggG,GAC1C,OAAOhgG,EAAGhN,KAAKuS,QAGjBsoM,EAAY1hG,GAAajO,GAQvBiO,GAAY32G,UAAUi0C,KAAO,WAG3B,IAFA,IAAItwC,EAAOnG,KAAKs8G,MACZv1B,EAAQ/mF,KAAKw8G,OACVz1B,GAAO,CACZ,IAEIq1B,EAFAn3G,EAAO8hF,EAAM9hF,KACb7D,EAAQ2lF,EAAM3lF,QAElB,GAAI6D,EAAKsN,OACP,GAAc,IAAVnR,EACF,OAAOs7G,GAAiBv2G,EAAMlB,EAAKsN,YAEhC,GAAItN,EAAKhE,SAEd,GAAIG,IADJg7G,EAAWn3G,EAAKhE,QAAQ8E,OAAS,GAE/B,OAAO22G,GAAiBv2G,EAAMlB,EAAKhE,QAAQjB,KAAKu8G,SAAWH,EAAWh7G,EAAQA,SAIhF,GAAIA,IADJg7G,EAAWn3G,EAAKq1G,MAAMv0G,OAAS,GACR,CACrB,IAAI42G,EAAU13G,EAAKq1G,MAAMt6G,KAAKu8G,SAAWH,EAAWh7G,EAAQA,GAC5D,GAAIu7G,EAAS,CACX,GAAIA,EAAQpqG,MACV,OAAOmqG,GAAiBv2G,EAAMw2G,EAAQpqG,OAExCw0E,EAAQ/mF,KAAKw8G,OAASC,GAAiBE,EAAS51B,GAElD,SAGJA,EAAQ/mF,KAAKw8G,OAASx8G,KAAKw8G,OAAOI,OAEpC,MAniDK,CAAEv9G,WAAOyC,EAAWizF,MAAM,IAmyDnC,IAAIglB,GAAqBjS,EACrB8S,GAA0B9S,GAC1B8T,GAA0B9T,EAM5B,SAASuV,GAAKh+G,GACZ,IAAIi+G,EAAQC,KACZ,GAAIl+G,MAAAA,EACF,OAAOi+G,EAET,GAAIH,GAAO99G,GACT,OAAOA,EAET,IAAI8mB,EAAO40L,EAAgB17M,GACvB4N,EAAOkZ,EAAKlZ,KAChB,OAAa,IAATA,EACKqwG,GAETvI,GAAkB9nG,GACdA,EAAO,GAAKA,EAAO66F,EACd0V,GAAS,EAAGvwG,EA57Db,EA47D0B,KAAM,IAAIwwG,GAAMt3F,EAAKxc,YAEhD2zG,EAAMpG,eAAc,SAASjoB,GAClCA,EAAKyuB,QAAQzwG,GACbkZ,EAAKjlB,SAAQ,SAASy5B,EAAG/hB,GAAK,OAAOq2E,EAAK1pF,IAAIqT,EAAG+hB,UA4JvD,SAASwiF,GAAOC,GACd,SAAUA,IAAaA,EAAU4/F,KApLnCnC,EAAYx9F,GAAMtT,IA2BhBsT,GAAK7P,GAAK,WACR,OAAOxtG,KAAK+c,YAGdsgG,GAAK76G,UAAUqL,SAAW,WACxB,OAAO7N,KAAK2sG,WAAW,SAAU,MAKnC0Q,GAAK76G,UAAUH,IAAM,SAASjB,EAAOusG,GAEnC,IADAvsG,EAAQmnG,EAAUvoG,KAAMoB,KACX,GAAKA,EAAQpB,KAAKiN,KAAM,CAEnC,IAAIhI,EAAO04G,GAAY39G,KADvBoB,GAASpB,KAAKsqE,SAEd,OAAOrlE,GAAQA,EAAK+2C,MAAM56C,EAAQ2mG,GAEpC,OAAO4F,GAKT0P,GAAK76G,UAAU+C,IAAM,SAASnE,EAAO/B,GACnC,OA6SJ,SAAoB4vF,EAAM7tF,EAAO/B,GAG/B,IAFA+B,EAAQmnG,EAAUtZ,EAAM7tF,KAEVA,EACZ,OAAO6tF,EAGT,GAAI7tF,GAAS6tF,EAAKhiF,MAAQ7L,EAAQ,EAChC,OAAO6tF,EAAKioB,eAAc,SAASjoB,GACjC7tF,EAAQ,EACNw8G,GAAc3uB,EAAM7tF,GAAOmE,IAAI,EAAGlG,GAClCu+G,GAAc3uB,EAAM,EAAG7tF,EAAQ,GAAGmE,IAAInE,EAAO/B,MAInD+B,GAAS6tF,EAAK3kB,QAEd,IAAIuzC,EAAU5uB,EAAK6uB,MACfhB,EAAU7tB,EAAK4pB,MACfe,EAAW2hG,EAAQD,GAOvB,OANIl6M,GAAS28G,GAAc9uB,EAAK+uB,WAC9BH,EAAUI,GAAYJ,EAAS5uB,EAAKgoB,UAAW,EAAG71G,EAAO/B,EAAOu6G,GAEhEkD,EAAUmB,GAAYnB,EAAS7tB,EAAKgoB,UAAWhoB,EAAKivB,OAAQ98G,EAAO/B,EAAOu6G,GAGvEA,EAASv6G,MAIV4vF,EAAKgoB,WACPhoB,EAAK4pB,MAAQiE,EACb7tB,EAAK6uB,MAAQD,EACb5uB,EAAK+pB,YAASl3G,EACdmtF,EAAK0pB,WAAY,EACV1pB,GAEFuuB,GAASvuB,EAAK3kB,QAAS2kB,EAAK+uB,UAAW/uB,EAAKivB,OAAQpB,EAASe,GAV3D5uB,EAxUAkvB,CAAWn+G,KAAMoB,EAAO/B,IAGjCg+G,GAAK76G,UAAUy+B,OAAS,SAAS7/B,GAC/B,OAAQpB,KAAKkI,IAAI9G,GACL,IAAVA,EAAcpB,KAAKm6C,QACnB/4C,IAAUpB,KAAKiN,KAAO,EAAIjN,KAAKwiB,MAC/BxiB,KAAK+X,OAAO3W,EAAO,GAHKpB,MAM5Bq9G,GAAK76G,UAAU47G,OAAS,SAASh9G,EAAO/B,GACtC,OAAOW,KAAK+X,OAAO3W,EAAO,EAAG/B,IAG/Bg+G,GAAK76G,UAAUkwE,MAAQ,WACrB,OAAkB,IAAd1yE,KAAKiN,KACAjN,KAELA,KAAKi3G,WACPj3G,KAAKiN,KAAOjN,KAAKsqE,QAAUtqE,KAAKg+G,UAAY,EAC5Ch+G,KAAKk+G,OA/+DC,EAg/DNl+G,KAAK64G,MAAQ74G,KAAK89G,MAAQ,KAC1B99G,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEFu9G,MAGTF,GAAK76G,UAAUiD,KAAO,WACpB,IAAIsH,EAASgQ,UACTshG,EAAUr+G,KAAKiN,KACnB,OAAOjN,KAAKk3G,eAAc,SAASjoB,GACjC2uB,GAAc3uB,EAAM,EAAGovB,EAAUtxG,EAAOhH,QACxC,IAAK,IAAI6nG,EAAK,EAAGA,EAAK7gG,EAAOhH,OAAQ6nG,IACnC3e,EAAK1pF,IAAI84G,EAAUzQ,EAAI7gG,EAAO6gG,QAKpCyP,GAAK76G,UAAUggB,IAAM,WACnB,OAAOo7F,GAAc59G,KAAM,GAAI,IAGjCq9G,GAAK76G,UAAUg3C,QAAU,WACvB,IAAIzsC,EAASgQ,UACb,OAAO/c,KAAKk3G,eAAc,SAASjoB,GACjC2uB,GAAc3uB,GAAOliF,EAAOhH,QAC5B,IAAK,IAAI6nG,EAAK,EAAGA,EAAK7gG,EAAOhH,OAAQ6nG,IACnC3e,EAAK1pF,IAAIqoG,EAAI7gG,EAAO6gG,QAK1ByP,GAAK76G,UAAU23C,MAAQ,WACrB,OAAOyjE,GAAc59G,KAAM,IAK7Bq9G,GAAK76G,UAAU+K,MAAQ,WACrB,OAAO0vM,GAAkBj9M,UAAM8B,EAAWib,YAG5CsgG,GAAK76G,UAAUmL,UAAY,SAASC,GAClC,OAAOqvM,GAAkBj9M,KAAM4N,EADwBgtM,EAAQl4M,KAAKqa,UAAW,KAIjFsgG,GAAK76G,UAAU01G,UAAY,WACzB,OAAO+kG,GAAkBj9M,KAAMy3G,GAAY16F,YAG7CsgG,GAAK76G,UAAU21G,cAAgB,SAASvqG,GAAS,IAAImlG,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GACnF,OAAOkgM,GAAkBj9M,KAAM63G,GAAejqG,GAASmlG,IAGzDsK,GAAK76G,UAAUk7G,QAAU,SAASzwG,GAChC,OAAO2wG,GAAc59G,KAAM,EAAGiN,IAKhCowG,GAAK76G,UAAU6gB,MAAQ,SAASqlF,EAAO9d,GACrC,IAAI39E,EAAOjN,KAAKiN,KAChB,OAAIw7F,EAAWC,EAAO9d,EAAK39E,GAClBjN,KAEF49G,GACL59G,KACA4oG,EAAaF,EAAOz7F,GACpB67F,EAAWle,EAAK39E,KAIpBowG,GAAK76G,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACzC,IAAI5rG,EAAQ,EACR2L,EAAS0xG,GAAYz+G,KAAMgtG,GAC/B,OAAO,IAAI9B,GAAS,WAClB,IAAI7rG,EAAQ0N,IACZ,OAAO1N,IAAUq/G,GA57Dd,CAAEr/G,WAAOyC,EAAWizF,MAAM,GA87D3BoW,EAAchlG,EAAM/E,IAAS/B,OAInCg+G,GAAK76G,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAItC,IAHA,IAEI3tG,EAFA+B,EAAQ,EACR2L,EAAS0xG,GAAYz+G,KAAMgtG,IAEvB3tG,EAAQ0N,OAAc2xG,KACK,IAA7B1xG,EAAG3N,EAAO+B,IAASpB,QAIzB,OAAOoB,GAGTi8G,GAAK76G,UAAUi2G,cAAgB,SAASY,GACtC,OAAIA,IAAYr5G,KAAKi3G,UACZj3G,KAEJq5G,EAIEmE,GAASx9G,KAAKsqE,QAAStqE,KAAKg+G,UAAWh+G,KAAKk+G,OAAQl+G,KAAK64G,MAAO74G,KAAK89G,MAAOzE,EAASr5G,KAAKg5G,SAH/Fh5G,KAAKi3G,UAAYoC,EACVr5G,OAUbq9G,GAAKF,OAASA,GAEd,IAAI6/F,GAAmB,yBAEnBr+F,GAAgBtB,GAAK76G,UAiBvB,SAASi7G,GAAMzhE,EAAOq9D,GACpBr5G,KAAKg8C,MAAQA,EACbh8C,KAAKq5G,QAAUA,EAlBnBsF,GAAcq+F,KAAoB,EAClCr+F,GAAoB,OAAIA,GAAc19E,OACtC09E,GAAcpI,MAAQgD,GAAahD,MACnCoI,GAAclI,SACdkI,GAAcnI,SAAW+C,GAAa/C,SACtCmI,GAAclvE,OAAS8pE,GAAa9pE,OACpCkvE,GAAchI,SAAW4C,GAAa5C,SACtCgI,GAAcvG,QAAUmB,GAAanB,QACrCuG,GAActG,YAAckB,GAAalB,YACzCsG,GAAczH,cAAgBqC,GAAarC,cAC3CyH,GAAcpG,UAAYgB,GAAahB,UACvCoG,GAAcjG,YAAca,GAAab,YACzCiG,GAAcnG,WAAae,GAAaf,WAWtCiF,GAAMj7G,UAAUo8G,aAAe,SAASvF,EAAS1/F,EAAOvY,GACtD,GAAIA,IAAUuY,EAAQ,GAAKA,EAAmC,IAAtB3Z,KAAKg8C,MAAMj2C,OACjD,OAAO/F,KAET,IAAI6+G,EAAez9G,IAAUuY,EAASouF,EACtC,GAAI8W,GAAe7+G,KAAKg8C,MAAMj2C,OAC5B,OAAO,IAAI03G,GAAM,GAAIpE,GAEvB,IACIyF,EADAC,EAAgC,IAAhBF,EAEpB,GAAIllG,EAAQ,EAAG,CACb,IAAIqlG,EAAWh/G,KAAKg8C,MAAM6iE,GAE1B,IADAC,EAAWE,GAAYA,EAASJ,aAAavF,EAAS1/F,EAxoEhD,EAwoE+DvY,MACpD49G,GAAYD,EAC3B,OAAO/+G,KAGX,GAAI++G,IAAkBD,EACpB,OAAO9+G,KAET,IAAIi/G,EAAWC,GAAcl/G,KAAMq5G,GACnC,IAAK0F,EACH,IAAK,IAAInR,EAAK,EAAGA,EAAKiR,EAAajR,IACjCqR,EAASjjE,MAAM4xD,QAAM9rG,EAMzB,OAHIg9G,IACFG,EAASjjE,MAAM6iE,GAAeC,GAEzBG,GAGTxB,GAAMj7G,UAAU28G,YAAc,SAAS9F,EAAS1/F,EAAOvY,GACrD,GAAIA,KAAWuY,EAAQ,GAAKA,EAAQ,IAA4B,IAAtB3Z,KAAKg8C,MAAMj2C,OACnD,OAAO/F,KAET,IAKI8+G,EALAM,EAAch+G,EAAQ,IAAOuY,EAASouF,EAC1C,GAAIqX,GAAap/G,KAAKg8C,MAAMj2C,OAC1B,OAAO/F,KAIT,GAAI2Z,EAAQ,EAAG,CACb,IAAIqlG,EAAWh/G,KAAKg8C,MAAMojE,GAE1B,IADAN,EAAWE,GAAYA,EAASG,YAAY9F,EAAS1/F,EAxqE/C,EAwqE8DvY,MACnD49G,GAAYI,IAAcp/G,KAAKg8C,MAAMj2C,OAAS,EAC7D,OAAO/F,KAIX,IAAIi/G,EAAWC,GAAcl/G,KAAMq5G,GAKnC,OAJA4F,EAASjjE,MAAMjkC,OAAOqnG,EAAY,GAC9BN,IACFG,EAASjjE,MAAMojE,GAAaN,GAEvBG,GAKX,IA2EII,GAiWAsB,GA5aAjC,GAAO,GAEX,SAASD,GAAYxvB,EAAM+d,GACzB,IAAIv/F,EAAOwhF,EAAK3kB,QACZ58D,EAAQuhF,EAAK+uB,UACbsB,EAAUvB,GAAcrwG,GACxB6xG,EAAOtwB,EAAK6uB,MAEhB,OAAO0B,EAAkBvwB,EAAK4pB,MAAO5pB,EAAKivB,OAAQ,GAElD,SAASsB,EAAkBv6G,EAAM0U,EAAOwF,GACtC,OAAiB,IAAVxF,EAKT,SAAqB1U,EAAMka,GACzB,IAAI68B,EAAQ78B,IAAWmgG,EAAUC,GAAQA,EAAKvjE,MAAQ/2C,GAAQA,EAAK+2C,MAC/DtkB,EAAOvY,EAAS1R,EAAO,EAAIA,EAAO0R,EAClCs2F,EAAK/nG,EAAQyR,EAIjB,OAHIs2F,EAAK3N,IACP2N,EAAK3N,GAEA,WACL,GAAIpwE,IAAS+9E,EACX,OAAOiJ,GAET,IAAI5E,EAAM9M,IAAYyI,EAAK/9E,IAC3B,OAAOskB,GAASA,EAAM89D,IAhBtB2F,CAAYx6G,EAAMka,GAoBtB,SAAqBla,EAAM0U,EAAOwF,GAChC,IAAIpS,EACAivC,EAAQ/2C,GAAQA,EAAK+2C,MACrBtkB,EAAOvY,EAAS1R,EAAO,EAAKA,EAAO0R,GAAWxF,EAC9C87F,EAAmC,GAA5B/nG,EAAQyR,GAAWxF,GAI9B,OAHI87F,EAAK3N,IACP2N,EAAK3N,GAEA,WACL,OAAG,CACD,GAAI/6F,EAAQ,CACV,IAAI1N,EAAQ0N,IACZ,GAAI1N,IAAUq/G,GACZ,OAAOr/G,EAET0N,EAAS,KAEX,GAAI2qB,IAAS+9E,EACX,OAAOiJ,GAET,IAAI5E,EAAM9M,IAAYyI,EAAK/9E,IAC3B3qB,EAASyyG,EACPxjE,GAASA,EAAM89D,GAAMngG,EA9uEnB,EA8uEkCwF,GAAU26F,GAAOngG,MAzCzD+lG,CAAYz6G,EAAM0U,EAAOwF,IAgD/B,SAASq+F,GAASrzE,EAAQw1E,EAAUhmG,EAAOmvE,EAAMy2B,EAAMlG,EAAStqG,GAC9D,IAAIkgF,EAAO/vF,OAAOuC,OAAOk9G,IAUzB,OATA1vB,EAAKhiF,KAAO0yG,EAAWx1E,EACvB8kD,EAAK3kB,QAAUngC,EACf8kD,EAAK+uB,UAAY2B,EACjB1wB,EAAKivB,OAASvkG,EACds1E,EAAK4pB,MAAQ/vB,EACbmG,EAAK6uB,MAAQyB,EACbtwB,EAAKgoB,UAAYoC,EACjBpqB,EAAK+pB,OAASjqG,EACdkgF,EAAK0pB,WAAY,EACV1pB,EAIT,SAASsuB,KACP,OAAO8B,KAAeA,GAAa7B,GAAS,EAAG,EArwErC,IAgzEZ,SAASS,GAAYh5G,EAAMo0G,EAAS1/F,EAAOvY,EAAO/B,EAAOu6G,GACvD,IAMIc,EANAZ,EAAO14G,IAAUuY,EAASouF,EAC1B6X,EAAU36G,GAAQ60G,EAAM70G,EAAK+2C,MAAMj2C,OACvC,IAAK65G,QAAqB99G,IAAVzC,EACd,OAAO4F,EAKT,GAAI0U,EAAQ,EAAG,CACb,IAAIkmG,EAAY56G,GAAQA,EAAK+2C,MAAM89D,GAC/BgG,EAAe7B,GAAY4B,EAAWxG,EAAS1/F,EA3zE3C,EA2zE0DvY,EAAO/B,EAAOu6G,GAChF,OAAIkG,IAAiBD,EACZ56G,IAETy1G,EAAUwE,GAAcj6G,EAAMo0G,IACtBr9D,MAAM89D,GAAOgG,EACdpF,GAGT,OAAIkF,GAAW36G,EAAK+2C,MAAM89D,KAASz6G,EAC1B4F,GAGTgjG,EAAO2R,GAEPc,EAAUwE,GAAcj6G,EAAMo0G,QAChBv3G,IAAVzC,GAAuBy6G,IAAQY,EAAQ1+D,MAAMj2C,OAAS,EACxD20G,EAAQ1+D,MAAMx5B,MAEdk4F,EAAQ1+D,MAAM89D,GAAOz6G,EAEhBq7G,GAGT,SAASwE,GAAcj6G,EAAMo0G,GAC3B,OAAIA,GAAWp0G,GAAQo0G,IAAYp0G,EAAKo0G,QAC/Bp0G,EAEF,IAAIw4G,GAAMx4G,EAAOA,EAAK+2C,MAAM34B,QAAU,GAAIg2F,GAGnD,SAASsE,GAAY1uB,EAAM8wB,GACzB,GAAIA,GAAYhC,GAAc9uB,EAAK+uB,WACjC,OAAO/uB,EAAK6uB,MAEd,GAAIiC,EAAW,GAAM9wB,EAAKivB,OA91EhB,EA81EiC,CAGzC,IAFA,IAAIj5G,EAAOgqF,EAAK4pB,MACZl/F,EAAQs1E,EAAKivB,OACVj5G,GAAQ0U,EAAQ,GACrB1U,EAAOA,EAAK+2C,MAAO+jE,IAAapmG,EAASouF,GACzCpuF,GAn2EM,EAq2ER,OAAO1U,GAIX,SAAS24G,GAAc3uB,EAAMyZ,EAAO9d,QAGpB9oF,IAAV4mG,IACFA,GAAgB,QAEN5mG,IAAR8oF,IACFA,GAAY,GAEd,IAAIo1B,EAAQ/wB,EAAKgoB,WAAa,IAAI9O,EAC9B8X,EAAYhxB,EAAK3kB,QACjB41C,EAAcjxB,EAAK+uB,UACnBmC,EAAYF,EAAYvX,EACxB0X,OAAsBt+G,IAAR8oF,EAAoBs1B,EAAct1B,EAAM,EAAIs1B,EAAct1B,EAAMq1B,EAAYr1B,EAC9F,GAAIu1B,IAAcF,GAAaG,IAAgBF,EAC7C,OAAOjxB,EAIT,GAAIkxB,GAAaC,EACf,OAAOnxB,EAAKvc,QAQd,IALA,IAAI2tC,EAAWpxB,EAAKivB,OAChBpB,EAAU7tB,EAAK4pB,MAGfyH,EAAc,EACXH,EAAYG,EAAc,GAC/BxD,EAAU,IAAIW,GAAMX,GAAWA,EAAQ9gE,MAAMj2C,OAAS,MAACjE,EAAWg7G,GAAW,GAAIkD,GAEjFM,GAAe,IADfD,GAv4EQ,GA04ENC,IACFH,GAAaG,EACbL,GAAaK,EACbF,GAAeE,EACfJ,GAAeI,GAOjB,IAJA,IAAIC,EAAgBxC,GAAcmC,GAC9BM,EAAgBzC,GAAcqC,GAG3BI,GAAiB,GAAMH,EAr5EpB,GAs5ERvD,EAAU,IAAIW,GAAMX,GAAWA,EAAQ9gE,MAAMj2C,OAAS,CAAC+2G,GAAW,GAAIkD,GACtEK,GAv5EQ,EA25EV,IAAII,EAAUxxB,EAAK6uB,MACfD,EAAU2C,EAAgBD,EAC5B5C,GAAY1uB,EAAMmxB,EAAc,GAChCI,EAAgBD,EAAgB,IAAI9C,GAAM,GAAIuC,GAASS,EAGzD,GAAIA,GAAWD,EAAgBD,GAAiBJ,EAAYD,GAAeO,EAAQzkE,MAAMj2C,OAAQ,CAG/F,IADA,IAAId,EADJ63G,EAAUoC,GAAcpC,EAASkD,GAExBrmG,EAAQ0mG,EAAU1mG,EAp6EnB,EAo6EkCA,GAp6ElC,EAo6EkD,CACxD,IAAImgG,EAAOyG,IAAkB5mG,EAASouF,EACtC9iG,EAAOA,EAAK+2C,MAAM89D,GAAOoF,GAAcj6G,EAAK+2C,MAAM89D,GAAMkG,GAE1D/6G,EAAK+2C,MAAOukE,IAx6EJ,EAw6E+BxY,GAAQ0Y,EASjD,GALIL,EAAcF,IAChBrC,EAAUA,GAAWA,EAAQsB,YAAYa,EAAO,EAAGI,IAIjDD,GAAaK,EACfL,GAAaK,EACbJ,GAAeI,EACfH,EAp7EQ,EAq7ERvD,EAAU,KACVe,EAAUA,GAAWA,EAAQe,aAAaoB,EAAO,EAAGG,QAG/C,GAAIA,EAAYF,GAAaO,EAAgBD,EAAe,CAIjE,IAHAD,EAAc,EAGPxD,GAAS,CACd,IAAI4D,EAAcP,IAAcE,EAAYtY,EAC5C,GAAI2Y,IAAgBF,IAAkBH,EAAYtY,EAChD,MAEE2Y,IACFJ,IAAgB,GAAKD,GAAYK,GAEnCL,GAr8EM,EAs8ENvD,EAAUA,EAAQ9gE,MAAM0kE,GAItB5D,GAAWqD,EAAYF,IACzBnD,EAAUA,EAAQ8B,aAAaoB,EAAOK,EAAUF,EAAYG,IAE1DxD,GAAW0D,EAAgBD,IAC7BzD,EAAUA,EAAQqC,YAAYa,EAAOK,EAAUG,EAAgBF,IAE7DA,IACFH,GAAaG,EACbF,GAAeE,GAInB,OAAIrxB,EAAKgoB,WACPhoB,EAAKhiF,KAAOmzG,EAAcD,EAC1BlxB,EAAK3kB,QAAU61C,EACflxB,EAAK+uB,UAAYoC,EACjBnxB,EAAKivB,OAASmC,EACdpxB,EAAK4pB,MAAQiE,EACb7tB,EAAK6uB,MAAQD,EACb5uB,EAAK+pB,YAASl3G,EACdmtF,EAAK0pB,WAAY,EACV1pB,GAEFuuB,GAAS2C,EAAWC,EAAaC,EAAUvD,EAASe,GAG7D,SAASo/F,GAAkBhuH,EAAMrhF,EAAQ8uM,GAGvC,IAFA,IAAI3pG,EAAQ,GACRmqG,EAAU,EACLtvG,EAAK,EAAGA,EAAK8uG,EAAU32M,OAAQ6nG,IAAM,CAC5C,IAAIvuG,EAAQq9M,EAAU9uG,GAClBznF,EAAO40L,EAAgB17M,GACvB8mB,EAAKlZ,KAAOiwM,IACdA,EAAU/2L,EAAKlZ,MAEZ23G,EAAWvlH,KACd8mB,EAAOA,EAAKngB,KAAI,SAAS20B,GAAK,OAAOixF,GAAOjxF,OAE9Co4E,EAAMttG,KAAK0gB,GAKb,OAHI+2L,EAAUjuH,EAAKhiF,OACjBgiF,EAAOA,EAAKyuB,QAAQw/F,IAEfP,GAAwB1tH,EAAMrhF,EAAQmlG,GAG/C,SAASgL,GAAc9wG,GACrB,OAAOA,EAAO66F,EAAO,EAAO76F,EAAO,IAz/EzB,KAggFV,SAASgsG,GAAW55G,GAClB,OAAOA,MAAAA,EAAwCuhH,KAC7CrS,GAAalvG,GAASA,EACtBuhH,KAAkB1J,eAAc,SAASlxG,GACvC,IAAImgB,EAAO20L,EAAcz7M,GACzB01G,GAAkB5uF,EAAKlZ,MACvBkZ,EAAKjlB,SAAQ,SAASy5B,EAAG/4B,GAAK,OAAOoE,EAAIT,IAAI3D,EAAG+4B,SAyExD,SAAS4zE,GAAaC,GACpB,OAAOH,GAAMG,IAAoB1D,EAAU0D,GAU7C,SAASyS,GAAej7G,EAAKipF,EAAMoqB,EAAStqG,GAC1C,IAAImyG,EAAOhiH,OAAOuC,OAAOw3G,GAAWz2G,WAMpC,OALA0+G,EAAKj0G,KAAOjH,EAAMA,EAAIiH,KAAO,EAC7Bi0G,EAAK9wE,KAAOpqC,EACZk7G,EAAKL,MAAQ5xB,EACbiyB,EAAKjK,UAAYoC,EACjB6H,EAAKlI,OAASjqG,EACPmyG,EAIT,SAASN,KACP,OAAOD,KAAsBA,GAAoBM,GAAe5K,KAAYkH,OAG9E,SAASuD,GAAiBI,EAAMt/G,EAAG+4B,GACjC,IAIIomF,EACAC,EALAh7G,EAAMk7G,EAAK9wE,KACX6+C,EAAOiyB,EAAKL,MACZjoG,EAAI5S,EAAI3D,IAAIT,GACZsG,OAAYpG,IAAN8W,EAGV,GAAI+hB,IAAMqtE,EAAS,CACjB,IAAK9/F,EACH,OAAOg5G,EAELjyB,EAAKhiF,MAAQ66F,GAAQ7Y,EAAKhiF,MAAmB,EAAXjH,EAAIiH,MAExC8zG,GADAC,EAAU/xB,EAAK3hF,QAAO,SAASiF,EAAOunG,GAAO,YAAiBh4G,IAAVyQ,GAAuBqG,IAAMkhG,MAChE1M,aAAapnG,KAAI,SAASuM,GAAS,OAAOA,EAAM,MAAKs/F,OAAOsP,QACzED,EAAKjK,YACP8J,EAAO9J,UAAY+J,EAAQ/J,UAAYiK,EAAKjK,aAG9C8J,EAAS/6G,EAAIi7B,OAAOr/B,GACpBo/G,EAAUpoG,IAAMq2E,EAAKhiF,KAAO,EAAIgiF,EAAKzsE,MAAQysE,EAAK1pF,IAAIqT,OAAG9W,SAG3D,GAAIoG,EAAK,CACP,GAAIyyB,IAAMs0D,EAAK5sF,IAAIuW,GAAG,GACpB,OAAOsoG,EAETH,EAAS/6G,EACTg7G,EAAU/xB,EAAK1pF,IAAIqT,EAAG,CAAChX,EAAG+4B,SAE1BomF,EAAS/6G,EAAIT,IAAI3D,EAAGqtF,EAAKhiF,MACzB+zG,EAAU/xB,EAAK1pF,IAAI0pF,EAAKhiF,KAAM,CAACrL,EAAG+4B,IAGtC,OAAIumF,EAAKjK,WACPiK,EAAKj0G,KAAO8zG,EAAO9zG,KACnBi0G,EAAK9wE,KAAO2wE,EACZG,EAAKL,MAAQG,EACbE,EAAKlI,YAASl3G,EACPo/G,GAEFD,GAAeF,EAAQC,GAI9B,SAASvQ,GAAgBC,EAASC,GAChC3wG,KAAK4wG,MAAQF,EACb1wG,KAAK6wG,SAAWF,EAChB3wG,KAAKiN,KAAOyjG,EAAQzjG,KA2DtB,SAASokG,GAAkBlrF,GACzBnmB,KAAK4wG,MAAQzqF,EACbnmB,KAAKiN,KAAOkZ,EAAKlZ,KAyBnB,SAASqkG,GAAcnrF,GACrBnmB,KAAK4wG,MAAQzqF,EACbnmB,KAAKiN,KAAOkZ,EAAKlZ,KAuBnB,SAASskG,GAAoBtwG,GAC3BjB,KAAK4wG,MAAQ3vG,EACbjB,KAAKiN,KAAOhM,EAAQgM,KAwDxB,SAASykG,GAAY3jG,GACnB,IAAI4jG,EAAeC,GAAa7jG,GAiChC,OAhCA4jG,EAAaf,MAAQ7iG,EACrB4jG,EAAa1kG,KAAOc,EAASd,KAC7B0kG,EAAaE,KAAO,WAAa,OAAO9jG,GACxC4jG,EAAa3E,QAAU,WACrB,IAAIgE,EAAmBjjG,EAASi/F,QAAQ3sF,MAAMrgB,MAE9C,OADAgxG,EAAiBa,KAAO,WAAa,OAAO9jG,EAASi/F,WAC9CgE,GAETW,EAAazpG,IAAM,SAAS/G,GAAO,OAAO4M,EAAS+K,SAAS3X,IAC5DwwG,EAAa74F,SAAW,SAAS3X,GAAO,OAAO4M,EAAS7F,IAAI/G,IAC5DwwG,EAAa/E,YAAckF,GAC3BH,EAAa7E,kBAAoB,SAAU9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACpE,OAAO+N,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAAK,OAA4B,IAArBoL,EAAGpL,EAAG+4B,EAAGwhL,KAAoBnvG,IAEjF2E,EAAaxE,mBAAqB,SAAShnG,EAAM6mG,GAC/C,GArvFkB,IAqvFd7mG,EAA0B,CAC5B,IAAIgH,EAAWY,EAASm/F,WAAW/mG,EAAM6mG,GACzC,OAAO,IAAI9B,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,IAAK03D,EAAKpZ,KAAM,CACd,IAAInzF,EAAIusG,EAAK9uG,MAAM,GACnB8uG,EAAK9uG,MAAM,GAAK8uG,EAAK9uG,MAAM,GAC3B8uG,EAAK9uG,MAAM,GAAKuC,EAElB,OAAOusG,KAGX,OAAOpgG,EAASm/F,WAlwFC,IAmwFf/mG,EApwFa,EACE,EAowFf6mG,IAGG2E,EAIT,SAASP,GAAWrjG,EAAUmjG,EAAQ/wG,GACpC,IAAIgxG,EAAiBS,GAAa7jG,GAgClC,OA/BAojG,EAAelkG,KAAOc,EAASd,KAC/BkkG,EAAejpG,IAAM,SAAS/G,GAAO,OAAO4M,EAAS7F,IAAI/G,IACzDgwG,EAAe9uG,IAAM,SAASlB,EAAKwsG,GACjC,IAAIhzE,EAAI5sB,EAAS1L,IAAIlB,EAAK6mG,GAC1B,OAAOrtE,IAAMqtE,EACX2F,EACAuD,EAAOxuG,KAAKvC,EAASw6B,EAAGx5B,EAAK4M,IAEjCojG,EAAerE,kBAAoB,SAAU9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACtE,OAAO+N,EAASs6F,WACd,SAAS1tE,EAAG/4B,EAAGmf,GAAK,OAAwD,IAAjD/T,EAAGkkG,EAAOxuG,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,GAAInf,EAAGu6M,KAChEnvG,IAGJmE,EAAehE,mBAAqB,SAAUhnG,EAAM6mG,GAClD,IAAI7/F,EAAWY,EAASm/F,WA3xFN,EA2xFkCF,GACpD,OAAO,IAAI9B,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,GAAI03D,EAAKpZ,KACP,OAAOoZ,EAET,IAAI57F,EAAQ47F,EAAK9uG,MACb8B,EAAMoR,EAAM,GAChB,OAAO44F,EACLhlG,EACAhF,EACA+vG,EAAOxuG,KAAKvC,EAASoS,EAAM,GAAIpR,EAAK4M,GACpCogG,OAICgD,EAIT,SAASF,GAAeljG,EAAU4iG,GAChC,IAAIK,EAAmBY,GAAa7jG,GAsBpC,OArBAijG,EAAiBJ,MAAQ7iG,EACzBijG,EAAiB/jG,KAAOc,EAASd,KACjC+jG,EAAiBhE,QAAU,WAAa,OAAOj/F,GAC3CA,EAAS8jG,OACXb,EAAiBa,KAAO,WACtB,IAAIF,EAAeD,GAAY3jG,GAE/B,OADA4jG,EAAa3E,QAAU,WAAa,OAAOj/F,EAAS8jG,QAC7CF,IAGXX,EAAiB3uG,IAAM,SAASlB,EAAKwsG,GAClC,OAAO5/F,EAAS1L,IAAIsuG,EAAUxvG,GAAO,EAAIA,EAAKwsG,IACjDqD,EAAiB9oG,IAAM,SAAS/G,GAC7B,OAAO4M,EAAS7F,IAAIyoG,EAAUxvG,GAAO,EAAIA,IAC5C6vG,EAAiBl4F,SAAW,SAASzZ,GAAS,OAAO0O,EAAS+K,SAASzZ,IACvE2xG,EAAiBpE,YAAckF,GAC/Bd,EAAiB3I,UAAY,SAAUr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAChE,OAAO+N,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAAK,OAAOoL,EAAG2tB,EAAG/4B,EAAGu6M,MAAWnvG,IAExEgE,EAAiB9D,WACf,SAAS/mG,EAAM6mG,GAAW,OAAOj/F,EAASm/F,WAAW/mG,GAAO6mG,IACvDgE,EAIT,SAASe,GAAchkG,EAAUpH,EAAWxG,EAASwwG,GACnD,IAAIqB,EAAiBJ,GAAa7jG,GAwClC,OAvCI4iG,IACFqB,EAAe9pG,IAAM,SAAS/G,GAC5B,IAAIw5B,EAAI5sB,EAAS1L,IAAIlB,EAAK6mG,GAC1B,OAAOrtE,IAAMqtE,KAAarhG,EAAUjE,KAAKvC,EAASw6B,EAAGx5B,EAAK4M,IAE5DikG,EAAe3vG,IAAM,SAASlB,EAAKwsG,GACjC,IAAIhzE,EAAI5sB,EAAS1L,IAAIlB,EAAK6mG,GAC1B,OAAOrtE,IAAMqtE,GAAWrhG,EAAUjE,KAAKvC,EAASw6B,EAAGx5B,EAAK4M,GACtD4sB,EAAIgzE,IAGVqE,EAAelF,kBAAoB,SAAU9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAClEimB,EAAa,EAOjB,OANAlY,EAASs6F,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GAChC,GAAIpa,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,GAEhC,OADAkF,IACOjZ,EAAG2tB,EAAGg2E,EAAU/uG,EAAIqkB,EAAa,EAAGk2L,KAE5CnvG,GACI/mF,GAET+rF,EAAe7E,mBAAqB,SAAUhnG,EAAM6mG,GAClD,IAAI7/F,EAAWY,EAASm/F,WAl2FN,EAk2FkCF,GAChD/mF,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,OAAa,CACX,IAAIiD,EAAOhhG,EAASspC,OACpB,GAAI03D,EAAKpZ,KACP,OAAOoZ,EAET,IAAI57F,EAAQ47F,EAAK9uG,MACb8B,EAAMoR,EAAM,GACZlT,EAAQkT,EAAM,GAClB,GAAI5L,EAAUjE,KAAKvC,EAASd,EAAO8B,EAAK4M,GACtC,OAAOo9F,EAAchlG,EAAMwqG,EAAUxvG,EAAM8kB,IAAc5mB,EAAO8uG,QAKjE6D,EA+BT,SAASC,GAAalkG,EAAU26F,EAAO9d,EAAK+lB,GAC1C,IAAIuB,EAAenkG,EAASd,KAe5B,QAXcnL,IAAV4mG,IACFA,GAAgB,QAEN5mG,IAAR8oF,IACEA,IAAQkI,EAAAA,EACVlI,EAAMsnB,EAENtnB,GAAY,GAIZ6d,EAAWC,EAAO9d,EAAKsnB,GACzB,OAAOnkG,EAGT,IAAIokG,EAAgBvJ,EAAaF,EAAOwJ,GACpCE,EAActJ,EAAWle,EAAKsnB,GAKlC,GAAIC,GAAkBA,GAAiBC,GAAgBA,EACrD,OAAOH,GAAalkG,EAASq+F,QAAQQ,cAAelE,EAAO9d,EAAK+lB,GAOlE,IACI0B,EADAC,EAAeF,EAAcD,EAE7BG,GAAiBA,IACnBD,EAAYC,EAAe,EAAI,EAAIA,GAGrC,IAAIC,EAAWX,GAAa7jG,GA6D5B,OAzDAwkG,EAAStlG,KAAqB,IAAdolG,EAAkBA,EAAYtkG,EAASd,MAAQolG,QAAavwG,GAEvE6uG,GAAWrG,GAAMv8F,IAAaskG,GAAa,IAC9CE,EAASlwG,IAAM,SAAUjB,EAAOusG,GAE9B,OADAvsG,EAAQmnG,EAAUvoG,KAAMoB,KACR,GAAKA,EAAQixG,EAC3BtkG,EAAS1L,IAAIjB,EAAQ+wG,EAAexE,GACpCA,IAIN4E,EAASzF,kBAAoB,SAAS9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAC/D,GAAkB,IAAdqyG,EACF,OAAO,EAET,GAAIrF,EACF,OAAOhtG,KAAK4sG,cAAcvE,UAAUr7F,EAAIggG,GAE1C,IAAIwF,EAAU,EACVC,GAAa,EACbxsF,EAAa,EAQjB,OAPAlY,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAC7B,IAAM6wG,KAAeA,EAAaD,IAAYL,GAE5C,OADAlsF,KACuD,IAAhDjZ,EAAG2tB,EAAGg2E,EAAU/uG,EAAIqkB,EAAa,EAAGk2L,IACpCl2L,IAAeosF,KAGnBpsF,GAGTssF,EAASpF,mBAAqB,SAAShnG,EAAM6mG,GAC3C,GAAkB,IAAdqF,GAAmBrF,EACrB,OAAOhtG,KAAK4sG,cAAcM,WAAW/mG,EAAM6mG,GAG7C,IAAI7/F,EAAyB,IAAdklG,GAAmBtkG,EAASm/F,WAAW/mG,EAAM6mG,GACxDwF,EAAU,EACVvsF,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,KAAOsH,IAAYL,GACjBhlG,EAASspC,OAEX,KAAMxwB,EAAaosF,EACjB,MAr8FC,CAAEhzG,WAAOyC,EAAWizF,MAAM,GAu8F7B,IAAIoZ,EAAOhhG,EAASspC,OACpB,OAAIk6D,GA9+FW,IA8+FAxqG,EACNgoG,EAEAhD,EAAchlG,EAAM8f,EAAa,EAl/F7B,IAi/FF9f,OACkCrE,EAEAqsG,EAAK9uG,MAAM,GAFA8uG,OAOrDoE,EA6CT,SAASG,GAAiB3kG,EAAUpH,EAAWxG,EAASwwG,GACtD,IAAIgC,EAAef,GAAa7jG,GA4ChC,OA3CA4kG,EAAa7F,kBAAoB,SAAU9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACpE,GAAIgtG,EACF,OAAOhtG,KAAK4sG,cAAcvE,UAAUr7F,EAAIggG,GAE1C,IAAIyF,GAAa,EACbxsF,EAAa,EAOjB,OANAlY,EAASs6F,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GAChC,IAAM0xF,KAAeA,EAAa9rG,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,IAE9D,OADAkF,IACOjZ,EAAG2tB,EAAGg2E,EAAU/uG,EAAIqkB,EAAa,EAAGk2L,MAGxCl2L,GAET0sF,EAAaxF,mBAAqB,SAAShnG,EAAM6mG,GAAU,IAAImvG,EAASn8M,KACtE,GAAIgtG,EACF,OAAOhtG,KAAK4sG,cAAcM,WAAW/mG,EAAM6mG,GAE7C,IAAI7/F,EAAWY,EAASm/F,WAxjGN,EAwjGkCF,GAChD4F,GAAW,EACX3sF,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,IAAIiD,EAAMvsG,EAAG+4B,EACb,EAAG,CAED,IADAwzE,EAAOhhG,EAASspC,QACPs+C,KACP,OAAI4b,GAjkGO,IAikGIxqG,EACNgoG,EAEAhD,EAAchlG,EAAM8f,IArkGpB,IAokGE9f,OACgCrE,EAEAqsG,EAAK9uG,MAAM,GAFA8uG,GAKxD,IAAI57F,EAAQ47F,EAAK9uG,MACjBuC,EAAI2Q,EAAM,GACVooB,EAAIpoB,EAAM,GACVqgG,IAAaA,EAAWjsG,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGu6M,UAC/CvpG,GACT,OA7kGgB,IA6kGTzsG,EAA2BgoG,EAChChD,EAAchlG,EAAMvE,EAAG+4B,EAAGwzE,OAGzBwE,EAIT,SAASE,GAAc9kG,EAAUhB,GAC/B,IAAIowM,EAAkB/zG,EAAQr7F,GAC1BglG,EAAQ,CAAChlG,GAAU0Q,OAAO1R,GAAQ/G,KAAI,SAAS20B,GAQjD,OAPKiqF,EAAWjqF,GAILwiL,IACTxiL,EAAImgL,EAAcngL,IAJlBA,EAAIwiL,EACF9vG,GAAkB1yE,GAClB4yE,GAAoBzxF,MAAMC,QAAQ4e,GAAKA,EAAI,CAACA,IAIzCA,KACNrtB,QAAO,SAASqtB,GAAK,OAAkB,IAAXA,EAAE1tB,QAEjC,GAAqB,IAAjB8lG,EAAMhtG,OACR,OAAOgI,EAGT,GAAqB,IAAjBglG,EAAMhtG,OAAc,CACtB,IAAIitG,EAAYD,EAAM,GACtB,GAAIC,IAAcjlG,GACdovM,GAAmB/zG,EAAQ4J,IAC3BzJ,EAAUx7F,IAAaw7F,EAAUyJ,GACnC,OAAOA,EAIX,IAAIC,EAAY,IAAIxF,EAASsF,GAkB7B,OAjBIoqG,EACFlqG,EAAYA,EAAU7F,aACZ7D,EAAUx7F,KACpBklG,EAAYA,EAAUzG,aAExByG,EAAYA,EAAUC,SAAQ,IACpBjmG,KAAO8lG,EAAMx5F,QACrB,SAAS45F,EAAKr7C,GACZ,QAAYh2D,IAARqxG,EAAmB,CACrB,IAAIlmG,EAAO6qD,EAAI7qD,KACf,QAAanL,IAATmL,EACF,OAAOkmG,EAAMlmG,KAInB,GAEKgmG,EAIT,SAASG,GAAerlG,EAAUslG,EAAO1C,GACvC,IAAI2C,EAAe1B,GAAa7jG,GA0ChC,OAzCAulG,EAAaxG,kBAAoB,SAAS9/F,EAAIggG,GAC5C,IAAI/mF,EAAa,EACbstF,GAAU,EAYd,OAXA,SAASC,EAASrtF,EAAMstF,GAAe,IAAI0oG,EAASn8M,KAClDmmB,EAAKkiF,WAAU,SAAS1tE,EAAG/4B,GAMzB,QALMyxG,GAASI,EAAeJ,IAAUuR,EAAWjqF,GACjD64E,EAAS74E,EAAG84E,EAAe,IAC4B,IAA9CzmG,EAAG2tB,EAAGg2E,EAAU/uG,EAAIqkB,IAAck2L,KAC3C5oG,GAAU,IAEJA,IACPvG,GAELwG,CAASzlG,EAAU,GACZkY,GAETqtF,EAAanG,mBAAqB,SAAShnG,EAAM6mG,GAC/C,IAAI7/F,EAAWY,EAASm/F,WAAW/mG,EAAM6mG,GACrCjmB,EAAQ,GACR9gE,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,KAAO/9F,GAAU,CACf,IAAIghG,EAAOhhG,EAASspC,OACpB,IAAkB,IAAd03D,EAAKpZ,KAAT,CAIA,IAAIp6D,EAAIwzE,EAAK9uG,MAIb,GAtqGc,IAmqGV8G,IACFw0B,EAAIA,EAAE,IAEF04E,KAAStsB,EAAMhhF,OAASstG,KAAUuR,EAAWjqF,GAIjD,OAAOg2E,EAAUxC,EAAOhD,EAAchlG,EAAM8f,IAAc0U,EAAGwzE,GAH7DpnB,EAAMthF,KAAK0H,GACXA,EAAWwtB,EAAEuyE,WAAW/mG,EAAM6mG,QAT9B7/F,EAAW45E,EAAMvkE,MAcrB,MAxoGG,CAAEnjB,WAAOyC,EAAWizF,MAAM,OA2oG1Bue,EA4CT,SAASI,GAAY3lG,EAAU4lG,EAAYzC,GACpCyC,IACHA,EAAaC,IAEf,IAAIupG,EAAkB/zG,EAAQr7F,GAC1B3M,EAAQ,EACRH,EAAU8M,EAASq+F,QAAQpmG,KAC7B,SAAS20B,EAAG/4B,GAAK,MAAO,CAACA,EAAG+4B,EAAGv5B,IAAS8vG,EAASA,EAAOv2E,EAAG/4B,EAAGmM,GAAY4sB,MAC1EhxB,UAMF,OALA1I,EAAQk/C,MAAK,SAAS38B,EAAGC,GAAK,OAAOkwF,EAAWnwF,EAAE,GAAIC,EAAE,KAAOD,EAAE,GAAKC,EAAE,MAAKviB,QAC3Ei8M,EACA,SAASxiL,EAAG/hB,GAAM3X,EAAQ2X,GAAG7S,OAAS,GACtC,SAAS40B,EAAG/hB,GAAM3X,EAAQ2X,GAAK+hB,EAAE,KAE5BwiL,EAAkBrzG,EAAS7oG,GAChCsoG,EAAUx7F,GAAYi8F,EAAW/oG,GACjCipG,EAAOjpG,GAIX,SAAS4yG,GAAW9lG,EAAU4lG,EAAYzC,GAIxC,GAHKyC,IACHA,EAAaC,IAEX1C,EAAQ,CACV,IAAI3+F,EAAQxE,EAASq+F,QAClBpmG,KAAI,SAAS20B,EAAG/4B,GAAK,MAAO,CAAC+4B,EAAGu2E,EAAOv2E,EAAG/4B,EAAGmM,OAC7CwL,QAAO,SAASiK,EAAGC,GAAK,OAAOqwF,GAAWH,EAAYnwF,EAAE,GAAIC,EAAE,IAAMA,EAAID,KAC3E,OAAOjR,GAASA,EAAM,GAEtB,OAAOxE,EAASwL,QAAO,SAASiK,EAAGC,GAAK,OAAOqwF,GAAWH,EAAYnwF,EAAGC,GAAKA,EAAID,KAItF,SAASswF,GAAWH,EAAYnwF,EAAGC,GACjC,IAAIswF,EAAOJ,EAAWlwF,EAAGD,GAGzB,OAAiB,IAATuwF,GAActwF,IAAMD,IAAMC,MAAAA,GAAiCA,GAAMA,IAAOswF,EAAO,EAIzF,SAASC,GAAeC,EAASC,EAAQnB,GACvC,IAAIqB,EAAcxC,GAAaqC,GAkD/B,OAjDAG,EAAYnnG,KAAO,IAAIwgG,EAASsF,GAAO/sG,KAAI,SAAS4S,GAAK,OAAOA,EAAE3L,QAAOmiC,MAGzEglE,EAAY/L,UAAY,SAASr7F,EAAIggG,GAiBnC,IAHA,IACImB,EADAhhG,EAAWnN,KAAKktG,WA1xGH,EA0xG8BF,GAE3C/mF,EAAa,IACRkoF,EAAOhhG,EAASspC,QAAQs+C,OACY,IAAvC/nF,EAAGmhG,EAAK9uG,MAAO4mB,IAAcjmB,QAInC,OAAOimB,GAETmuF,EAAYjH,mBAAqB,SAAShnG,EAAM6mG,GAC9C,IAAIsH,EAAYvB,EAAM/sG,KAAI,SAAS4S,GAChC,OAAQA,EAAIqzG,EAASrzG,GAAI+yF,EAAYqB,EAAUp0F,EAAEo0F,UAAYp0F,MAE5DqN,EAAa,EACbsuF,GAAS,EACb,OAAO,IAAIrJ,GAAS,WAClB,IAAIsJ,EAKJ,OAJKD,IACHC,EAAQF,EAAUtuG,KAAI,SAAS4S,GAAK,OAAOA,EAAE69B,UAC7C89D,EAASC,EAAMhrF,MAAK,SAASK,GAAK,OAAOA,EAAEkrE,SAEzCwf,EA1wGD,CAAEl1G,WAAOyC,EAAWizF,MAAM,GA6wGtBoW,EACLhlG,EACA8f,IACAiuF,EAAO7zF,MAAM,KAAMm0F,EAAMxuG,KAAI,SAAS6jB,GAAK,OAAOA,EAAExqB,eAInD+0G,EAMT,SAASK,GAAMtuF,EAAM2xC,GACnB,OAAOwyC,GAAMnkF,GAAQ2xC,EAAM3xC,EAAK1mB,YAAYq4D,GAG9C,SAAS05C,GAAcj/F,GACrB,GAAIA,IAAUrT,OAAOqT,GACnB,MAAM,IAAI2O,UAAU,0BAA4B3O,GAIpD,SAAS6qM,GAAYj3L,GAEnB,OADA4uF,GAAkB5uF,EAAKlZ,MAChBm7F,EAAWjiF,GAGpB,SAASk3L,GAActvM,GACrB,OAAOq7F,EAAQr7F,GAAY+sM,EACzBvxG,EAAUx7F,GAAYgtM,EACtBC,EAGJ,SAASppG,GAAa7jG,GACpB,OAAO7O,OAAOuC,QAEV2nG,EAAQr7F,GAAY+7F,EACpBP,EAAUx7F,GAAYi8F,EACtBE,GACA1nG,WAIN,SAASsvG,KACP,OAAI9xG,KAAK4wG,MAAMhE,aACb5sG,KAAK4wG,MAAMhE,cACX5sG,KAAKiN,KAAOjN,KAAK4wG,MAAM3jG,KAChBjN,MAEA4pG,EAAIpnG,UAAUoqG,YAAYlqG,KAAK1C,MAI1C,SAAS4zG,GAAkBpwF,EAAGC,GAC5B,OAAOD,EAAIC,EAAI,EAAID,EAAIC,GAAK,EAAI,EAGlC,SAAS+4L,GAAcvnG,GACrB,IAAI9uF,EAAOwlF,EAAYsJ,GACvB,IAAK9uF,EAAM,CAGT,IAAK+lF,EAAY+I,GACf,MAAM,IAAI/zF,UAAU,oCAAsC+zF,GAE5D9uF,EAAOwlF,EAAYsgB,EAAShX,IAE9B,OAAO9uF,EAKP,SAASikG,GAAOC,EAAennH,GAC7B,IAAIonH,EAEAE,EAAa,SAAgBz9G,GAC/B,GAAIA,aAAkBy9G,EACpB,OAAOz9G,EAET,KAAM/M,gBAAgBwqH,GACpB,OAAO,IAAIA,EAAWz9G,GAExB,IAAKu9G,EAAgB,CACnBA,GAAiB,EACjB,IAAI19G,EAAO1N,OAAO0N,KAAKy9G,IAgI/B,SAAkB7nH,EAAWgwD,GAC3B,IACEA,EAAMtxD,QAAQ6pH,GAAQvkG,UAAK1kB,EAAWU,IACtC,MAAOuJ,MAlIHuxM,CAAS5yF,EAAqB99G,GAC9B89G,EAAoBz9G,KAAOL,EAAK7G,OAChC2kH,EAAoBtjF,MAAQlkC,EAC5BwnH,EAAoB5c,MAAQlhG,EAC5B89G,EAAoBE,eAAiBP,EAEvCrqH,KAAKowC,KAAOvrC,GAAIkI,IAGd29G,EAAsBF,EAAWhoH,UAAYtD,OAAOuC,OAAOwpH,IAG/D,OAFAP,EAAoBjrH,YAAc+qH,EAE3BA,EAr/BXqwF,EAAY5hG,GAAYp0G,IActBo0G,GAAWzL,GAAK,WACd,OAAOxtG,KAAK+c,YAGdk8F,GAAWz2G,UAAUqL,SAAW,WAC9B,OAAO7N,KAAK2sG,WAAW,eAAgB,MAKzCsM,GAAWz2G,UAAUH,IAAM,SAAST,EAAG+rG,GACrC,IAAIvsG,EAAQpB,KAAKowC,KAAK/tC,IAAIT,GAC1B,YAAiBE,IAAVV,EAAsBpB,KAAK6gH,MAAMx+G,IAAIjB,GAAO,GAAKusG,GAK1DsL,GAAWz2G,UAAUkwE,MAAQ,WAC3B,OAAkB,IAAd1yE,KAAKiN,KACAjN,KAELA,KAAKi3G,WACPj3G,KAAKiN,KAAO,EACZjN,KAAKowC,KAAKsiC,QACV1yE,KAAK6gH,MAAMnuC,QACJ1yE,MAEF4gH,MAGT3H,GAAWz2G,UAAU+C,IAAM,SAAS3D,EAAG+4B,GACrC,OAAOmmF,GAAiB9gH,KAAM4B,EAAG+4B,IAGnCs+E,GAAWz2G,UAAUy+B,OAAS,SAASr/B,GACrC,OAAOk/G,GAAiB9gH,KAAM4B,EAAGomG,IAGnCiR,GAAWz2G,UAAUg2G,WAAa,WAChC,OAAOx4G,KAAKowC,KAAKooE,cAAgBx4G,KAAK6gH,MAAMrI,cAG9CS,GAAWz2G,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACnE,OAAOA,KAAK6gH,MAAMxY,WAChB,SAAS91F,GAAS,OAAOA,GAASvF,EAAGuF,EAAM,GAAIA,EAAM,GAAI4pM,KACzDnvG,IAIJiM,GAAWz2G,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC/C,OAAOhtG,KAAK6gH,MAAMvU,eAAeY,WAAW/mG,EAAM6mG,IAGpDiM,GAAWz2G,UAAUi2G,cAAgB,SAASY,GAC5C,GAAIA,IAAYr5G,KAAKi3G,UACnB,OAAOj3G,KAET,IAAI+gH,EAAS/gH,KAAKowC,KAAKqoE,cAAcY,GACjC2H,EAAUhhH,KAAK6gH,MAAMpI,cAAcY,GACvC,OAAKA,EAME4H,GAAeF,EAAQC,EAAS3H,EAASr5G,KAAKg5G,SALnDh5G,KAAKi3G,UAAYoC,EACjBr5G,KAAKowC,KAAO2wE,EACZ/gH,KAAK6gH,MAAQG,EACNhhH,OAUbi5G,GAAW1K,aAAeA,GAE1B0K,GAAWz2G,UAAU44M,IAAuB,EAC5CniG,GAAWz2G,UAAgB,OAAIy2G,GAAWz2G,UAAUy+B,OA8DpD45K,EAAYpqG,GAAiB3G,GAO3B2G,GAAgBjuG,UAAUH,IAAM,SAASlB,EAAKwsG,GAC5C,OAAO3tG,KAAK4wG,MAAMvuG,IAAIlB,EAAKwsG,IAG7B8C,GAAgBjuG,UAAU0F,IAAM,SAAS/G,GACvC,OAAOnB,KAAK4wG,MAAM1oG,IAAI/G,IAGxBsvG,GAAgBjuG,UAAUsuG,SAAW,WACnC,OAAO9wG,KAAK4wG,MAAME,YAGpBL,GAAgBjuG,UAAUwqG,QAAU,WAAY,IAAImvG,EAASn8M,KACvDgxG,EAAmBC,GAAejxG,MAAM,GAI5C,OAHKA,KAAK6wG,WACRG,EAAiBF,SAAW,WAAa,OAAOqrG,EAAOvrG,MAAMxE,QAAQY,YAEhEgE,GAGTP,GAAgBjuG,UAAUwD,IAAM,SAASkrG,EAAQ/wG,GAAU,IAAIg8M,EAASn8M,KAClEmxG,EAAiBC,GAAWpxG,KAAMkxG,EAAQ/wG,GAI9C,OAHKH,KAAK6wG,WACRM,EAAeL,SAAW,WAAa,OAAOqrG,EAAOvrG,MAAMxE,QAAQpmG,IAAIkrG,EAAQ/wG,KAE1EgxG,GAGTV,GAAgBjuG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IACvDY,EAD2DuuG,EAASn8M,KAExE,OAAOA,KAAK4wG,MAAMvI,UAChBroG,KAAK6wG,SACH,SAASl2E,EAAG/4B,GAAK,OAAOoL,EAAG2tB,EAAG/4B,EAAGu6M,KAC/BvuG,EAAKZ,EAAUowG,GAAYp9M,MAAQ,EACnC,SAAS26B,GAAK,OAAO3tB,EAAG2tB,EAAGqyE,IAAYY,EAAKA,IAAMuuG,KACtDnvG,IAIJyD,GAAgBjuG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACpD,GAAIhtG,KAAK6wG,SACP,OAAO7wG,KAAK4wG,MAAM1D,WAAW/mG,EAAM6mG,GAErC,IAAI7/F,EAAWnN,KAAK4wG,MAAM1D,WA1mFT,EA0mFoCF,GACjDY,EAAKZ,EAAUowG,GAAYp9M,MAAQ,EACvC,OAAO,IAAIkrG,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,OAAO03D,EAAKpZ,KAAOoZ,EACjBhD,EAAchlG,EAAM6mG,IAAYY,EAAKA,IAAMO,EAAK9uG,MAAO8uG,OAI/DsC,GAAgBjuG,UAAU44M,IAAuB,EAGjDP,EAAYxpG,GAAmBrH,GAM7BqH,GAAkB7uG,UAAUsW,SAAW,SAASzZ,GAC9C,OAAOW,KAAK4wG,MAAM93F,SAASzZ,IAG7BgyG,GAAkB7uG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACtEimB,EAAa,EACjB,OAAOjmB,KAAK4wG,MAAMvI,WAAU,SAAS1tE,GAAK,OAAO3tB,EAAG2tB,EAAG1U,IAAck2L,KAAUnvG,IAGjFqE,GAAkB7uG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACtD,IAAI7/F,EAAWnN,KAAK4wG,MAAM1D,WAtoFT,EAsoFoCF,GACjD/mF,EAAa,EACjB,OAAO,IAAIilF,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,OAAO03D,EAAKpZ,KAAOoZ,EACjBhD,EAAchlG,EAAM8f,IAAckoF,EAAK9uG,MAAO8uG,OAMtD0sG,EAAYvpG,GAAepH,GAMzBoH,GAAc9uG,UAAU0F,IAAM,SAAS/G,GACrC,OAAOnB,KAAK4wG,MAAM93F,SAAS3X,IAG7BmwG,GAAc9uG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACtE,OAAOA,KAAK4wG,MAAMvI,WAAU,SAAS1tE,GAAK,OAAO3tB,EAAG2tB,EAAGA,EAAGwhL,KAAUnvG,IAGtEsE,GAAc9uG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAClD,IAAI7/F,EAAWnN,KAAK4wG,MAAM1D,WAhqFT,EAgqFoCF,GACrD,OAAO,IAAI9B,GAAS,WAClB,IAAIiD,EAAOhhG,EAASspC,OACpB,OAAO03D,EAAKpZ,KAAOoZ,EACjBhD,EAAchlG,EAAMgoG,EAAK9uG,MAAO8uG,EAAK9uG,MAAO8uG,OAMpD0sG,EAAYtpG,GAAqBzH,GAM/ByH,GAAoB/uG,UAAUuqG,SAAW,WACvC,OAAO/sG,KAAK4wG,MAAMxE,SAGpBmF,GAAoB/uG,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAC5E,OAAOA,KAAK4wG,MAAMvI,WAAU,SAAS91F,GAGnC,GAAIA,EAAO,CACTi/F,GAAcj/F,GACd,IAAIgrM,EAAkB34F,EAAWryG,GACjC,OAAOvF,EACLuwM,EAAkBhrM,EAAMlQ,IAAI,GAAKkQ,EAAM,GACvCgrM,EAAkBhrM,EAAMlQ,IAAI,GAAKkQ,EAAM,GACvC4pM,MAGHnvG,IAGLuE,GAAoB/uG,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACxD,IAAI7/F,EAAWnN,KAAK4wG,MAAM1D,WArsFT,EAqsFoCF,GACrD,OAAO,IAAI9B,GAAS,WAClB,OAAa,CACX,IAAIiD,EAAOhhG,EAASspC,OACpB,GAAI03D,EAAKpZ,KACP,OAAOoZ,EAET,IAAI57F,EAAQ47F,EAAK9uG,MAGjB,GAAIkT,EAAO,CACTi/F,GAAcj/F,GACd,IAAIgrM,EAAkB34F,EAAWryG,GACjC,OAAO44F,EACLhlG,EACAo3M,EAAkBhrM,EAAMlQ,IAAI,GAAKkQ,EAAM,GACvCgrM,EAAkBhrM,EAAMlQ,IAAI,GAAKkQ,EAAM,GACvC47F,SAQZkD,GAAkB7uG,UAAUoqG,YAC5B6D,GAAgBjuG,UAAUoqG,YAC1B0E,GAAc9uG,UAAUoqG,YACxB2E,GAAoB/uG,UAAUoqG,YAC5BkF,GAwpBF+oG,EAAYzwF,GAAQvgB,IA8BlBugB,GAAO5nH,UAAUqL,SAAW,WAC1B,OAAO7N,KAAK2sG,WAAWme,GAAW9qH,MAAQ,KAAM,MAKlDoqH,GAAO5nH,UAAU0F,IAAM,SAAStG,GAC9B,OAAO5B,KAAK4qH,eAAenoH,eAAeb,IAG5CwoH,GAAO5nH,UAAUH,IAAM,SAAST,EAAG+rG,GACjC,IAAK3tG,KAAKkI,IAAItG,GACZ,OAAO+rG,EAET,IAAI6vG,EAAax9M,KAAK4qH,eAAehpH,GACrC,OAAO5B,KAAKowC,KAAOpwC,KAAKowC,KAAK/tC,IAAIT,EAAG47M,GAAcA,GAKpDpzF,GAAO5nH,UAAUkwE,MAAQ,WACvB,GAAI1yE,KAAKi3G,UAEP,OADAj3G,KAAKowC,MAAQpwC,KAAKowC,KAAKsiC,QAChB1yE,KAET,IAAIwqH,EAAaxqH,KAAKP,YACtB,OAAO+qH,EAAWizF,SAAWjzF,EAAWizF,OAASpyF,GAAWrrH,KAAMq2G,QAGpE+T,GAAO5nH,UAAU+C,IAAM,SAAS3D,EAAG+4B,GACjC,IAAK36B,KAAKkI,IAAItG,GACZ,MAAM,IAAIpB,MAAM,2BAA6BoB,EAAI,QAAUkpH,GAAW9qH,OAExE,GAAIA,KAAKowC,OAASpwC,KAAKowC,KAAKloC,IAAItG,IAE1B+4B,IADa36B,KAAK4qH,eAAehpH,GAEnC,OAAO5B,KAGX,IAAI+gH,EAAS/gH,KAAKowC,MAAQpwC,KAAKowC,KAAK7qC,IAAI3D,EAAG+4B,GAC3C,OAAI36B,KAAKi3G,WAAa8J,IAAW/gH,KAAKowC,KAC7BpwC,KAEFqrH,GAAWrrH,KAAM+gH,IAG1BqJ,GAAO5nH,UAAUy+B,OAAS,SAASr/B,GACjC,IAAK5B,KAAKkI,IAAItG,GACZ,OAAO5B,KAET,IAAI+gH,EAAS/gH,KAAKowC,MAAQpwC,KAAKowC,KAAKnP,OAAOr/B,GAC3C,OAAI5B,KAAKi3G,WAAa8J,IAAW/gH,KAAKowC,KAC7BpwC,KAEFqrH,GAAWrrH,KAAM+gH,IAG1BqJ,GAAO5nH,UAAUg2G,WAAa,WAC5B,OAAOx4G,KAAKowC,KAAKooE,cAGnB4R,GAAO5nH,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAAU,IAAImvG,EAASn8M,KAClE,OAAO86M,EAAc96M,KAAK4qH,gBAAgB5kH,KAAI,SAAS+0B,EAAGn5B,GAAK,OAAOu6M,EAAO95M,IAAIT,MAAKsrG,WAAW/mG,EAAM6mG,IAGzGod,GAAO5nH,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAC/D,OAAO86M,EAAc96M,KAAK4qH,gBAAgB5kH,KAAI,SAAS+0B,EAAGn5B,GAAK,OAAOu6M,EAAO95M,IAAIT,MAAKymG,UAAUr7F,EAAIggG,IAGtGod,GAAO5nH,UAAUi2G,cAAgB,SAASY,GACxC,GAAIA,IAAYr5G,KAAKi3G,UACnB,OAAOj3G,KAET,IAAI+gH,EAAS/gH,KAAKowC,MAAQpwC,KAAKowC,KAAKqoE,cAAcY,GAClD,OAAKA,EAKEgS,GAAWrrH,KAAM+gH,EAAQ1H,IAJ9Br5G,KAAKi3G,UAAYoC,EACjBr5G,KAAKowC,KAAO2wE,EACL/gH,OAMb,IAAIirH,GAAkBb,GAAO5nH,UAkB7B,SAAS6oH,GAAWE,EAAYvlH,EAAKqzG,GACnC,IAAI7qG,EAAStP,OAAOuC,OAAOvC,OAAOgf,eAAeqtG,IAGjD,OAFA/8G,EAAO4hC,KAAOpqC,EACdwI,EAAOyoG,UAAYoC,EACZ7qG,EAGT,SAASs8G,GAAWt8G,GAClB,OAAOA,EAAO44B,OAAS54B,EAAO/O,YAAYyD,MAAQ,SAWpD,SAAS6nH,GAAQvoH,EAAWU,GAC1BhE,OAAOC,eAAeqD,EAAWU,EAAM,CACrCb,IAAK,WACH,OAAOrC,KAAKqC,IAAIa,IAElBqC,IAAK,SAASlG,GACZw1G,GAAU70G,KAAKi3G,UAAW,sCAC1Bj3G,KAAKuF,IAAIrC,EAAM7D,MASnB,SAASmO,GAAInO,GACX,OAAOA,MAAAA,EAAwC0jH,KAC7Cb,GAAM7iH,KAAWyrG,EAAUzrG,GAASA,EACpC0jH,KAAW7L,eAAc,SAAS3xG,GAChC,IAAI4gB,EAAO60L,EAAY37M,GACvB01G,GAAkB5uF,EAAKlZ,MACvBkZ,EAAKjlB,SAAQ,SAASy5B,GAAK,OAAOp1B,EAAIyY,IAAI2c,SA+HlD,SAASunF,GAAMC,GACb,SAAUA,IAAYA,EAASu7F,KA1LjCzyF,GAAsB,OAAIA,GAAgBhqF,OAC1CgqF,GAAgBxU,SAChBwU,GAAgBzU,SAAW+C,GAAa/C,SACxCyU,GAAgB19G,MAAQgsG,GAAahsG,MACrC09G,GAAgBt9G,UAAY4rG,GAAa5rG,UACzCs9G,GAAgB7S,QAAUmB,GAAanB,QACvC6S,GAAgB/S,UAAYqB,GAAarB,UACzC+S,GAAgB9S,cAAgBoB,GAAapB,cAC7C8S,GAAgB5S,YAAckB,GAAalB,YAC3C4S,GAAgB1U,MAAQgD,GAAahD,MACrC0U,GAAgBx7E,OAAS8pE,GAAa9pE,OACtCw7E,GAAgBtU,SAAW4C,GAAa5C,SACxCsU,GAAgB/T,cAAgBqC,GAAarC,cAC7C+T,GAAgB1S,UAAYgB,GAAahB,UACzC0S,GAAgBvS,YAAca,GAAab,YAkC3CmiG,EAAYrtM,GAAKy8F,IAcfz8F,GAAIggG,GAAK,WACP,OAAOxtG,KAAK+c,YAGdvP,GAAIw1G,SAAW,SAAS3jH,GACtB,OAAOW,KAAK86M,EAAcz7M,GAAO4jH,WAGnCz1G,GAAIhL,UAAUqL,SAAW,WACvB,OAAO7N,KAAK2sG,WAAW,QAAS,MAKlCn/F,GAAIhL,UAAU0F,IAAM,SAAS7I,GAC3B,OAAOW,KAAKowC,KAAKloC,IAAI7I,IAKvBmO,GAAIhL,UAAUwb,IAAM,SAAS3e,GAC3B,OAAOikH,GAAUtjH,KAAMA,KAAKowC,KAAK7qC,IAAIlG,GAAO,KAG9CmO,GAAIhL,UAAUy+B,OAAS,SAAS5hC,GAC9B,OAAOikH,GAAUtjH,KAAMA,KAAKowC,KAAKnP,OAAO5hC,KAG1CmO,GAAIhL,UAAUkwE,MAAQ,WACpB,OAAO4wC,GAAUtjH,KAAMA,KAAKowC,KAAKsiC,UAKnCllE,GAAIhL,UAAU6gH,MAAQ,WAAY,IAAItQ,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GAEpE,OAAqB,KADrBg2F,EAAQA,EAAMzlG,QAAO,SAASW,GAAK,OAAkB,IAAXA,EAAEhB,SAClClH,OACD/F,KAES,IAAdA,KAAKiN,MAAejN,KAAKi3G,WAA8B,IAAjBlE,EAAMhtG,OAGzC/F,KAAKk3G,eAAc,SAAS3xG,GACjC,IAAK,IAAIqoG,EAAK,EAAGA,EAAKmF,EAAMhtG,OAAQ6nG,IAClCotG,EAAYjoG,EAAMnF,IAAK1sG,SAAQ,SAAS7B,GAAS,OAAOkG,EAAIyY,IAAI3e,SAJ3DW,KAAKP,YAAYszG,EAAM,KASlCvlG,GAAIhL,UAAU0gH,UAAY,WAAY,IAAInQ,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GACxE,GAAqB,IAAjBg2F,EAAMhtG,OACR,OAAO/F,KAET+yG,EAAQA,EAAM/sG,KAAI,SAASmgB,GAAQ,OAAO60L,EAAY70L,MACtD,IAAIw3L,EAAc39M,KAClB,OAAOA,KAAKk3G,eAAc,SAAS3xG,GACjCo4M,EAAYz8M,SAAQ,SAAS7B,GACtB0zG,EAAM/kF,OAAM,SAAS7H,GAAQ,OAAOA,EAAKrN,SAASzZ,OACrDkG,EAAI07B,OAAO5hC,UAMnBmO,GAAIhL,UAAU4yC,SAAW,WAAY,IAAI29D,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GACvE,GAAqB,IAAjBg2F,EAAMhtG,OACR,OAAO/F,KAET+yG,EAAQA,EAAM/sG,KAAI,SAASmgB,GAAQ,OAAO60L,EAAY70L,MACtD,IAAIw3L,EAAc39M,KAClB,OAAOA,KAAKk3G,eAAc,SAAS3xG,GACjCo4M,EAAYz8M,SAAQ,SAAS7B,GACvB0zG,EAAMvpF,MAAK,SAASrD,GAAQ,OAAOA,EAAKrN,SAASzZ,OACnDkG,EAAI07B,OAAO5hC,UAMnBmO,GAAIhL,UAAU+K,MAAQ,WACpB,OAAOvN,KAAKqjH,MAAMhjG,MAAMrgB,KAAM+c,YAGhCvP,GAAIhL,UAAUmL,UAAY,SAASC,GAAS,IAAImlG,EAAQ6nG,EAAQl4M,KAAKqa,UAAW,GAC9E,OAAO/c,KAAKqjH,MAAMhjG,MAAMrgB,KAAM+yG,IAGhCvlG,GAAIhL,UAAU29C,KAAO,SAASwzD,GAE5B,OAAOgQ,GAAWjQ,GAAY1zG,KAAM2zG,KAGtCnmG,GAAIhL,UAAU02G,OAAS,SAAShI,EAAQyC,GAEtC,OAAOgQ,GAAWjQ,GAAY1zG,KAAM2zG,EAAYzC,KAGlD1jG,GAAIhL,UAAUg2G,WAAa,WACzB,OAAOx4G,KAAKowC,KAAKooE,cAGnBhrG,GAAIhL,UAAU6lG,UAAY,SAASr7F,EAAIggG,GAAU,IAAImvG,EAASn8M,KAC5D,OAAOA,KAAKowC,KAAKi4D,WAAU,SAASttE,EAAGn5B,GAAK,OAAOoL,EAAGpL,EAAGA,EAAGu6M,KAAUnvG,IAGxEx/F,GAAIhL,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GACxC,OAAOhtG,KAAKowC,KAAKpqC,KAAI,SAAS+0B,EAAGn5B,GAAK,OAAOA,KAAIsrG,WAAW/mG,EAAM6mG,IAGpEx/F,GAAIhL,UAAUi2G,cAAgB,SAASY,GACrC,GAAIA,IAAYr5G,KAAKi3G,UACnB,OAAOj3G,KAET,IAAI+gH,EAAS/gH,KAAKowC,KAAKqoE,cAAcY,GACrC,OAAKA,EAKEr5G,KAAK4jH,OAAO7C,EAAQ1H,IAJzBr5G,KAAKi3G,UAAYoC,EACjBr5G,KAAKowC,KAAO2wE,EACL/gH,OAUbwN,GAAI00G,MAAQA,GAEZ,IAiCI4B,GAjCA45F,GAAkB,wBAElBt6F,GAAe51G,GAAIhL,UAYvB,SAAS8gH,GAAU/9G,EAAKw7G,GACtB,OAAIx7G,EAAI0xG,WACN1xG,EAAI0H,KAAO8zG,EAAO9zG,KAClB1H,EAAI6qC,KAAO2wE,EACJx7G,GAEFw7G,IAAWx7G,EAAI6qC,KAAO7qC,EACX,IAAhBw7G,EAAO9zG,KAAa1H,EAAIs+G,UACxBt+G,EAAIq+G,OAAO7C,GAGf,SAASgD,GAAQ/9G,EAAKqzG,GACpB,IAAI9zG,EAAMrG,OAAOuC,OAAO2hH,IAIxB,OAHA79G,EAAI0H,KAAOjH,EAAMA,EAAIiH,KAAO,EAC5B1H,EAAI6qC,KAAOpqC,EACXT,EAAI0xG,UAAYoC,EACT9zG,EAIT,SAASw9G,KACP,OAAOe,KAAcA,GAAYC,GAAQ1N,OAOzC,SAASsN,GAAWtkH,GAClB,OAAOA,MAAAA,EAAwC2qH,KAC7C5H,GAAa/iH,GAASA,EACtB2qH,KAAkB9S,eAAc,SAAS3xG,GACvC,IAAI4gB,EAAO60L,EAAY37M,GACvB01G,GAAkB5uF,EAAKlZ,MACvBkZ,EAAKjlB,SAAQ,SAASy5B,GAAK,OAAOp1B,EAAIyY,IAAI2c,SAiBlD,SAASynF,GAAaC,GACpB,OAAOH,GAAMG,IAAoBvX,EAAUuX,GA/D7Ce,GAAas6F,KAAmB,EAChCt6F,GAAmB,OAAIA,GAAaniF,OACpCmiF,GAAalL,UAAYkL,GAAa71G,MACtC61G,GAAajL,cAAgBiL,GAAaz1G,UAC1Cy1G,GAAalM,cAAgBqC,GAAarC,cAC1CkM,GAAa7K,UAAYgB,GAAahB,UACtC6K,GAAa1K,YAAca,GAAab,YAExC0K,GAAaS,QAAUd,GACvBK,GAAaQ,OAASG,GA0BtB82F,EAAYl3F,GAAYn2G,IActBm2G,GAAWnW,GAAK,WACd,OAAOxtG,KAAK+c,YAGd4mG,GAAWX,SAAW,SAAS3jH,GAC7B,OAAOW,KAAK86M,EAAcz7M,GAAO4jH,WAGnCU,GAAWnhH,UAAUqL,SAAW,WAC9B,OAAO7N,KAAK2sG,WAAW,eAAgB,MAQ3CgX,GAAWvB,aAAeA,GAE1B,IAcI6H,GAdAC,GAAsBvG,GAAWnhH,UAMrC,SAAS2nH,GAAenkH,EAAKqzG,GAC3B,IAAI9zG,EAAMrG,OAAOuC,OAAOyoH,IAIxB,OAHA3kH,EAAI0H,KAAOjH,EAAMA,EAAIiH,KAAO,EAC5B1H,EAAI6qC,KAAOpqC,EACXT,EAAI0xG,UAAYoC,EACT9zG,EAIT,SAASykH,KACP,OAAOC,KAAsBA,GAAoBE,GAAevJ,OAOhE,SAASW,GAAMliH,GACb,OAAOA,MAAAA,EAAwCmiH,KAC7CH,GAAQhiH,GAASA,EACjBmiH,KAAaQ,WAAW3iH,GAkL9B,SAASgiH,GAAQC,GACf,SAAUA,IAAcA,EAAWs8F,KA5MrC1zF,GAAoBkxF,IAAuB,EAE3ClxF,GAAoBrG,QAAUmG,GAC9BE,GAAoBtG,OAASuG,GAe7B0wF,EAAYt5F,GAAOxX,IAUjBwX,GAAM/T,GAAK,WACT,OAAOxtG,KAAK+c,YAGdwkG,GAAM/+G,UAAUqL,SAAW,WACzB,OAAO7N,KAAK2sG,WAAW,UAAW,MAKpC4U,GAAM/+G,UAAUH,IAAM,SAASjB,EAAOusG,GACpC,IAAI+T,EAAO1hH,KAAK2hH,MAEhB,IADAvgH,EAAQmnG,EAAUvoG,KAAMoB,GACjBsgH,GAAQtgH,KACbsgH,EAAOA,EAAKjrE,KAEd,OAAOirE,EAAOA,EAAKriH,MAAQsuG,GAG7B4T,GAAM/+G,UAAUo/G,KAAO,WACrB,OAAO5hH,KAAK2hH,OAAS3hH,KAAK2hH,MAAMtiH,OAKlCkiH,GAAM/+G,UAAUiD,KAAO,WACrB,GAAyB,IAArBsX,UAAUhX,OACZ,OAAO/F,KAIT,IAFA,IAAI+8G,EAAU/8G,KAAKiN,KAAO8P,UAAUhX,OAChC27G,EAAO1hH,KAAK2hH,MACP/T,EAAK7wF,UAAUhX,OAAS,EAAG6nG,GAAM,EAAGA,IAC3C8T,EAAO,CACLriH,MAAO0d,UAAU6wF,GACjBn3D,KAAMirE,GAGV,OAAI1hH,KAAKi3G,WACPj3G,KAAKiN,KAAO8vG,EACZ/8G,KAAK2hH,MAAQD,EACb1hH,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEF6hH,GAAU9E,EAAS2E,IAG5BH,GAAM/+G,UAAUi/G,QAAU,SAASt7F,GAEjC,GAAkB,KADlBA,EAAO40L,EAAgB50L,IACdlZ,KACP,OAAOjN,KAET+0G,GAAkB5uF,EAAKlZ,MACvB,IAAI8vG,EAAU/8G,KAAKiN,KACfy0G,EAAO1hH,KAAK2hH,MAQhB,OAPAx7F,EAAK6mF,UAAU9rG,SAAQ,SAAS7B,GAC9B09G,IACA2E,EAAO,CACLriH,MAAOA,EACPo3C,KAAMirE,MAGN1hH,KAAKi3G,WACPj3G,KAAKiN,KAAO8vG,EACZ/8G,KAAK2hH,MAAQD,EACb1hH,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEF6hH,GAAU9E,EAAS2E,IAG5BH,GAAM/+G,UAAUggB,IAAM,WACpB,OAAOxiB,KAAKqjB,MAAM,IAGpBk+F,GAAM/+G,UAAUg3C,QAAU,WACxB,OAAOx5C,KAAKyF,KAAK4a,MAAMrgB,KAAM+c,YAG/BwkG,GAAM/+G,UAAUw/G,WAAa,SAAS77F,GACpC,OAAOnmB,KAAKyhH,QAAQt7F,IAGtBo7F,GAAM/+G,UAAU23C,MAAQ,WACtB,OAAOn6C,KAAKwiB,IAAInC,MAAMrgB,KAAM+c,YAG9BwkG,GAAM/+G,UAAUkwE,MAAQ,WACtB,OAAkB,IAAd1yE,KAAKiN,KACAjN,KAELA,KAAKi3G,WACPj3G,KAAKiN,KAAO,EACZjN,KAAK2hH,WAAQ7/G,EACb9B,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEFwhH,MAGTD,GAAM/+G,UAAU6gB,MAAQ,SAASqlF,EAAO9d,GACtC,GAAI6d,EAAWC,EAAO9d,EAAK5qF,KAAKiN,MAC9B,OAAOjN,KAET,IAAImyG,EAAgBvJ,EAAaF,EAAO1oG,KAAKiN,MAE7C,GADkB67F,EAAWle,EAAK5qF,KAAKiN,QACnBjN,KAAKiN,KAEvB,OAAO88F,GAAkBvnG,UAAU6gB,MAAM3gB,KAAK1C,KAAM0oG,EAAO9d,GAI7D,IAFA,IAAImyB,EAAU/8G,KAAKiN,KAAOklG,EACtBuP,EAAO1hH,KAAK2hH,MACTxP,KACLuP,EAAOA,EAAKjrE,KAEd,OAAIz2C,KAAKi3G,WACPj3G,KAAKiN,KAAO8vG,EACZ/8G,KAAK2hH,MAAQD,EACb1hH,KAAKg5G,YAASl3G,EACd9B,KAAK24G,WAAY,EACV34G,MAEF6hH,GAAU9E,EAAS2E,IAK5BH,GAAM/+G,UAAUi2G,cAAgB,SAASY,GACvC,OAAIA,IAAYr5G,KAAKi3G,UACZj3G,KAEJq5G,EAKEwI,GAAU7hH,KAAKiN,KAAMjN,KAAK2hH,MAAOtI,EAASr5G,KAAKg5G,SAJpDh5G,KAAKi3G,UAAYoC,EACjBr5G,KAAK24G,WAAY,EACV34G,OAOXuhH,GAAM/+G,UAAU6lG,UAAY,SAASr7F,EAAIggG,GACvC,GAAIA,EACF,OAAOhtG,KAAKgtG,UAAU3E,UAAUr7F,GAIlC,IAFA,IAAIiZ,EAAa,EACbhhB,EAAOjF,KAAK2hH,MACT18G,IACsC,IAAvC+H,EAAG/H,EAAK5F,MAAO4mB,IAAcjmB,OAGjCiF,EAAOA,EAAKwxC,KAEd,OAAOxwB,GAGTs7F,GAAM/+G,UAAU0qG,WAAa,SAAS/mG,EAAM6mG,GAC1C,GAAIA,EACF,OAAOhtG,KAAKgtG,UAAUE,WAAW/mG,GAEnC,IAAI8f,EAAa,EACbhhB,EAAOjF,KAAK2hH,MAChB,OAAO,IAAIzW,GAAS,WAClB,GAAIjmG,EAAM,CACR,IAAI5F,EAAQ4F,EAAK5F,MAEjB,OADA4F,EAAOA,EAAKwxC,KACL00D,EAAchlG,EAAM8f,IAAc5mB,GAE3C,MAn5HG,CAAEA,WAAOyC,EAAWizF,MAAM,OA45HnCwsB,GAAMF,QAAUA,GAEhB,IAoBIS,GApBA87F,GAAoB,0BAEpB77F,GAAiBR,GAAM/+G,UAQ3B,SAASq/G,GAAU50G,EAAMy0G,EAAMrI,EAAStqG,GACtC,IAAI/I,EAAM9G,OAAOuC,OAAOsgH,IAMxB,OALA/7G,EAAIiH,KAAOA,EACXjH,EAAI27G,MAAQD,EACZ17G,EAAIixG,UAAYoC,EAChBrzG,EAAIgzG,OAASjqG,EACb/I,EAAI2yG,WAAY,EACT3yG,EAIT,SAASw7G,KACP,OAAOM,KAAgBA,GAAcD,GAAU,IAMjD,SAASc,GAAMC,EAAMhsB,GACnB,IAAIisB,EAAY,SAAS1hH,GAAQyhH,EAAKpgH,UAAUrB,GAAOy1F,EAAQz1F,IAI/D,OAHAjC,OAAO0N,KAAKgqF,GAAS11F,QAAQ2hH,GAC7B3jH,OAAOs5F,uBACLt5F,OAAOs5F,sBAAsB5B,GAAS11F,QAAQ2hH,GACzCD,EA9BTb,GAAe67F,KAAqB,EACpC77F,GAAe7K,cAAgBqC,GAAarC,cAC5C6K,GAAexJ,UAAYgB,GAAahB,UACxCwJ,GAAerJ,YAAca,GAAab,YAC1CqJ,GAAevJ,WAAae,GAAaf,WA6BzCyT,EAAS/gB,SAAWA,EAEpByX,GAAMsJ,EAAU,CAIdtiH,QAAS,WACPorG,GAAkB/0G,KAAKiN,MACvB,IAAI+uC,EAAQ,IAAIlgC,MAAM9b,KAAKiN,MAAQ,GAEnC,OADAjN,KAAK8wG,WAAWzI,WAAU,SAAS1tE,EAAG/hB,GAAMojC,EAAMpjC,GAAK+hB,KAChDqhB,GAGTsxD,aAAc,WACZ,OAAO,IAAI+D,GAAkBrxG,OAG/B0V,KAAM,WACJ,OAAO1V,KAAKosG,QAAQpmG,KAClB,SAAS3G,GAAS,OAAOA,GAA+B,mBAAfA,EAAMqW,KAAsBrW,EAAMqW,OAASrW,KACpFw+M,UAGJ77I,OAAQ,WACN,OAAOhiE,KAAKosG,QAAQpmG,KAClB,SAAS3G,GAAS,OAAOA,GAAiC,mBAAjBA,EAAM2iE,OAAwB3iE,EAAM2iE,SAAW3iE,KACxFw+M,UAGJzwG,WAAY,WACV,OAAO,IAAIqD,GAAgBzwG,MAAM,IAGnCmhH,MAAO,WAEL,OAAOt8G,GAAI7E,KAAKotG,eAGlBuX,SAAU,WACR5P,GAAkB/0G,KAAKiN,MACvB,IAAIrG,EAAS,GAEb,OADA5G,KAAKqoG,WAAU,SAAS1tE,EAAG/4B,GAAMgF,EAAOhF,GAAK+4B,KACtC/zB,GAGTk+G,aAAc,WAEZ,OAAO7L,GAAWj5G,KAAKotG,eAGzB2X,aAAc,WAEZ,OAAOpB,GAAWva,EAAQppG,MAAQA,KAAK8wG,WAAa9wG,OAGtDglH,MAAO,WAEL,OAAOx3G,GAAI47F,EAAQppG,MAAQA,KAAK8wG,WAAa9wG,OAG/CwsG,SAAU,WACR,OAAO,IAAI8E,GAActxG,OAG3BosG,MAAO,WACL,OAAO7C,EAAUvpG,MAAQA,KAAKstG,eAC5BlE,EAAQppG,MAAQA,KAAKotG,aACrBptG,KAAKwsG,YAGTyY,QAAS,WAEP,OAAO1D,GAAMnY,EAAQppG,MAAQA,KAAK8wG,WAAa9wG,OAGjDklH,OAAQ,WAEN,OAAO7H,GAAKjU,EAAQppG,MAAQA,KAAK8wG,WAAa9wG,OAMhD6N,SAAU,WACR,MAAO,cAGT8+F,WAAY,SAAS+U,EAAMnC,GACzB,OAAkB,IAAdv/G,KAAKiN,KACAy0G,EAAOnC,EAETmC,EAAO,IAAM1hH,KAAKosG,QAAQpmG,IAAIhG,KAAKmlH,kBAAkB3kG,KAAK,MAAQ,IAAM++F,GAMjF9gG,OAAQ,WACN,OAAOg2F,GAAMz0G,KAAM6yG,GAAc7yG,KADF46M,EAAQl4M,KAAKqa,UAAW,MAIzDjE,SAAU,SAASsrG,GACjB,OAAOpkH,KAAKwpB,MAAK,SAASnqB,GAAS,OAAOuvG,GAAGvvG,EAAO+kH,OAGtDnjH,QAAS,WACP,OAAOjB,KAAKktG,WAjlIM,IAolIpBl/E,MAAO,SAASrnB,EAAWxG,GACzB40G,GAAkB/0G,KAAKiN,MACvB,IAAIm4G,GAAc,EAOlB,OANAplH,KAAKqoG,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GAC5B,IAAKpa,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,GAEjC,OADAqkG,GAAc,GACP,KAGJA,GAGT93G,OAAQ,SAAS3G,EAAWxG,GAC1B,OAAOs0G,GAAMz0G,KAAM+xG,GAAc/xG,KAAM2G,EAAWxG,GAAS,KAG7DuhC,KAAM,SAAS/6B,EAAWxG,EAASwtG,GACjC,IAAIp7F,EAAQvS,KAAKqlH,UAAU1+G,EAAWxG,GACtC,OAAOoS,EAAQA,EAAM,GAAKo7F,GAG5BzsG,QAAS,SAASokH,EAAYnlH,GAE5B,OADA40G,GAAkB/0G,KAAKiN,MAChBjN,KAAKqoG,UAAUloG,EAAUmlH,EAAW9+F,KAAKrmB,GAAWmlH,IAG7D9kG,KAAM,SAAS+kG,GACbxQ,GAAkB/0G,KAAKiN,MACvBs4G,OAA0BzjH,IAAdyjH,EAA0B,GAAKA,EAAY,IACvD,IAAIC,EAAS,GACTC,GAAU,EAKd,OAJAzlH,KAAKqoG,WAAU,SAAS1tE,GACtB8qF,EAAWA,GAAU,EAAUD,GAAUD,EACzCC,GAAU7qF,MAAAA,EAAgCA,EAAE9sB,WAAa,MAEpD23G,GAGT54G,KAAM,WACJ,OAAO5M,KAAKktG,WA7nIG,IAgoIjBlnG,IAAK,SAASkrG,EAAQ/wG,GACpB,OAAOs0G,GAAMz0G,KAAMoxG,GAAWpxG,KAAMkxG,EAAQ/wG,KAG9CoZ,OAAQ,SAASmsG,EAASC,EAAkBxlH,GAE1C,IAAI2pH,EACAC,EAcJ,OAhBAhV,GAAkB/0G,KAAKiN,MAGnB8P,UAAUhX,OAAS,EACrBgkH,GAAW,EAEXD,EAAYnE,EAEd3lH,KAAKqoG,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GACxBgpG,GACFA,GAAW,EACXD,EAAYnvF,GAEZmvF,EAAYpE,EAAQhjH,KAAKvC,EAAS2pH,EAAWnvF,EAAG/4B,EAAGmf,MAGhD+oG,GAGTlE,YAAa,SAASF,EAASC,EAAkBxlH,GAC/C,IAAI29M,EAAW99M,KAAKotG,aAAaJ,UACjC,OAAO8wG,EAASvkM,OAAO8G,MAAMy9L,EAAU/gM,YAGzCiwF,QAAS,WACP,OAAOyH,GAAMz0G,KAAMixG,GAAejxG,MAAM,KAG1CqjB,MAAO,SAASqlF,EAAO9d,GACrB,OAAO6pB,GAAMz0G,KAAMiyG,GAAajyG,KAAM0oG,EAAO9d,GAAK,KAGpDphE,KAAM,SAAS7iB,EAAWxG,GACxB,OAAQH,KAAKguB,MAAM7d,GAAIxJ,GAAYxG,IAGrCggD,KAAM,SAASwzD,GACb,OAAOc,GAAMz0G,KAAM0zG,GAAY1zG,KAAM2zG,KAGvC5mG,OAAQ,WACN,OAAO/M,KAAKktG,WA7qIK,IAmrInB2Y,QAAS,WACP,OAAO7lH,KAAKqjB,MAAM,GAAI,IAGxByiG,QAAS,WACP,YAAqBhkH,IAAd9B,KAAKiN,KAAmC,IAAdjN,KAAKiN,MAAcjN,KAAKwpB,MAAK,WAAa,OAAO,MAGpFuwE,MAAO,SAASpzF,EAAWxG,GACzB,OAAOioG,EACLzhG,EAAY3G,KAAKosG,QAAQ9+F,OAAO3G,EAAWxG,GAAWH,OAI1D+lH,QAAS,SAASC,EAAS7lH,GACzB,OA10CJ,SAAwB4N,EAAUi4G,EAAS7lH,GACzC,IAAI8lH,EAASphH,KAAM0zG,YAQnB,OAPAxqG,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAC7BqkH,EAAOx2E,OACLu2E,EAAQtjH,KAAKvC,EAASw6B,EAAG/4B,EAAGmM,GAC5B,GACA,SAASyV,GAAK,OAAOA,EAAI,QAGtByiG,EAAOvN,cAi0CLwN,CAAelmH,KAAMgmH,EAAS7lH,IAGvCiN,OAAQ,SAASC,GACf,OAAOi1G,GAAUtiH,KAAMqN,IAGzB0/F,SAAU,WACR,IAAIh/F,EAAW/N,KACf,GAAI+N,EAAS8+F,OAEX,OAAO,IAAIY,EAAS1/F,EAAS8+F,QAE/B,IAAIsZ,EAAkBp4G,EAASq+F,QAAQpmG,IAAIogH,IAAa9Y,eAExD,OADA6Y,EAAgB7Z,aAAe,WAAa,OAAOv+F,EAASq+F,SACrD+Z,GAGTE,UAAW,SAAS1/G,EAAWxG,GAC7B,OAAOH,KAAKsN,OAAO6C,GAAIxJ,GAAYxG,IAGrCklH,UAAW,SAAS1+G,EAAWxG,EAASwtG,GACtC,IAAIrgB,EAAQqgB,EAOZ,OANA3tG,KAAKqoG,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GAC5B,GAAIpa,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,GAEhC,OADAusE,EAAQ,CAAC1rF,EAAG+4B,IACL,KAGJ2yD,GAGTg5B,QAAS,SAAS3/G,EAAWxG,GAC3B,IAAIoS,EAAQvS,KAAKqlH,UAAU1+G,EAAWxG,GACtC,OAAOoS,GAASA,EAAM,IAGxBg0G,SAAU,SAAS5/G,EAAWxG,EAASwtG,GACrC,OAAO3tG,KAAKotG,aAAaJ,UAAUtrE,KAAK/6B,EAAWxG,EAASwtG,IAG9D6Y,cAAe,SAAS7/G,EAAWxG,EAASwtG,GAC1C,OAAO3tG,KAAKotG,aAAaJ,UAAUqY,UAAU1+G,EAAWxG,EAASwtG,IAGnE8Y,YAAa,SAAS9/G,EAAWxG,GAC/B,OAAOH,KAAKotG,aAAaJ,UAAUsZ,QAAQ3/G,EAAWxG,IAGxDupF,MAAO,WACL,OAAO1pF,KAAK0hC,KAAK4mE,IAGnBoe,QAAS,SAASxV,EAAQ/wG,GACxB,OAAOs0G,GAAMz0G,KApkCjB,SAAwB+N,EAAUmjG,EAAQ/wG,GACxC,IAAIwmH,EAAS02F,GAActvM,GAC3B,OAAOA,EAASq+F,QAAQpmG,KACtB,SAAS20B,EAAG/4B,GAAK,OAAO+kH,EAAOzV,EAAOxuG,KAAKvC,EAASw6B,EAAG/4B,EAAGmM,OAC1DmlG,SAAQ,GAgkCW0T,CAAe5mH,KAAMkxG,EAAQ/wG,KAGlD+yG,QAAS,SAASG,GAChB,OAAOoB,GAAMz0G,KAAMozG,GAAepzG,KAAMqzG,GAAO,KAGjD/G,aAAc,WACZ,OAAO,IAAIiF,GAAoBvxG,OAGjCqC,IAAK,SAASwkH,EAAWlZ,GACvB,OAAO3tG,KAAK0hC,MAAK,SAAS3G,EAAG55B,GAAO,OAAOytG,GAAGztG,EAAK0lH,UAAa/kH,EAAW6rG,IAG7E8W,MAAO,SAASD,EAAe7W,GAM7B,IALA,IAIIQ,EAJA4vG,EAAS/9M,KAGTmmB,EAAOq2L,GAAch4F,KAEhBrW,EAAOhoF,EAAKswB,QAAQs+C,MAAM,CACjC,IAAI5zF,EAAMgtG,EAAK9uG,MAEf,IADA0+M,EAASA,GAAUA,EAAO17M,IAAM07M,EAAO17M,IAAIlB,EAAK6mG,GAAWA,KAC5CA,EACb,OAAO2F,EAGX,OAAOowG,GAGTj3F,QAAS,SAASd,EAAS7lH,GACzB,OAp5CJ,SAAwB4N,EAAUi4G,EAAS7lH,GACzC,IAAI4mH,EAAc3d,EAAQr7F,GACtBk4G,GAAUnb,EAAU/8F,GAAYkrG,KAAep0G,MAAO0zG,YAC1DxqG,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAC7BqkH,EAAOx2E,OACLu2E,EAAQtjH,KAAKvC,EAASw6B,EAAG/4B,EAAGmM,IAC5B,SAASyV,GAAK,OAAQA,EAAIA,GAAK,IAAM/d,KAAKshH,EAAc,CAACnlH,EAAG+4B,GAAKA,GAAInX,QAGzE,IAAImjG,EAAS02F,GAActvM,GAC3B,OAAOk4G,EAAOjgH,KAAI,SAASka,GAAO,OAAOu0F,GAAM1mG,EAAU44G,EAAOzmG,OA04CvD8mG,CAAehnH,KAAMgmH,EAAS7lH,IAGvC+H,IAAK,SAAS2+G,GACZ,OAAO7mH,KAAKqC,IAAIwkH,EAAW7e,KAAaA,GAG1Cif,MAAO,SAASzC,GACd,OAAOxkH,KAAKykH,MAAMD,EAAexc,KAAaA,GAGhDkf,SAAU,SAAS/gG,GAEjB,OADAA,EAAgC,mBAAlBA,EAAKrN,SAA0BqN,EAAO8lG,EAAS9lG,GACtDnmB,KAAKguB,OAAM,SAAS3uB,GAAS,OAAO8mB,EAAKrN,SAASzZ,OAG3D8nH,WAAY,SAAShhG,GAEnB,OADAA,EAAgC,mBAAlBA,EAAK+gG,SAA0B/gG,EAAO8lG,EAAS9lG,IACjD+gG,SAASlnH,OAGvBonH,MAAO,SAAShD,GACd,OAAOpkH,KAAKsmH,SAAQ,SAASjnH,GAAS,OAAOuvG,GAAGvvG,EAAO+kH,OAGzDnB,OAAQ,WACN,OAAOjjH,KAAKosG,QAAQpmG,IAAIqhH,IAAW/Z,gBAGrC/qF,KAAM,WACJ,OAAOviB,KAAKosG,QAAQY,UAAUtjB,SAGhC49B,UAAW,SAASlD,GAClB,OAAOpkH,KAAKotG,aAAaJ,UAAUoa,MAAMhD,IAG3Cl1E,IAAK,SAASykE,GACZ,OAAOE,GAAW7zG,KAAM2zG,IAG1B4T,MAAO,SAASrW,EAAQyC,GACtB,OAAOE,GAAW7zG,KAAM2zG,EAAYzC,IAGtC9hE,IAAK,SAASukE,GACZ,OAAOE,GAAW7zG,KAAM2zG,EAAa6T,GAAI7T,GAAc8T,KAGzDC,MAAO,SAASxW,EAAQyC,GACtB,OAAOE,GAAW7zG,KAAM2zG,EAAa6T,GAAI7T,GAAc8T,GAAsBvW,IAG/En+E,KAAM,WACJ,OAAO/yB,KAAKqjB,MAAM,IAGpBskG,KAAM,SAASC,GACb,OAAO5nH,KAAKqjB,MAAM9D,KAAK2vB,IAAI,EAAG04E,KAGhCC,SAAU,SAASD,GACjB,OAAOnT,GAAMz0G,KAAMA,KAAKosG,QAAQY,UAAU2a,KAAKC,GAAQ5a,YAGzD8a,UAAW,SAASnhH,EAAWxG,GAC7B,OAAOs0G,GAAMz0G,KAAM0yG,GAAiB1yG,KAAM2G,EAAWxG,GAAS,KAGhE4nH,UAAW,SAASphH,EAAWxG,GAC7B,OAAOH,KAAK8nH,UAAU33G,GAAIxJ,GAAYxG,IAGxC+4G,OAAQ,SAAShI,EAAQyC,GACvB,OAAOc,GAAMz0G,KAAM0zG,GAAY1zG,KAAM2zG,EAAYzC,KAGnD8W,KAAM,SAASJ,GACb,OAAO5nH,KAAKqjB,MAAM,EAAG9D,KAAK2vB,IAAI,EAAG04E,KAGnCK,SAAU,SAASL,GACjB,OAAOnT,GAAMz0G,KAAMA,KAAKosG,QAAQY,UAAUgb,KAAKJ,GAAQ5a,YAGzDkb,UAAW,SAASvhH,EAAWxG,GAC7B,OAAOs0G,GAAMz0G,KAn3CjB,SAA0B+N,EAAUpH,EAAWxG,GAC7C,IAAIgoH,EAAevW,GAAa7jG,GAoChC,OAnCAo6G,EAAarb,kBAAoB,SAAS9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACnE,GAAIgtG,EACF,OAAOhtG,KAAK4sG,cAAcvE,UAAUr7F,EAAIggG,GAE1C,IAAI/mF,EAAa,EAIjB,OAHAlY,EAASs6F,WAAU,SAAS1tE,EAAG/4B,EAAGmf,GAC/B,OAAOpa,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGmf,MAAQkF,GAAcjZ,EAAG2tB,EAAG/4B,EAAGu6M,MAEhEl2L,GAETkiG,EAAahb,mBAAqB,SAAShnG,EAAM6mG,GAAU,IAAImvG,EAASn8M,KACtE,GAAIgtG,EACF,OAAOhtG,KAAK4sG,cAAcM,WAAW/mG,EAAM6mG,GAE7C,IAAI7/F,EAAWY,EAASm/F,WA3gGN,EA2gGkCF,GAChDob,GAAY,EAChB,OAAO,IAAIld,GAAS,WAClB,IAAKkd,EACH,MA1+FC,CAAE/oH,WAAOyC,EAAWizF,MAAM,GA4+F7B,IAAIoZ,EAAOhhG,EAASspC,OACpB,GAAI03D,EAAKpZ,KACP,OAAOoZ,EAET,IAAI57F,EAAQ47F,EAAK9uG,MACbuC,EAAI2Q,EAAM,GACVooB,EAAIpoB,EAAM,GACd,OAAK5L,EAAUjE,KAAKvC,EAASw6B,EAAG/4B,EAAGu6M,GAxhGnB,IA4hGTh2M,EAA2BgoG,EAChChD,EAAchlG,EAAMvE,EAAG+4B,EAAGwzE,IAJ1Bia,GAAY,EAp/FX,CAAE/oH,WAAOyC,EAAWizF,MAAM,QA2/F1BozB,EA80CcE,CAAiBroH,KAAM2G,EAAWxG,KAGvDmoH,UAAW,SAAS3hH,EAAWxG,GAC7B,OAAOH,KAAKkoH,UAAU/3G,GAAIxJ,GAAYxG,IAGxC2wG,SAAU,WACR,OAAO9wG,KAAKstG,gBAMdqB,SAAU,WACR,OAAO3uG,KAAKg5G,SAAWh5G,KAAKg5G,OAwQhC,SAAsBjrG,GACpB,GAAIA,EAASd,OAAS6lF,EAAAA,EACpB,OAAO,EAET,IAAIy1B,EAAUzd,EAAU/8F,GACpBy6G,EAAQpf,EAAQr7F,GAChBisB,EAAIuuF,EAAU,EAAI,EAUtB,OAGF,SAA0Bt7G,EAAM+sB,GAQ9B,OAPAA,EAAI+0E,GAAK/0E,EAAG,YACZA,EAAI+0E,GAAK/0E,GAAK,GAAKA,KAAO,GAAI,WAC9BA,EAAI+0E,GAAK/0E,GAAK,GAAKA,KAAO,GAAI,GAE9BA,EAAI+0E,IADJ/0E,GAAKA,EAAI,WAAa,GAAK/sB,GACd+sB,IAAM,GAAI,YAEnBg1E,IADJh1E,EAAI+0E,GAAK/0E,EAAIA,IAAM,GAAI,aACXA,IAAM,IAVXyuF,CATI16G,EAASs6F,UAClBmgB,EACED,EACE,SAAS5tF,EAAG/4B,GAAMo4B,EAAI,GAAKA,EAAI0uF,GAAU35G,GAAK4rB,GAAI5rB,GAAKnN,IAAM,GAC7D,SAAS+4B,EAAG/4B,GAAMo4B,EAAIA,EAAI0uF,GAAU35G,GAAK4rB,GAAI5rB,GAAKnN,IAAM,GAC1D2mH,EACE,SAAS5tF,GAAMX,EAAI,GAAKA,EAAIjrB,GAAK4rB,GAAK,GACtC,SAASA,GAAMX,EAAIA,EAAIjrB,GAAK4rB,GAAK,IAETX,GAxRSgkL,CAAah+M,UAgBtD,IAAIi+M,GAAoBhyF,EAASzpH,UACjCy7M,GAAkBhD,IAAwB,EAC1CgD,GAAkBhzG,GAAmBgzG,GAAkBlxM,OACvDkxM,GAAkBJ,OAASI,GAAkBt0M,QAC7Cs0M,GAAkB94F,iBAAmB7P,GACrC2oG,GAAkBrjM,QAClBqjM,GAAkBhyG,SAAW,WAAa,OAAOjsG,KAAK6N,YACtDowM,GAAkBp1F,MAAQo1F,GAAkBv3F,QAC5Cu3F,GAAkB1kI,SAAW0kI,GAAkBnlM,SAE/C6pG,GAAMm4F,EAAe,CAInBjpG,KAAM,WACJ,OAAO4C,GAAMz0G,KAAM0xG,GAAY1xG,QAGjCwjH,WAAY,SAAStS,EAAQ/wG,GAAU,IAAIg8M,EAASn8M,KAC9CimB,EAAa,EACjB,OAAOwuF,GAAMz0G,KACXA,KAAKosG,QAAQpmG,KACX,SAAS20B,EAAG/4B,GAAK,OAAOsvG,EAAOxuG,KAAKvC,EAAS,CAACyB,EAAG+4B,GAAI1U,IAAck2L,MACnE7vG,iBAINwc,QAAS,SAAS5X,EAAQ/wG,GAAU,IAAIg8M,EAASn8M,KAC/C,OAAOy0G,GAAMz0G,KACXA,KAAKosG,QAAQyF,OAAO7rG,KAClB,SAASpE,EAAG+4B,GAAK,OAAOu2E,EAAOxuG,KAAKvC,EAASyB,EAAG+4B,EAAGwhL,MACnDtqG,WAMR,IAAIqsG,GAAyBpD,EAAct4M,UAmL3C,SAAS6kH,GAAU1sF,EAAG/4B,GACpB,OAAOA,EAGT,SAASwkH,GAAYzrF,EAAG/4B,GACtB,MAAO,CAACA,EAAG+4B,GAGb,SAASxqB,GAAIxJ,GACX,OAAO,WACL,OAAQA,EAAU0Z,MAAMrgB,KAAM+c,YAIlC,SAASyqG,GAAI7gH,GACX,OAAO,WACL,OAAQA,EAAU0Z,MAAMrgB,KAAM+c,YAIlC,SAASu4F,GAAYj2G,GACnB,MAAwB,iBAAVA,EAAqB+M,KAAKC,UAAUhN,GAAS8gB,OAAO9gB,GAGpE,SAASqqH,KACP,OAAO/U,EAAQ53F,WAGjB,SAAS0qG,GAAqBjkG,EAAGC,GAC/B,OAAOD,EAAIC,EAAI,EAAID,EAAIC,GAAK,EAAI,EAiClC,SAASilG,GAAUllG,EAAGC,GACpB,OAAOD,EAAIC,EAAI,YAAcD,GAAK,IAAMA,GAAK,GAAK,EAyBpD,OA1QA06L,GAAuBhD,IAAqB,EAC5CgD,GAAuBjzG,GAAmBgzG,GAAkBh9M,QAC5Di9M,GAAuBL,OAASI,GAAkBt5F,SAClDu5F,GAAuB/4F,iBAAmB,SAASxqF,EAAG/4B,GAAK,OAAOwK,KAAKC,UAAUzK,GAAK,KAAO0zG,GAAY36E,IAIzGgoF,GAAMo4F,EAAiB,CAIrB3tG,WAAY,WACV,OAAO,IAAIqD,GAAgBzwG,MAAM,IAMnCsN,OAAQ,SAAS3G,EAAWxG,GAC1B,OAAOs0G,GAAMz0G,KAAM+xG,GAAc/xG,KAAM2G,EAAWxG,GAAS,KAG7DmnC,UAAW,SAAS3gC,EAAWxG,GAC7B,IAAIoS,EAAQvS,KAAKqlH,UAAU1+G,EAAWxG,GACtC,OAAOoS,EAAQA,EAAM,IAAM,GAG7BuF,QAAS,SAASssG,GAChB,IAAIjjH,EAAMnB,KAAKonH,MAAMhD,GACrB,YAAetiH,IAARX,GAAqB,EAAIA,GAGlC24B,YAAa,SAASsqF,GACpB,IAAIjjH,EAAMnB,KAAKsnH,UAAUlD,GACzB,YAAetiH,IAARX,GAAqB,EAAIA,GAGlC6rG,QAAS,WACP,OAAOyH,GAAMz0G,KAAMixG,GAAejxG,MAAM,KAG1CqjB,MAAO,SAASqlF,EAAO9d,GACrB,OAAO6pB,GAAMz0G,KAAMiyG,GAAajyG,KAAM0oG,EAAO9d,GAAK,KAGpD7yE,OAAQ,SAAS3W,EAAO4nH,GACtB,IAAIC,EAAUlsG,UAAUhX,OAExB,GADAijH,EAAYzpG,KAAK2vB,IAAgB,EAAZ85E,EAAe,GACpB,IAAZC,GAA8B,IAAZA,IAAkBD,EACtC,OAAOhpH,KAKToB,EAAQwnG,EAAaxnG,EAAOA,EAAQ,EAAIpB,KAAK+5F,QAAU/5F,KAAKiN,MAC5D,IAAIi8G,EAAUlpH,KAAKqjB,MAAM,EAAGjiB,GAC5B,OAAOqzG,GACLz0G,KACY,IAAZipH,EACEC,EACAA,EAAQzqG,OAAOk2F,EAAQ53F,UAAW,GAAI/c,KAAKqjB,MAAMjiB,EAAQ4nH,MAO/DG,cAAe,SAASxiH,EAAWxG,GACjC,IAAIoS,EAAQvS,KAAKwmH,cAAc7/G,EAAWxG,GAC1C,OAAOoS,EAAQA,EAAM,IAAM,GAG7Bm3E,MAAO,WACL,OAAO1pF,KAAKqC,IAAI,IAGlB6wG,QAAS,SAASG,GAChB,OAAOoB,GAAMz0G,KAAMozG,GAAepzG,KAAMqzG,GAAO,KAGjDhxG,IAAK,SAASjB,EAAOusG,GAEnB,OADAvsG,EAAQmnG,EAAUvoG,KAAMoB,IACR,GAAMpB,KAAKiN,OAAS6lF,EAAAA,QACjBhxF,IAAd9B,KAAKiN,MAAsB7L,EAAQpB,KAAKiN,KAC3C0gG,EACA3tG,KAAK0hC,MAAK,SAAS3G,EAAG55B,GAAO,OAAOA,IAAQC,SAAQU,EAAW6rG,IAGnEzlG,IAAK,SAAS9G,GAEZ,OADAA,EAAQmnG,EAAUvoG,KAAMoB,KACR,SAAoBU,IAAd9B,KAAKiN,KACzBjN,KAAKiN,OAAS6lF,EAAAA,GAAY1xF,EAAQpB,KAAKiN,MACd,IAAzBjN,KAAK8X,QAAQ1W,KAIjBgoH,UAAW,SAAS7D,GAClB,OAAO9Q,GAAMz0G,KAx1CjB,SAA0B+N,EAAUw3G,GAClC,IAAI8D,EAAqBzX,GAAa7jG,GA2BtC,OA1BAs7G,EAAmBp8G,KAAOc,EAASd,MAAwB,EAAhBc,EAASd,KAAU,EAC9Do8G,EAAmBvc,kBAAoB,SAAS9/F,EAAIggG,GAAU,IAAImvG,EAASn8M,KACrEimB,EAAa,EAMjB,OALAlY,EAASs6F,WAAU,SAAS1tE,EAAG/4B,GAC5B,QAASqkB,IAAsD,IAAxCjZ,EAAGu4G,EAAWt/F,IAAck2L,MACpB,IAAhCnvM,EAAG2tB,EAAG1U,IAAck2L,KACpBnvG,GAEK/mF,GAETojG,EAAmBlc,mBAAqB,SAAShnG,EAAM6mG,GACrD,IAEImB,EAFAhhG,EAAWY,EAASm/F,WA1sGP,EA0sGkCF,GAC/C/mF,EAAa,EAEjB,OAAO,IAAIilF,GAAS,WAClB,QAAKiD,GAAQloF,EAAa,KACxBkoF,EAAOhhG,EAASspC,QACPs+C,KACAoZ,EAGJloF,EAAa,EAClBklF,EAAchlG,EAAM8f,IAAcs/F,GAClCpa,EAAchlG,EAAM8f,IAAckoF,EAAK9uG,MAAO8uG,OAG7Ckb,EA4zCcC,CAAiBtpH,KAAMulH,KAG5CgE,WAAY,WACV,IAAImzF,EAAY,CAAC18M,MAAMye,OAAOk2F,EAAQ53F,YAClCysG,EAASxV,GAAeh0G,KAAKosG,QAASpC,EAAWwD,GAAIkvG,GACrDjzF,EAAcD,EAAOtW,SAAQ,GAIjC,OAHIsW,EAAOv8G,OACTw8G,EAAYx8G,KAAOu8G,EAAOv8G,KAAOyvM,EAAU32M,QAEtC0uG,GAAMz0G,KAAMypH,IAGrBxG,OAAQ,WACN,OAAOgB,GAAM,EAAGjkH,KAAKiN,OAGvBsV,KAAM,WACJ,OAAOviB,KAAKqC,KAAK,IAGnBylH,UAAW,SAASnhH,EAAWxG,GAC7B,OAAOs0G,GAAMz0G,KAAM0yG,GAAiB1yG,KAAM2G,EAAWxG,GAAS,KAGhEqqB,IAAK,WAEH,OAAOiqF,GAAMz0G,KAAMg0G,GAAeh0G,KAAM0pH,GADxB,CAAC1pH,MAAMye,OAAOk2F,EAAQ53F,eAIxC4sG,QAAS,SAASzV,GAChB,IAAIwoG,EAAY/nG,EAAQ53F,WAExB,OADA2/L,EAAU,GAAK18M,KACRy0G,GAAMz0G,KAAMg0G,GAAeh0G,KAAMk0G,EAAQwoG,OAKpD3B,EAAgBv4M,UAAU24M,IAAuB,EACjDJ,EAAgBv4M,UAAU44M,IAAuB,EAIjDz4F,GAAMq4F,EAAa,CAIjB34M,IAAK,SAAShD,EAAOsuG,GACnB,OAAO3tG,KAAKkI,IAAI7I,GAASA,EAAQsuG,GAGnC70F,SAAU,SAASzZ,GACjB,OAAOW,KAAKkI,IAAI7I,IAMlB4jH,OAAQ,WACN,OAAOjjH,KAAK8wG,cAKhBkqG,EAAYx4M,UAAU0F,IAAM+1M,GAAkBnlM,SAC9CkiM,EAAYx4M,UAAU+2E,SAAWyhI,EAAYx4M,UAAUsW,SAKvD6pG,GAAM7Y,EAAUgxG,EAAct4M,WAC9BmgH,GAAM3Y,EAAY+wG,EAAgBv4M,WAClCmgH,GAAMzY,EAAQ8wG,EAAYx4M,WAE1BmgH,GAAM9Y,GAAiBixG,EAAct4M,WACrCmgH,GAAM5Y,GAAmBgxG,EAAgBv4M,WACzCmgH,GAAM1Y,GAAe+wG,EAAYx4M,WAuEjB,CAEdypH,SAAUA,EAEVriB,IAAKA,EACLD,WAAYA,GACZ9kG,IAAKA,GACLo0G,WAAYA,GACZoE,KAAMA,GACNkE,MAAOA,GACP/zG,IAAKA,GACLm2G,WAAYA,GAEZyG,OAAQA,GACRnG,MAAOA,GACPwH,OAAQA,GAER7c,GAAIA,GACJgd,OAAQA,IAl2JsEh6G,+BCPlF1S,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQuQ,6BAA0B,EAelCvQ,EAAQuQ,wBAXR,MACIlQ,YAAYJ,GACRW,KAAK8G,SAAW,YAChB9G,KAAKga,qBAAsB,EAC3Bha,KAAKX,MAAQA,EAEjB+N,OAAOC,GAEH,QAASA,GAA4B,cAAnBA,EAAMvG,UAA4BuG,EAAMhO,QAAUW,KAAKX,oCCbjFH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6a,qBAAkB,EAe1B7a,EAAQ6a,gBAXR,MACIxa,YAAYJ,EAAO6a,GACfla,KAAK8G,SAAW,YAChB9G,KAAKX,MAAQA,EACbW,KAAKka,WAAaA,EAEtB9M,OAAOC,GAEH,QAASA,GAA4B,cAAnBA,EAAMvG,UAA4BuG,EAAMhO,QAAUW,KAAKX,4CCbjF,IAAImC,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAsBlD,GAC3CkD,EAAa,EAAQ,OAA8BlD,iCChBnDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4hN,gBAAa,EACrB,MAAMzhN,EAAS,EAAQ,MAIvB,MAAMyhN,UAAmBzhN,EAAOma,OAC5B5C,SAGA/K,SAGAsL,SAGAL,QAGAJ,SAGAM,SAIJ9X,EAAQ4hN,WAAaA,qCC1BrB,IAAIx/M,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAiBlD,iCCftCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6hN,iBAAc,EACtB,MAAM1hN,EAAS,EAAQ,MAKvB,MAAM0hN,UAAoB1hN,EAAOsa,SAC7Bpa,YAAYC,GACRC,MAAMD,GAEVE,cAAcC,GAEV,MAAMqhN,EAAc,GACpB,IAAIC,EACJ,IACIA,EAAcnhN,KAAKiY,QAAQpY,GAE/B,MACIshN,EAAc,GAElB,IAAK,MAAMC,KAAcD,EACrB,UACUC,EAAWlpM,MACjBgpM,EAAYz7M,KAAK27M,EAAWj8M,OAEhC,OAMJ,aADsB6F,QAAQ4nB,IAAIsuL,EAAYl7M,KAAIb,GAASA,EAAMiR,cAAcvW,OAChE,GAEnBD,oBACI,MAAM,IAAIY,MAAM,mDAGxBpB,EAAQ6hN,YAAcA,qCCtCtB,IAAIz/M,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAkBlD,iCCfvCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQiiN,6BAA0B,EAClC,MAAM9hN,EAAS,EAAQ,MAKvB,MAAM8hN,UAAgC9hN,EAAOsa,SACzCpa,YAAYC,GACRC,MAAMD,GAEVE,cAAcC,GACV,IAAIshN,EACJ,IACIA,EAAcnhN,KAAKiY,QAAQpY,GAE/B,MAEI,OAAOA,EAEX,GAAIG,KAAKshN,aAAc,CACnB,MAAMC,EAAe,GACrB,IAAK,MAAMj6M,KAAU65M,EACjB,UACU75M,EAAO4Q,MACbqpM,EAAa97M,KAAK6B,GAEtB,OAIJ65M,EAAcI,EAKlB,GAFAJ,QAAoBn2M,QAAQ4nB,IAAIuuL,EAAYn7M,KAAIpG,OAASuF,MAAAA,EAAO+S,MAAAA,MAAY,CAAG/S,MAAAA,EAAO+S,YAAaA,OAE/FlY,KAAKo3I,MAAO,CAEZ,MAAMoqE,EAAY30I,IAGd,MAAMxtE,EAAQW,KAAKwZ,MAAQqzD,EAAK7sE,KAAKwZ,OAASqzD,EAE9C,GAAqB,iBAAVxtE,EACP,MAAM,IAAImB,MAAM,+CAEpB,OAAOnB,GAEX8hN,EAAcA,EAAYhhK,MAAK,CAACshK,EAAQC,KAA2B,eAAf1hN,KAAKo3I,MAAyB,GAAK,IAClFoqE,EAASC,EAAOvpM,OAASspM,EAASE,EAAOxpM,UAIlD,IAAInY,EAASF,EACb,IAAK,MAAM,MAAEsF,KAAWg8M,EACpBphN,EAAS,IAAKA,WAAiBoF,EAAMiR,cAAcrW,IAGvD,OAAOA,EAEX+Z,cACI,MAAM,IAAItZ,MAAM,0BAGxBpB,EAAQiiN,wBAA0BA,sCChElC,IAAI7/M,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA8BlD,iCCfnDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQuiN,0BAAuB,EAC/B,MAAMpiN,EAAS,EAAQ,MAMvB,MAAMoiN,UAA6BpiN,EAAOsa,SACtCpa,YAAYC,GACRC,MAAMD,GACNM,KAAK4hN,SAAW5hN,KAAK6hN,iBAEzBjiN,cAAcC,GACV,IAAIshN,EACJ,IACIA,EAAcnhN,KAAKiY,QAAQpY,GAE/B,MACIshN,EAAc,SAGZn2M,QAAQ4nB,IAAIuuL,EAAYn7M,KAAI,EAAGkS,MAAAA,KAAYA,KAEjD,MAAM2D,QAAgB7Q,QAAQ4nB,IAAIuuL,EAAYn7M,KAAIsB,GAAUA,EAAOnC,MAAMiR,cAAcvW,MAEvF,OAAOG,KAAK4hN,SAAS/lM,GAEzB/B,cACI,MAAM,IAAItZ,MAAM,yBAEpBqhN,iBACI,OAAQhmM,IACJ,MAAM3S,EAAO,GAOb,OANAA,EAAKlJ,KAAKwZ,OAAS,GAEnB,CAAC,IAAIiF,OAAO5C,EAAQ7V,KAAKsB,GAAWA,EAAOtH,KAAKwZ,UAC3CtY,SAAQ,CAAC7B,EAAO+B,EAAO8e,KACxBhX,EAAKlJ,KAAKwZ,OAAS,IAAKna,KAAU6J,EAAKlJ,KAAKwZ,WAEzCtQ,IAInB9J,EAAQuiN,qBAAuBA,sCC5C/B,IAAIngN,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA2BlD,iCCfhDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0iN,mCAAgC,EACxC,MAAMj/M,EAAoB,EAAQ,MAC5BtD,EAAS,EAAQ,MAKvB,MAAMuiN,UAAsCviN,EAAOsa,SAC/Cpa,YAAYC,GACRC,MAAMD,GAEVE,kBAAkBC,EAAQshN,GAEtB,MAAMhvH,EAAS,GACT4vH,EAAWZ,EACZn7M,KAAI,EAAGkS,MAAAA,KAAYA,IACnBlS,KAAI8lC,GAAWA,EAAQx/B,OAAMP,IAC9BomF,EAAO1sF,KAAKsG,QAEVi2M,QAAqBh3M,QAAQ4nB,IAAImvL,GAEjCptM,EAAiB9U,EAAOM,QAAQkC,IAAIQ,EAAkBuN,mBAAmBuE,gBAEzEstM,EAAQD,EAETh8M,KAAIsxC,IACL,GAAIA,KAIE3iC,GAAkB2iC,EAAMrxB,WAAatR,GAA2C,IAAzB2iC,EAAM49I,gBAC/D,OAAO59I,EAAMrxB,WAAajmB,KAAKkiN,UAC3B5qK,EAAM49I,eAAiBl1L,KAAKmiN,aAC5B7qK,EAAM69I,cAAgBn1L,KAAKoiN,WAC3B9qK,EAAMmoI,YAAcz/K,KAAKqiN,YAIrC,IAAIC,GAAY,EACZC,EAAWl/M,OAAOC,kBACtB,IAAK,MAAOsV,EAAGgzK,KAASq2B,EAAMhhN,eACba,IAAT8pL,KAAqC,IAAd02B,GAAmB12B,EAAO22B,KACjDD,EAAW1pM,EACX2pM,EAAW32B,GAInB,GAAI02B,EAAW,EACX,MAAM,IAAI9hN,MAAM,qCAAqCR,KAAKkD,SAASivF,EAAOnsF,KAAI+F,GAASA,EAAM2K,UAAS8J,KAAK,SAG/G,MAAMgiM,EAAYrB,EAAYmB,GAAUn9M,MAiBxC,OAfIq9M,EAAUvqB,eACV14L,EAAOC,MAAMmX,iBAAiB9W,EAAOM,UAAU2W,MAAM,sCAAsC0rM,EAAUjuB,eAAeiuB,EAAUhuB,gBAAiB,CAC3IvzL,QAASpB,EAAOoB,QAAQ8E,OACxBO,gBAAiB0E,QAAQ4nB,IAAI/yB,EAAOoB,QAC/B+E,KAAIpG,MAAO2S,UAAiBA,EAAM7O,OAAO0B,YAAYkB,UAAUN,KAAIO,GAAYA,EAASlH,WAC7F4iN,MAAO/iN,OAAOwM,YAAYu2M,EAAMj8M,KAAI,CAACsxC,EAAO1+B,IAAM,CAC9C,GAAGuoM,EAAYvoM,GAAGzT,MAAMovL,eAAe4sB,EAAYvoM,GAAGzT,MAAMqvL,eAC5Dl9I,MAEJ0qK,aAAc9iN,OAAOwM,YAAYs2M,EAAah8M,KAAI,CAACsxC,EAAO1+B,IAAM,CAC5D,GAAGuoM,EAAYvoM,GAAGzT,MAAMovL,eAAe4sB,EAAYvoM,GAAGzT,MAAMqvL,eAC5Dl9I,QAILkrK,GAGfpjN,EAAQ0iN,8BAAgCA,sCCxExC,IAAItgN,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAoClD,iCCfzDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQqjN,oBAAiB,EACzB,MAAMljN,EAAS,EAAQ,MAQvB,MAAMkjN,UAAuBljN,EAAOsa,SAChCpa,YAAYC,GACRC,MAAMD,GACNM,KAAK0iN,YAAc1iN,KAAK2iN,oBAM5BA,oBACI,OAAQ3iN,KAAKmG,MACT,IAAK,MACD,OAAQy8M,GAAUA,EAAMrpM,QAAO,CAACsjG,EAAMg/D,EAAMjjK,KACxC,MAAMm0E,EAAM/sF,KAAK6iN,aAAahnC,EAAK77K,KAAKwZ,OAAQnW,OAAOC,mBACvD,OAAe,OAARypF,IAAiB1pF,OAAOu9D,MAAMi8C,EAAK,KAAOA,EAAK,GAAK9vB,GAAO,CAACA,EAAKn0E,GAAKikG,IAC9E,CAACx5G,OAAOkhE,KAAM,IAAI,GACzB,IAAK,MACD,OAAQq+I,GAAUA,EAAMrpM,QAAO,CAACsjG,EAAMg/D,EAAMjjK,KACxC,MAAMm0E,EAAM/sF,KAAK6iN,aAAahnC,EAAK77K,KAAKwZ,OAAQnW,OAAOy/M,mBACvD,OAAe,OAAR/1H,IAAiB1pF,OAAOu9D,MAAMi8C,EAAK,KAAOA,EAAK,GAAK9vB,GAAO,CAACA,EAAKn0E,GAAKikG,IAC9E,CAACx5G,OAAOkhE,KAAM,IAAI,GACzB,QACI,MAAM,IAAI/jE,MAAM,4EAA4ER,KAAKmG,SAG7G08M,aAAaxjN,EAAO0jN,GAChB,YAAiBjhN,IAAVzC,EAAsB0jN,EAAe1jN,EAEhDO,kBAAkBC,EAAQshN,GACtB,IAAIY,EAAWZ,EAAYn7M,KAAI,EAAGkS,MAAAA,KAAYA,IAC9C,MAAMi6E,EAAS,GACf,GAAInyF,KAAKgjN,aAAc,CACnB,MAAMC,EAAQ,GACdA,EAAMjjN,KAAKwZ,OAAS,KACpBuoM,EAAWA,EAAS/7M,KAAI8lC,GAAWA,EAAQx/B,OAAMP,IAC7ComF,EAAO1sF,KAAKsG,GACLk3M,OAGf,MAAMpnM,QAAgB7Q,QAAQ4nB,IAAImvL,GAC5B3gN,EAAQpB,KAAK0iN,YAAY7mM,GAC/B,GAAIza,EAAQ,EACR,MAAM,IAAIZ,MAAM,qCAAqCR,KAAKkD,SAASivF,EAAOnsF,KAAI+F,GAASA,EAAM2K,UAAS8J,KAAK,SAE/G,OAAO2gM,EAAY//M,GAAO+D,OAGlC/F,EAAQqjN,eAAiBA,sCCzDzB,IAAIjhN,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAqBlD,iCCf1CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8jN,kBAAe,EACvB,MAAM3jN,EAAS,EAAQ,MAIvB,MAAM2jN,UAAqB3jN,EAAOsa,SAC9Bpa,YAAYC,GACRC,MAAMD,GAEVoa,YAAYja,EAAQshN,GAChB,OAAO,IAAIn2M,SAAQ,CAACC,EAASC,KACzB,MAAMinF,EAAS,GACf,IAAK,MAAMivH,KAAcD,EACrBC,EAAWlpM,MAAM/L,MAAK,KAClBlB,EAAQm2M,EAAWj8M,UACpBmH,OAAMP,IAELomF,EAAO1sF,KAAKsG,GACRomF,EAAOpsF,SAAWo7M,EAAYp7M,QAC9BmF,EAAO,IAAI1K,MAAM,GAAGR,KAAKkD,6CAA6CivF,EAAOnsF,KAAIs8L,GAAYA,EAAS5rL,UAAS8J,KAAK,iBAO5IphB,EAAQ8jN,aAAeA,sCC3BvB,IAAI1hN,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAmBlD,uDCdpCgpF,EAAS,EAAQ,OACjBC,EAAU,EAAQ,OAElBC,EAAahoB,EAAO5oC,MAAQ4oC,EAAO5oC,OAAS9Y,WAAW8Y,KA4J3D,SAAStJ,EAAOngB,EAAGqf,GACjB,MAAI,iBAAoBrf,EACfqf,GAAKrf,EACLA,GAAK,mBAAsBA,EAAEulB,KAC7BvlB,EAAEulB,KAAKlG,GACP,kBAAqBrf,GAAK,iBAAoBA,EAC9CA,EACA,mBAAsBA,GACtBA,EAAEqf,GAzJbluB,EAAQ2oB,MAAQ,SAAUrW,EAAM1L,GAC9B,IAAI6X,EAAQ0qE,EACRC,EAAS,IAAIJ,EACbK,EAASJ,GAAQ,SAAUK,GAC1B,iBAAoBA,IACrBA,EAAQJ,EAAahoB,EAAO5oC,KAAKgxD,GAAS,IAAIpoB,EAAOooB,IACvDF,EAAO/tE,MAAMiuE,MAEf,SAAUx/E,GACLA,GACDu/E,EAAOhuE,MAAMvR,GACX2U,GACA4qE,EAAOz8E,KAAK,SAAU6R,GACtB0qE,GACFE,EAAOz8E,KAAK,SAAUu8E,GACxBE,EAAOE,MAAM,SAiHf,MA9GG,iBAAoBj3E,IACrBA,EAAOA,EAAKoP,MAAM,KAAK9a,KAAI,SAAUyoB,GACnC,MAAU,OAANA,EACK,CAACm6D,SAAS,GACJ,MAANn6D,IAEM,KAANA,EACA,CAAC5c,SAAS,GAEV4c,OAKT/c,GAASA,EAAK3L,SAChB2L,EAAO,MAET82E,EAAOK,QAAU,SAAUxpF,GAIzB,GAHKW,KAAK8oF,OACRL,EAAOK,KAAOzpF,GAEXqS,EAAL,CAMA,IAJA,IAAIkH,EAAI,EACJkkB,EAAK,EACL8rD,GAAU,EACVG,GAAW,EACRnwE,EAAIlH,EAAK3L,QAAQ,CACtB,IACIgb,EADA5f,EAAMuQ,EAAKkH,GAIf,GAFAkkB,IAEI37B,IAAQA,EAAI0Q,QAAS,CAEvB,KADAkP,EAAK+b,IAAM98B,KAAK+mF,MAAMhhF,OAAU/F,KAAOA,KAAK+mF,MAAMjqD,IAC1C,OACR,IAAM1O,EAAMjtB,EAAK4f,EAAE5f,KAEjB,YADA6nF,EAAgBjoE,EAAE5f,IAAK9B,GAGzBupF,IAAYznF,EAAIynF,QAChBG,IAAa5nF,EAAI4nF,SACjBnwE,QACK,CACLA,IACA,IAAIqwE,EAAUv3E,EAAKkH,GACnB,IAAMqwE,EAAS,OACf,OAAa,CAEX,KADAloE,EAAK+b,IAAM98B,KAAK+mF,MAAMhhF,OAAU/F,KAAOA,KAAK+mF,MAAMjqD,IAC1C,OACR,GAAI1O,EAAM66D,EAASloE,EAAE5f,KAAM,CACzByX,IACK1Z,OAAOgqF,SAASlpF,KAAK+mF,MAAMjqD,MAC9B98B,KAAK+mF,MAAMjqD,GAAGz9B,MAAQ,MACxB,MAEA2pF,EAAgBjoE,EAAE5f,IAAK9B,GAEzBy9B,MAWN,GAJIjf,IACF4qE,EAAOz8E,KAAK,SAAU6R,GACtBA,GAAS,GAEPif,IAAM98B,KAAK+mF,MAAMhhF,OAArB,CAGA,IAAIojF,EAAanpF,KAAK+mF,MAAM1jE,MAAM,GAAGrd,KAAI,SAASojF,GAAW,OAAOA,EAAQjoF,OAAOsd,OAAO,CAACze,KAAKmB,MAC5F+H,EAAO7J,EAcX,IAAI,IAAIuC,KAbL,MAAQsH,GACN,OAASA,EAAOlD,EAAMA,EAAIkD,EAAMigF,GAAcjgF,MAC3C0/E,GAAWG,KACb7/E,EAAO,CAAE7J,MAAO6J,GACZ0/E,IACF1/E,EAAU,IAAIlJ,KAAKmB,KACjB4nF,IACF7/E,EAAW,KAAIigF,IAGnBV,EAAOE,MAAMz/E,IAEblJ,KAAKX,cAAcW,KAAKX,MAAMW,KAAKmB,KAC1BnB,KAAK+mF,MACX7nF,OAAOgqF,SAASlpF,KAAK+mF,MAAMnlF,MAC9B5B,KAAK+mF,MAAMnlF,GAAGvC,MAAQ,SAE5BmpF,EAAOa,SAAWb,EAAOc,QAEzBd,EAAOc,QAAU,SAAUn7D,EAAO9uB,GAChCmpF,EAAOa,SAASl7D,EAAO9uB,GACG,IAAtBW,KAAK+mF,MAAMhhF,QACT0iF,EAAOK,OACLp3E,GACF+2E,EAAOE,MAAMF,EAAOK,MAEtBL,EAAOK,KAAO,OAKpBN,EAAO5R,QAAU,SAAU1rD,GACtBA,EAAIxU,QAAQoB,QAAQ,gBAAkB,IACvCoT,EAAIxU,QAAU,iBAAmBwU,EAAIxU,QAAU,KACjD+xE,EAAOz8E,KAAK,QAASkf,IAGhBu9D,EAEP,SAASO,EAAgB7nF,EAAK9B,IAEb,IAAXwe,KACFA,EAASA,GAAU,IACZ1c,GAAO9B,IAID,IAAXkpF,IAA+B,IAAX1qE,KACtB0qE,EAASA,GAAU,IACZpnF,GAAO9B,KAiBpBD,EAAQiN,UAAY,SAAUsF,EAAI43E,EAAKC,EAAIC,GACzCA,EAASA,GAAU,GACR,IAAP93E,GACFA,EAAK,GACL43E,EAAM,KACNC,EAAK,IACU,MAAN73E,IAETA,EAAK,MACL43E,EAAM,QACNC,EAAK,SAMP,IAAIf,EACAiB,GAAQ,EACRC,GAAU,EAkBd,OAjBAlB,EAASJ,GAAQ,SAAUn/E,GACzBygF,GAAU,EACV,IACE,IAAI14D,EAAO7kB,KAAKC,UAAUnD,EAAM,KAAMugF,GACtC,MAAOv+D,GACP,OAAOu9D,EAAOz8E,KAAK,QAASkf,GAE3Bw+D,GAASA,GAAQ,EAAQjB,EAAOE,MAAMh3E,EAAKsf,IACzCw3D,EAAOE,MAAMY,EAAMt4D,MAE1B,SAAU/nB,GACJygF,GACFlB,EAAOE,MAAMh3E,GACf82E,EAAOE,MAAMa,GACbf,EAAOE,MAAM,UAMjBvpF,EAAQwqF,gBAAkB,SAAUj4E,EAAI43E,EAAKC,EAAIC,GAC/CA,EAASA,GAAU,GACR,IAAP93E,GACFA,EAAK,GACL43E,EAAM,KACNC,EAAK,IACU,MAAN73E,IAETA,EAAK,MACL43E,EAAM,QACNC,EAAK,SAMP,IAAIE,GAAQ,EACRC,GAAU,EAcd,OAbatB,GAAQ,SAAUn/E,GAC7BygF,GAAU,EACV,IAAI14D,EAAO7kB,KAAKC,UAAUnD,EAAK,IAAM,IAAMkD,KAAKC,UAAUnD,EAAK,GAAI,KAAMugF,GACtEC,GAASA,GAAQ,EAAQ1pF,KAAK2oF,MAAMh3E,EAAKsf,IACvCjxB,KAAK2oF,MAAMY,EAAMt4D,MAExB,SAAU/nB,GACJygF,GAAS3pF,KAAK2oF,MAAMh3E,GACxB3R,KAAK2oF,MAAMa,GAEXxpF,KAAK2oF,MAAM,kCC5Of,MAAM,gBAAEr4D,EAAe,YAAE6yL,GACL,oBAAThoM,KAAuBA,KACZ,oBAAX2E,OAAyBA,YAChBhe,EAGpBkqE,EAAO5sE,QAAUkxB,EACjB07C,EAAO5sE,QAAQ+jN,YAAcA,EAC7Bn3I,EAAO5sE,QAAP,QAAyBkxB,mBCXzB,MAAM8yL,EAAwB,EAAQ,OAChCxuB,EAAW,EAAQ,OACnBiD,EAAiB,EAAQ,MACzBM,EAAoB,EAAQ,OAE5BkrB,EAAc,EAAQ,OAE5Br3I,EAAO5sE,QAAU,CACbgkN,sBAAAA,EACAxuB,SAAAA,EACAiD,eAAAA,EACAM,kBAAAA,EAEAkrB,YAAAA,oBCbJ,IAAIC,EAAgB,EAAQ,OACxBxmC,EAAyBwmC,EAAcxmC,uBACvCymC,EAA0BD,EAAcC,wBAyB5Cv3I,EAAO5sE,QAtBP,cAAoC09K,EAEhCr9K,YAAagO,EAAM+1M,EAAUC,EAASpyM,GAElC1R,MAAM8N,EAAM4D,GAEZrR,KAAKwjN,SAAWA,EAChBxjN,KAAKyjN,QAAUA,EAGnBlgC,mBAAoBmgC,GAEhB,OAAO,IAAIH,EAAwBvjN,KAAKwjN,SAASE,GAAW,CAAEn2F,UAAW,CAACo2F,EAAW5uH,EAAMtvF,KAEvF,IAAI6B,EAAStH,KAAKyjN,QAAQC,EAAUC,GACrB,OAAXr8M,GACA7B,EAAK6B,GACTytF,0BCtBZ,IAAIuuH,EAAgB,uBAgHpBt3I,EAAO5sE,QA7GP,cAAuBkkN,EAEnB7jN,YAAagO,EAAMC,EAAOk2M,EAASH,GAE/B9jN,QAEAK,KAAK6jN,mBAAoB,EACzB7jN,KAAKyN,KAAOA,EACZzN,KAAK0N,MAAQA,EACb1N,KAAK4jN,QAAUA,EACf5jN,KAAKyjN,QAAUA,EAEfzjN,KAAK8jN,QAAU,IAAIj/M,IAEnB7E,KAAK8oB,MAAW,KAChB9oB,KAAK22J,QAAW,GAChB32J,KAAK+jN,SAAW,EAEhB/jN,KAAKyN,KAAKjC,GAAG,SAAUO,GAAU/L,KAAKkc,QAAQnQ,KAC9C/L,KAAK0N,MAAMlC,GAAG,SAAUO,GAAU/L,KAAKkc,QAAQnQ,KAE/C/L,KAAKotH,UAAW,EAEhBptH,KAAKyN,KAAKjC,GAAG,MAEb,WAEI,GAAIxL,KAAK8jN,QAAQ72M,MAAQ,EACrB,OAAOjN,KAAKkQ,QAChBlQ,KAAKotH,UAAW,EAChBptH,KAAK0N,MAAMlC,GAAG,YAAY,IAAMxL,KAAKotH,UAAW,IAChDptH,KAAK0N,MAAMlC,GAAG,OAAO,KAAaxL,KAAKgkN,cAAchkN,KAAKkkH,WAR7B19F,KAAKxmB,OAWtCA,KAAKwL,GAAG,eAAgBy4M,IAEF,SAAdA,GAAyBjkN,KAAK6jN,oBAE9B7jN,KAAK6jN,mBAAoB,EACzB7jN,KAAKkkN,uBAKjBF,aAEI,OAAQhkN,KAAK0N,MAAMwyH,OAASlgI,KAAK+jN,SAAW/jN,KAAK22J,QAAQ5wJ,OAG7DmK,QAEIvQ,MAAMuQ,QACNlQ,KAAKyN,KAAKyC,QACVlQ,KAAK0N,MAAMwC,QAGf8yD,OAQI,GANKhjE,KAAK6jN,oBAEN7jN,KAAK6jN,mBAAoB,EACzB7jN,KAAKkkN,oBAGLlkN,KAAKkgI,QAAUlgI,KAAKotH,SACpB,OAAO,KAEX,KAAOptH,KAAK+jN,SAAW/jN,KAAK22J,QAAQ5wJ,QACpC,CACI,IAAI04I,EAAOz+I,KAAK22J,QAAQ32J,KAAK+jN,YACzBz8M,EAAStH,KAAKyjN,QAAQhlE,EAAMz+I,KAAK8oB,OACrC,GAAe,OAAXxhB,EACA,OAAOA,EAQf,GALKtH,KAAKgkN,cACNhkN,KAAKkkH,OAETlkH,KAAK8oB,MAAQ9oB,KAAK0N,MAAMs1D,OAEL,OAAfhjE,KAAK8oB,MAGL,OADA9oB,KAAKotH,UAAW,EACT,KAGX,IAAIr+G,EAAO/O,KAAK4jN,QAAQ5jN,KAAK8oB,OAK7B,OAJA9oB,KAAK22J,QAAU32J,KAAK8jN,QAAQzhN,IAAI0M,IAAS,GACzC/O,KAAK+jN,SAAW,EAGT/jN,KAAKgjE,OAGhBkhJ,mBAEIlkN,KAAKyN,KAAKjC,GAAG,OAEb,SAAiBizI,GAEb,IAAI1vI,EAAO/O,KAAK4jN,QAAQnlE,GACnBz+I,KAAK8jN,QAAQ57M,IAAI6G,IAClB/O,KAAK8jN,QAAQv+M,IAAIwJ,EAAM,IACjB/O,KAAK8jN,QAAQzhN,IAAI0M,GACvBtJ,KAAKg5I,IARgBj4H,KAAKxmB,yBCnG1C,MAAM,uBAAE88K,EAAsB,wBAAEymC,EAAuB,aAAEY,GAAiB,EAAQ,OAgClFn4I,EAAO5sE,QA7BP,cAA6B09K,EAEzBr9K,YAAagO,EAAMC,EAAO+1M,EAASpyM,GAE/B1R,MAAM8N,EAAM4D,GAEZrR,KAAK0N,MAAQA,EACb1N,KAAKyjN,QAAUA,EACfzjN,KAAKwL,GAAG,OAAO,IAAMxL,KAAK0N,MAAMwC,UAGpCA,QAEIvQ,MAAMuQ,QACNi0M,GAAa,IAAMnkN,KAAK0N,MAAMwC,UAGlCqzK,mBAAoBmgC,GAEhB,OAAO,IAAIH,EAAwBvjN,KAAK0N,MAAMygC,QAAS,CAAEo/E,UAAW,CAACo2F,EAAW5uH,EAAMtvF,KAElF,IAAI6B,EAAStH,KAAKyjN,QAAQC,EAAUC,GACrB,OAAXr8M,GACA7B,EAAK6B,GACTytF,0BC3BZ,IAAIuuH,EAAgB,uBAmHpBt3I,EAAO5sE,QAhHP,cAAgCkkN,EAE5B7jN,YAAagO,EAAMC,EAAOk2M,EAASH,GAE/B9jN,QAEAK,KAAKyN,KAAQA,EACbzN,KAAK0N,MAAQA,EAEb1N,KAAK4jN,QAAUA,EACf5jN,KAAKyjN,QAAUA,EAEfzjN,KAAKokN,UAAW,EAChBpkN,KAAK8jN,QAAW,IAAIj/M,IACpB7E,KAAKqkN,SAAW,IAAIx/M,IAEpB7E,KAAKwL,GAAG,OAAO,IAAMxL,KAAKgsC,aAE1BhsC,KAAK8oB,MAAW,KAChB9oB,KAAK22J,QAAW,GAChB32J,KAAK+jN,SAAW,GAEZ/jN,KAAKyN,KAAK2/G,UAAYptH,KAAK0N,MAAM0/G,YAEjCptH,KAAKotH,UAAW,GAGpBptH,KAAKyN,KAAKjC,GAAG,SAAUO,GAAU/L,KAAKkc,QAAQnQ,KAC9C/L,KAAK0N,MAAMlC,GAAG,SAAUO,GAAU/L,KAAKkc,QAAQnQ,KAE/C/L,KAAKyN,KAAKjC,GAAG,YAAY,IAAMxL,KAAKotH,UAAW,IAC/CptH,KAAK0N,MAAMlC,GAAG,YAAY,IAAMxL,KAAKotH,UAAW,IAGhDptH,KAAKyN,KAAKjC,GAAI,OAAO,KAAaxL,KAAKgkN,cAAchkN,KAAKkkH,UAC1DlkH,KAAK0N,MAAMlC,GAAG,OAAO,KAAaxL,KAAKgkN,cAAchkN,KAAKkkH,UAG9D8/F,aAMI,OAAQhkN,KAAKyN,KAAKyyH,QAAWlgI,KAAK0N,MAAMwyH,SAAYlgI,KAAK22J,SAAW32J,KAAK+jN,SAAW/jN,KAAK22J,QAAQ5wJ,OAGrGimC,WAGIhsC,KAAK8jN,QAAU,KACf9jN,KAAKqkN,SAAW,KAChBrkN,KAAK22J,QAAU,KAGnBzmJ,QAEIvQ,MAAMuQ,QACNlQ,KAAKyN,KAAKyC,QACVlQ,KAAK0N,MAAMwC,QAGf8yD,OAEI,GAAIhjE,KAAKkgI,MACL,OAAO,KAEX,KAAOlgI,KAAK+jN,SAAW/jN,KAAK22J,QAAQ5wJ,QACpC,CACI,IAAI04I,EAAOz+I,KAAK22J,QAAQ32J,KAAK+jN,YACzBz8M,EAAStH,KAAKokN,SAAWpkN,KAAKyjN,QAAQzjN,KAAK8oB,MAAO21H,GAAQz+I,KAAKyjN,QAAQhlE,EAAMz+I,KAAK8oB,OACtF,GAAe,OAAXxhB,EACA,OAAOA,EAGVtH,KAAKgkN,cACNhkN,KAAKkkH,OAET,IAAIu6B,EAAO,KAEX,IAAK,IAAI7lI,EAAI,EAAGA,EAAI,IAEhB6lI,EAAOz+I,KAAKokN,SAAWpkN,KAAK0N,MAAMs1D,OAAShjE,KAAKyN,KAAKu1D,OACrDhjE,KAAKokN,UAAYpkN,KAAKokN,SAGT,OAAT3lE,KANiB7lI,GAUzB,GAAa,OAAT6lI,EAGA,OADAz+I,KAAKotH,UAAW,EACT,KAGX,IAAIr+G,EAAO/O,KAAK4jN,QAAQnlE,GACpBz4I,EAAMhG,KAAKokN,SAAWpkN,KAAK8jN,QAAU9jN,KAAKqkN,SAW9C,OAVKr+M,EAAIkC,IAAI6G,IACT/I,EAAIT,IAAIwJ,EAAM,IACR/I,EAAI3D,IAAI0M,GACdtJ,KAAKg5I,GAETz+I,KAAK8oB,MAAQ21H,EACbz+I,KAAK22J,SAAW32J,KAAKokN,SAAWpkN,KAAKqkN,SAAWrkN,KAAK8jN,SAASzhN,IAAI0M,IAAS,GAC3E/O,KAAK+jN,SAAW,EAGT/jN,KAAKgjE,0BC/GpB,IAAIsgJ,EAAgB,uBA6DpBt3I,EAAO5sE,QA1DP,cAA4BkkN,EAExB7jN,YAAa4uI,GAET1uI,QAEKmc,MAAMC,QAAQsyH,KACfA,EAAUvyH,MAAMtZ,UAAU6gB,MAAM3gB,KAAKqa,YAEzC/c,KAAKquI,QAAUA,EAEf,IAAK,IAAI5lD,KAAU4lD,EAEf5lD,EAAOj9E,GAAG,YAAY,IAAMxL,KAAKgM,KAAK,cACtCy8E,EAAOj9E,GAAG,OAAO,IAAMxL,KAAKskN,cAAc77H,KAGlB,IAAxBzoF,KAAKquI,QAAQtoI,QACb/F,KAAKkQ,QAETlQ,KAAK85G,IAAM95G,KAAKquI,QAAQtoI,OAAO,EAGnCu+M,cAAe77H,GAEX,IAAIqxB,EAAM95G,KAAKquI,QAAQv2H,QAAQ2wE,GAC3BqxB,EAAM,IAGV95G,KAAKquI,QAAQt2H,OAAO+hG,EAAK,GACrB95G,KAAK85G,KAAO95G,KAAKquI,QAAQtoI,UACvB/F,KAAK85G,IAEiB,IAAxB95G,KAAKquI,QAAQtoI,QACb/F,KAAKkkH,QAGbh0G,QAEIvQ,MAAMuQ,QACN,IAAK,IAAIu4E,KAAUzoF,KAAKquI,QACpB5lD,EAAOv4E,QAGf8yD,OAEI,IAAK,IAAIuhJ,EAAW,EAAGA,EAAWvkN,KAAKquI,QAAQtoI,SAAUw+M,EACzD,CACIvkN,KAAK85G,KAAO95G,KAAK85G,IAAM,GAAK95G,KAAKquI,QAAQtoI,OACzC,IAAI04I,EAAOz+I,KAAKquI,QAAQruI,KAAK85G,KAAK92C,OAClC,GAAa,OAATy7E,EACA,OAAOA,EAGf,OAAO,uBC1Df,MAAM+lE,EAAW,IAAKj5K,EAAAA,MAAL,YACXk5K,EAAiI,IAAKl5K,EAAAA,MAAL,KAAoC,CACzK,KAAQ,mIAEJm5K,EAAyK,IAAKn5K,EAAAA,MAAL,KAAoC,CACjN,KAAQ,2KAEJo5K,EAA0J,IAAKp5K,EAAAA,MAAL,KAAoC,CAClM,KAAQ,4JAEJq5K,EAAyL,IAAKr5K,EAAAA,MAAL,KAAoC,CACjO,KAAQ,2LAEJs5K,EAAgK,IAAKt5K,EAAAA,OAAL,mBAAiE,CACrO,KAAQ,kKAEJu5K,EAAoJ,IAAKv5K,EAAAA,MAAL,KAAoC,CAC5L,KAAQ,sJAEJw5K,EAAmL,IAAKx5K,EAAAA,MAAL,KAAoC,CAC3N,KAAQ,qLAEJy5K,EAAgK,IAAKz5K,EAAAA,MAAL,KAAoC,CACxM,KAAQ,kKAEJ05K,EAA0J,IAAK15K,EAAAA,MAAL,KAAoC,CAClM,KAAQ,4JAEJ25K,EAAiI,IAAK35K,EAAAA,MAAL,KAAoC,CACzK,KAAQ,mIAEJ45K,EAAsJ,IAAK55K,EAAAA,MAAL,KAAoC,CAC9L,KAAQ,wJAEJ65K,EAA8I,IAAK75K,EAAAA,MAAL,KAAoC,CACtL,KAAQ,gJAEJ85K,EAAgK,IAAK95K,EAAAA,MAAL,KAAoC,CACxM,KAAQ,kKAEJ+5K,EAA8K,IAAK/5K,EAAAA,MAAL,KAAoC,CACtN,KAAQ,gLAEJg6K,EAA6K,IAAKh6K,EAAAA,MAAL,KAAoC,CACrN,KAAQ,+KAEJi6K,EAAuJ,IAAKj6K,EAAAA,MAAL,KAAoC,CAC/L,KAAQ,yJAEJk6K,EAA6K,IAAKl6K,EAAAA,MAAL,KAAoC,CACrN,KAAQ,+KAEJm6K,EAA2J,IAAKn6K,EAAAA,MAAL,KAAoC,CACnM,KAAQ,6JAEJo6K,EAAmL,IAAKp6K,EAAAA,MAAL,KAAoC,CAC3N,KAAQ,qLAEJq6K,EAAmM,IAAKr6K,EAAAA,MAAL,KAAoC,CAC3O,KAAQ,qMAEJs6K,EAAmN,IAAKt6K,EAAAA,MAAL,KAAoC,CAC3P,KAAQ,qNAEJu6K,EAAgL,IAAKv6K,EAAAA,MAAL,KAAoC,CACxN,KAAQ,kLAEJw6K,EAAiK,IAAKx6K,EAAAA,MAAL,KAAoC,CACzM,KAAQ,mKAEJy6K,EAA2I,IAAKz6K,EAAAA,MAAL,KAAoC,CACnL,KAAQ,6IAEJ06K,EAAmN,IAAK16K,EAAAA,MAAL,KAAoC,CAC3P,KAAQ,qNAEJ26K,EAAuL,IAAK36K,EAAAA,MAAL,KAAoC,CAC/N,KAAQ,yLAEJ46K,EAA0J,IAAK56K,EAAAA,MAAL,KAAoC,CAClM,KAAQ,4JAEJ66K,EAAiJ,IAAK76K,EAAAA,MAAL,KAAoC,CACzL,KAAQ,mJAEJ86K,EAAmK,IAAK96K,EAAAA,MAAL,KAAoC,CAC3M,KAAQ,qKAEJ+6K,EAAuJ,IAAK/6K,EAAAA,MAAL,KAAoC,CAC/L,KAAQ,yJAEJg7K,EAAiJ,IAAKh7K,EAAAA,MAAL,KAAoC,CACzL,KAAQ,mJAEJi7K,EAA6L,IAAKj7K,EAAAA,MAAL,KAAoC,CACrO,KAAQ,+LAMJk7K,GAJuE,IAAKl7K,EAAAA,OAAL,2CAAoH,CAC/L,KAAQ,uEACR,IAAOm5K,IAEsD,IAAKn5K,EAAAA,OAAL,yBAA6E,CAC1I,KAAQ,yDACR,IAAOm5K,KAMHgC,GAJiD,IAAKn7K,EAAAA,OAAL,uBAA0E,CAC/H,KAAQ,iDACR,IAAOo5K,IAEiD,IAAKp5K,EAAAA,OAAL,cAAsD,CAC9G,KAAQ,oDACR,IAAOo5K,KAEHgC,EAA+D,IAAKp7K,EAAAA,OAAL,yBAA6E,CAChJ,KAAQ,+DACR,IAAOq5K,IAcHgC,GAZgE,IAAKr7K,EAAAA,OAAL,oCAAsG,CAC1K,KAAQ,gEACR,IAAOq5K,IAEgE,IAAKr5K,EAAAA,OAAL,sCAA2G,CAClL,KAAQ,mEACR,IAAOq5K,IAEmE,IAAKr5K,EAAAA,OAAL,0CAAkH,CAC5L,KAAQ,sEACR,IAAOq5K,IAEmD,IAAKr5K,EAAAA,OAAL,gBAA0D,CACpH,MAAS,eACT,KAAQ,MACR,cAAgB,EAChB,KAAQ,sDACR,IAAOs5K,KAMHgC,GAJqD,IAAKt7K,EAAAA,MAAL,2BAAkF,CAC3I,KAAQ,qDACR,IAAOs5K,IAE+C,IAAKt5K,EAAAA,OAAL,cAAsD,CAC5G,KAAQ,kDACR,IAAOu5K,KAWHgC,GATiD,IAAKv7K,EAAAA,OAAL,uBAA0E,CAC/H,SAAY,CAAC,QAAU,+BAA+B,cAAc,+BAA+B,QAAU,+BAA+B,GAAK,4BAA4B,KAAO,mCAAmC,QAAU,4BAA4B,KAAO,6BAA6B,IAAM,2CAA2C,IAAM,iCAAiC,IAAM,8CAA8C,KAAO,wCAAwC,OAAS,qBAAqB,KAAO,kCAAkC,IAAM,qCACziB,KAAQ,iDACR,IAAOu5K,IAE+C,IAAKv5K,EAAAA,OAAL,wBAA4E,CAClI,KAAQ,kDACR,IAAOu5K,IAE+D,IAAKv5K,EAAAA,OAAL,cAAsD,CAC5H,KAAQ,kEACR,IAAOw5K,KAEHgC,EAAkE,IAAKx7K,EAAAA,OAAL,sBAAuE,CAC7I,MAAS,aACT,KAAQ,kEACR,IAAOw5K,IAEHiC,EAAwE,IAAKz7K,EAAAA,OAAL,sBAAuE,CACnJ,MAAS,mBACT,KAAQ,wEACR,IAAOw5K,IAmDHkC,GAjD0D,IAAK17K,EAAAA,OAAL,+BAA2F,CACzJ,oBAAuB,CAAC,mBAAmB,GAC3C,iBAAoB,CAAC,mBAAmB,0DACxC,KAAQ,0DACR,IAAOw5K,IAEyD,IAAKx5K,EAAAA,OAAL,iCAA+F,CAC/J,oBAAuB,CAAC,OAAS,IACjC,iBAAoB,CAAC,OAAS,4DAC9B,KAAQ,4DACR,IAAOw5K,IAEsD,IAAKx5K,EAAAA,OAAL,oCAAsG,CACnK,oBAAuB,CAAC,WAAW,KACnC,iBAAoB,CAAC,WAAW,mDAChC,KAAQ,yDACR,IAAOw5K,IAE8D,IAAKx5K,EAAAA,OAAL,qCAAwG,CAC7K,oBAAuB,CAAC,kCAAkC,IAC1D,iBAAoB,CAAC,kCAAkC,oDACvD,KAAQ,iEACR,IAAOw5K,IAE6D,IAAKx5K,EAAAA,OAAL,oCAAsG,CAC1K,oBAAuB,CAAC,4BAA4B,KACpD,iBAAoB,CAAC,4BAA4B,mDACjD,KAAQ,gEACR,IAAOw5K,IAE6D,IAAKx5K,EAAAA,OAAL,oCAAsG,CAC1K,oBAAuB,CAAC,iCAAiC,IACzD,iBAAoB,CAAC,iCAAiC,mDACtD,KAAQ,gEACR,IAAOw5K,IAEwD,IAAKx5K,EAAAA,OAAL,gCAA6F,CAC5J,YAAe,GACf,oBAAuB,CAAC,MAAQ,IAChC,iBAAoB,CAAC,MAAQ,2DAC7B,KAAQ,2DACR,IAAOw5K,IAEuD,IAAKx5K,EAAAA,MAAL,+BAA2F,CACzJ,oBAAuB,CAAC,KAAO,IAC/B,iBAAoB,CAAC,KAAO,0DAC5B,KAAQ,0DACR,IAAOw5K,IAEmD,IAAKx5K,EAAAA,MAAL,aAAoD,CAC9G,KAAQ,sDACR,IAAOy5K,KAEHkC,EAA+M,IAAK37K,EAAAA,OAAL,+BAA6E,CAChS,KAAQ,+MACR,IAAOy5K,IAEHmC,EAAqO,IAAK57K,EAAAA,OAAL,+BAA6E,CACtT,KAAQ,qOACR,IAAOy5K,IAEHoC,EAAqM,IAAK77K,EAAAA,OAAL,+BAA6E,CACtR,KAAQ,qMACR,IAAOy5K,IAEHqC,EAAyD,IAAK97K,EAAAA,OAAL,cAAsD,CACnH,KAAQ,yDACR,IAAO05K,IAEHqC,EAAyD,IAAK/7K,EAAAA,OAAL,sBAAuE,CACpI,MAAS,aACT,KAAQ,yDACR,IAAO05K,IAEHsC,EAA+D,IAAKh8K,EAAAA,OAAL,sBAAuE,CAC1I,MAAS,mBACT,KAAQ,+DACR,IAAO05K,IAgBHuC,GAd+C,IAAKj8K,EAAAA,OAAL,qBAAsE,CACzH,oBAAuB,CAAC,sBAAsB,EAAE,wBAAwB,GAAI,mBAAmB,IAAK,UAAU,IAAK,cAAc,IACjI,iBAAoB,CAAC,sBAAsB,uCAAuC,wBAAwB,yCAAyC,mBAAmB,oCAAoC,UAAU,kCAAkC,cAAc,uCACpQ,KAAQ,+CACR,IAAO05K,IAEgD,IAAK15K,EAAAA,OAAL,yBAA8E,CACrI,0BAA6B,EAC7B,oBAAuB,CAAC,sBAAsB,GAC9C,iBAAoB,CAAC,sBAAsB,wCAC3C,cAAiB,GACjB,KAAQ,mDACR,IAAO05K,IAEuM,IAAK15K,EAAAA,OAAL,oBAAiF,CAC/R,KAAQ,0MACR,IAAO25K,KAEHuC,EAA2C,IAAKl8K,EAAAA,OAAL,gBAA0D,CACzG,MAAS,OACT,KAAQ,MACR,cAAgB,EAChB,KAAQ,2CACR,IAAO25K,IAEHwC,EAAyC,IAAKn8K,EAAAA,OAAL,gBAA2D,CACxG,aAAgB,CAAC,WAAY,EAAK,WAAa,GAC/C,KAAQ,yCACR,IAAO25K,IAEHyC,GAAmD,IAAKp8K,EAAAA,OAAL,0BAA+E,CACtI,KAAQ,mDACR,IAAO45K,IAEHyC,GAAkD,IAAKr8K,EAAAA,OAAL,cAAsD,CAC5G,KAAQ,kDACR,IAAO45K,IAUH0C,IAR8D,IAAKt8K,EAAAA,OAAL,mCAAmG,CACrK,KAAQ,8DACR,IAAO45K,IAE6D,IAAK55K,EAAAA,OAAL,qCAAuG,CAC3K,KAAQ,gEACR,IAAO45K,IAE8C,IAAK55K,EAAAA,OAAL,cAAsD,CAC3G,KAAQ,iDACR,IAAO65K,KAEH0C,GAAqD,IAAKv8K,EAAAA,OAAL,sBAAuE,CAChI,MAAS,aACT,KAAQ,qDACR,IAAO65K,IAuBH2C,IArB2C,IAAKx8K,EAAAA,OAAL,iBAA8D,CAC7G,oBAAuB,CAAC,sBAAsB,EAAE,wBAAwB,GAAI,mBAAmB,IAAK,UAAU,IAAK,cAAc,IACjI,iBAAoB,CAAC,sBAAsB,uCAAuC,wBAAwB,yCAAyC,mBAAmB,oCAAoC,UAAU,kCAAkC,cAAc,uCACpQ,cAAiB,EACjB,KAAQ,2CACR,IAAO65K,IAE4C,IAAK75K,EAAAA,OAAL,qBAAsE,CACzH,oBAAuB,CAAC,sBAAsB,GAC9C,iBAAoB,CAAC,sBAAsB,wCAC3C,cAAiB,GACjB,KAAQ,+CACR,IAAO65K,IAE6C,IAAK75K,EAAAA,OAAL,sBAAyE,CAC7H,oBAAuB,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,GACzE,iBAAoB,CAAC,kBAAkB,oCAAoC,gBAAgB,oCAAoC,WAAW,qCAC1I,cAAiB,GACjB,KAAQ,gDACR,IAAO65K,IAEmD,IAAK75K,EAAAA,OAAL,cAAsD,CAChH,KAAQ,sDACR,IAAO85K,KAMH2C,IAJgE,IAAKz8K,EAAAA,OAAL,oCAAsG,CAC1K,KAAQ,gEACR,IAAO+5K,IAEyD,IAAK/5K,EAAAA,OAAL,cAAsD,CACtH,KAAQ,4DACR,IAAO+5K,KAMH2C,IAJqE,IAAK18K,EAAAA,OAAL,yCAAgH,CACzL,KAAQ,qEACR,IAAOg6K,IAEwD,IAAKh6K,EAAAA,OAAL,gBAA0D,CACzH,MAAS,WACT,KAAQ,MACR,cAAgB,EAChB,KAAQ,2DACR,IAAOg6K,KAYH2C,IAVyD,IAAK38K,EAAAA,OAAL,8BAAyF,CACtJ,gBAAkB,EAClB,sCAAwC,EACxC,KAAQ,yDACR,IAAOi6K,IAE4C,IAAKj6K,EAAAA,OAAL,qBAAsE,CACzH,KAAQ,+CACR,IAAOi6K,IAEgD,IAAKj6K,EAAAA,OAAL,cAAsD,CAC7G,KAAQ,mDACR,IAAOi6K,KA0CH2C,IAxCkE,IAAK58K,EAAAA,OAAL,sCAA0G,CAChL,KAAQ,kEACR,IAAOk6K,IAE4D,IAAKl6K,EAAAA,OAAL,mCAAoG,CACvK,WAAc,CACd,6CACA,mCAEA,KAAQ,+DACR,IAAOk6K,IAE+D,IAAKl6K,EAAAA,OAAL,sCAA0G,CAChL,WAAc,CACd,gDAEA,KAAQ,kEACR,IAAOk6K,IAE6D,IAAKl6K,EAAAA,OAAL,oCAAsG,CAC1K,KAAQ,gEACR,IAAOk6K,IAEmE,IAAKl6K,EAAAA,OAAL,yCAAiH,CAC3L,KAAQ,sEACR,IAAOk6K,IAE6D,IAAKl6K,EAAAA,OAAL,oCAAsG,CAC1K,KAAQ,gEACR,IAAOk6K,IAEoE,IAAKl6K,EAAAA,OAAL,0CAAmH,CAC9L,KAAQ,uEACR,IAAOk6K,IAE+D,IAAKl6K,EAAAA,OAAL,sCAA0G,CAChL,oBAAsB,EACtB,KAAQ,kEACR,IAAOk6K,IAEwD,IAAKl6K,EAAAA,OAAL,sBAAuE,CACtI,MAAS,WACT,KAAQ,2DACR,IAAOk6K,KAsBH2C,IApB6C,IAAK78K,EAAAA,OAAL,mBAAkE,CACnH,gBAAmBm6K,EACnB,oBAAuB,CAAC,wBAAwB,GAAI,YAAY,GAChE,iBAAoB,CAAC,wBAAwB,oCAAoC,YAAY,qCAC7F,cAAiB,GACjB,KAAQ,6CACR,IAAON,IAEoD,IAAK75K,EAAAA,OAAL,4BAAqF,CAChJ,KAAQ,uDACR,IAAOm6K,IAE+C,IAAKn6K,EAAAA,OAAL,uBAA2E,CACjI,KAAQ,kDACR,IAAOm6K,IAEuD,IAAKn6K,EAAAA,OAAL,+BAA2F,CACzJ,KAAQ,0DACR,IAAOo6K,IAE0D,IAAKp6K,EAAAA,OAAL,gBAA0D,CAC3H,MAAS,eACT,KAAQ,MACR,cAAgB,EAChB,KAAQ,6DACR,IAAOo6K,KAMH0C,IAJgE,IAAK98K,EAAAA,OAAL,oCAAsG,CAC1K,KAAQ,gEACR,IAAOq6K,IAEgE,IAAKr6K,EAAAA,OAAL,cAAsD,CAC7H,KAAQ,mEACR,IAAOq6K,KAMH0C,IAJsE,IAAK/8K,EAAAA,OAAL,yCAAiH,CAC3L,KAAQ,sEACR,IAAOs6K,IAEsE,IAAKt6K,EAAAA,OAAL,cAAsD,CACnI,KAAQ,yEACR,IAAOs6K,KAEH0C,GAA4D,IAAKh9K,EAAAA,OAAL,cAAsD,CACtH,KAAQ,4DACR,IAAOu6K,IAMH0C,IAJ2D,IAAKj9K,EAAAA,OAAL,+BAA4F,CAC3J,KAAQ,2DACR,IAAOw6K,IAEoD,IAAKx6K,EAAAA,OAAL,cAAsD,CACjH,KAAQ,uDACR,IAAOw6K,KAEH0C,GAA+C,IAAKl9K,EAAAA,OAAL,+BAA0F,CAC7I,UAAa,EACb,aAAgB,EAChB,WAAc,GACd,SAAY,IACZ,KAAQ,+CACR,IAAOy6K,IAEH0C,GAAyE,IAAKn9K,EAAAA,OAAL,cAAsD,CACnI,KAAQ,yEACR,IAAO06K,IAEH0C,GAA+D,IAAKp9K,EAAAA,OAAL,cAAsD,CACzH,KAAQ,+DACR,IAAO26K,IAMH0C,IAJoE,IAAKr9K,EAAAA,OAAL,uCAA6G,CACrL,KAAQ,oEACR,IAAO26K,IAEiE,IAAK36K,EAAAA,OAAL,wCAA8G,CACtL,KAAQ,oEACR,IAAO46K,KAEH0C,GAAoD,IAAKt9K,EAAAA,OAAL,yBAA6E,CACrI,KAAQ,oDACR,IAAO46K,IASH2C,IAP+C,IAAKv9K,EAAAA,OAAL,qBAAsE,CACzH,oBAAuB,CAAC,oBAAoB,EAAE,aAAa,IAC3D,iBAAoB,CAAC,oBAAoB,qCAAqC,aAAa,sCAC3F,cAAiB,GACjB,KAAQ,+CACR,IAAO66K,IAE+C,IAAK76K,EAAAA,OAAL,cAAsD,CAC5G,KAAQ,kDACR,IAAO66K,KAEH2C,GAAsD,IAAKx9K,EAAAA,OAAL,sBAAuE,CACjI,MAAS,aACT,KAAQ,sDACR,IAAO66K,IAEH4C,GAAuD,IAAKz9K,EAAAA,OAAL,cAAsD,CACjH,KAAQ,uDACR,IAAO86K,IAEH4C,GAAmD,IAAK19K,EAAAA,OAAL,cAAsD,CAC7G,KAAQ,mDACR,IAAO+6K,IAEH4C,GAAiD,IAAK39K,EAAAA,OAAL,cAAsD,CAC3G,KAAQ,iDACR,IAAOg7K,IA8IH4C,IA5IkD,IAAK59K,EAAAA,OAAL,wBAA4E,CAClI,uBAA0Bq7K,EAC1B,KAAQ,kDACR,IAAO/B,IAE+C,IAAKt5K,EAAAA,OAAL,4BAAqF,CAC3I,uBAA0Bq7K,EAC1B,KAAQ,kDACR,IAAO/B,IAEqD,IAAKt5K,EAAAA,OAAL,8BAAwF,CACpJ,uBAA0Bq7K,EAC1B,KAAQ,wDACR,IAAO/B,IAEoD,IAAKt5K,EAAAA,OAAL,oCAAqG,CAChK,uBAA0Bq7K,EAC1B,KAAQ,uDACR,IAAO/B,IAEoD,IAAKt5K,EAAAA,OAAL,iCAA+F,CAC1J,qBAAwBm7K,EACxB,uBAA0BE,EAC1B,KAAQ,uDACR,IAAO/B,IAEkD,IAAKt5K,EAAAA,OAAL,2BAAkF,CAC3I,uBAA0Bq7K,EAC1B,KAAQ,qDACR,IAAO/B,IAEkD,IAAKt5K,EAAAA,OAAL,mCAAmG,CAC5J,uBAA0Bq7K,EAC1B,KAAQ,qDACR,IAAO/B,IAEgD,IAAKt5K,EAAAA,OAAL,6BAAuF,CAC9I,uBAA0Bq7K,EAC1B,KAAQ,mDACR,IAAO/B,IAEiD,IAAKt5K,EAAAA,OAAL,0BAAgF,CACxI,qBAAwBm7K,EACxB,uBAA0BE,EAC1B,KAAQ,oDACR,IAAO/B,IAE+C,IAAKt5K,EAAAA,OAAL,wBAA4E,CAClI,uBAA0Bq7K,EAC1B,KAAQ,kDACR,IAAO/B,IAEmD,IAAKt5K,EAAAA,MAAL,oCAAqG,CAC/J,uBAA0Bq7K,EAC1B,KAAQ,sDACR,IAAO/B,IAEmD,IAAKt5K,EAAAA,OAAL,4BAAoF,CAC9I,uBAA0Bq7K,EAC1B,KAAQ,sDACR,IAAO/B,IAEmD,IAAKt5K,EAAAA,MAAL,gCAA6F,CACvJ,qBAAwBm7K,EACxB,UAAa,IACb,uBAA0BE,EAC1B,KAAQ,sDACR,IAAO/B,IAEmD,IAAKt5K,EAAAA,OAAL,4BAAoF,CAC9I,qBAAuB,EACvB,uBAA0Bq7K,EAC1B,KAAQ,sDACR,IAAO/B,IAEiD,IAAKt5K,EAAAA,OAAL,0BAAgF,CACxI,uBAA0Bq7K,EAC1B,KAAQ,oDACR,IAAO/B,IAEiD,IAAKt5K,EAAAA,KAAL,0BAAgF,CACxI,uBAA0Bq7K,EAC1B,KAAQ,oDACR,IAAO/B,IAEoD,IAAKt5K,EAAAA,OAAL,4BAAqF,CAChJ,uBAA0Bq7K,EAC1B,KAAQ,uDACR,IAAO/B,IAEoD,IAAKt5K,EAAAA,OAAL,4BAAqF,CAChJ,uBAA0Bq7K,EAC1B,KAAQ,uDACR,IAAO/B,IAEqD,IAAKt5K,EAAAA,OAAL,6BAAuF,CACnJ,uBAA0Bq7K,EAC1B,KAAQ,wDACR,IAAO/B,IAEoD,IAAKt5K,EAAAA,OAAL,4BAAqF,CAChJ,uBAA0Bq7K,EAC1B,KAAQ,uDACR,IAAO/B,IAE4D,IAAKt5K,EAAAA,MAAL,kCAAmG,CACtK,uBAA0Bq7K,EAC1B,KAAQ,+DACR,IAAO/B,IAE6D,IAAKt5K,EAAAA,OAAL,mCAAqG,CACzK,uBAA0Bq7K,EAC1B,KAAQ,gEACR,IAAO/B,IAE4D,IAAKt5K,EAAAA,OAAL,kCAAmG,CACtK,uBAA0Bq7K,EAC1B,KAAQ,+DACR,IAAO/B,IAEsD,IAAKt5K,EAAAA,MAAL,+BAAkG,CAC/J,uBAA0Bq7K,EAC1B,KAAQ,yDACR,IAAO/B,IAE4D,IAAKt5K,EAAAA,OAAL,0CAAiH,CACpL,uBAA0Bq7K,EAC1B,KAAQ,+DACR,IAAO/B,IAEuD,IAAKt5K,EAAAA,OAAL,gCAAoG,CAClK,uBAA0Bq7K,EAC1B,KAAQ,0DACR,IAAO/B,IAEuD,IAAKt5K,EAAAA,OAAL,gCAAoG,CAClK,uBAA0Bq7K,EAC1B,KAAQ,0DACR,IAAO/B,IAEsC,IAAKt5K,EAAAA,OAAL,gBAA2D,CACxG,+BAAkCo7K,EAClC,uBAA0BC,EAC1B,mBAAsBC,EACtB,6BAAgCC,EAChC,8CAAiDC,EACjD,oDAAuDC,EACvD,0BAA6BP,EAC7B,uBAA0BQ,EAC1B,OAAUzC,EACV,wBAA2B,SAC3B,oBAAuB,CAAC,QAAU,qCAAqC,SAAW,wCAAwC,YAAc,6CAA6C,QAAU,qCAAqC,yBAA2B,sDAAsD,mBAAqB,gDAAgD,MAAQ,2BAA2B,SAAW,0BAA0B,uBAAyB,yCAAyC,iBAAmB,8CAA8C,gBAAkB,6CAA6C,QAAU,qCAAqC,IAAM,qBAAqB,YAAc,yCAAyC,eAAiB,4CAA4C,SAAW,yCAAyC,OAAS,gDAAgD,QAAU,kDACz7B,KAAQ,yCACR,IAAOC,KAEsD,IAAKl5K,EAAAA,OAAL,8BAAyF,CACtJ,qBAAwB87K,EACxB,0BAA6BC,EAC7B,gCAAmCC,EACnC,KAAQ,yDACR,IAAOxC,IAEwD,IAAKx5K,EAAAA,OAAL,gCAA6F,CAC5J,aAAgBi8K,EAChB,oBAAuB,CAAC,MAAQ,IAChC,iBAAoB,CAAC,MAAQ,2DAC7B,KAAQ,2DACR,IAAOzC,IAE4C,IAAKx5K,EAAAA,OAAL,qBAAsE,CACzH,aAAgBk8K,EAChB,oBAAuB,CAAC,mBAAmB,GAAI,sBAAsB,GACrE,iBAAoB,CAAC,mBAAmB,uCAAuC,sBAAsB,wCACrG,cAAiB,GACjB,KAAQ,+CACR,IAAOrC,IAE2D,IAAK75K,EAAAA,OAAL,iCAA+F,CACjK,aAAgBk8K,EAChB,gBAAkB,EAClB,cAAgB,EAChB,KAAQ,8DACR,IAAO9B,IAEqE,IAAKp6K,EAAAA,OAAL,2CAAqH,CACjM,aAAgBk8K,EAChB,KAAQ,wEACR,IAAO3B,IAEyD,IAAKv6K,EAAAA,OAAL,gCAA8F,CAC9J,aAAgBk8K,EAChB,+BAAkCH,EAClC,qBAAwBD,EACxB,KAAQ,4DACR,IAAOvB,IAEwD,IAAKv6K,EAAAA,OAAL,gCAA6F,CAC5J,aAAgBk8K,EAChB,sBAAwB,EACxB,sBAAwB,EACxB,KAAQ,2DACR,IAAO3B,IAE2D,IAAKv6K,EAAAA,OAAL,mCAAmG,CACrK,aAAgBk8K,EAChB,sBAAwB,EACxB,sBAAwB,EACxB,cAAgB,EAChB,KAAQ,8DACR,IAAO5C,IAEiD,IAAKt5K,EAAAA,OAAL,0BAAgF,CACxI,oBAAuBq8K,GACvB,cAAiBC,GACjB,wBAA2BC,GAC3B,cAAiB,CAAC,IAAM,YAAY,KAAO,YAAY,KAAO,mBAAmB,OAAS,sBAAsB,GAAK,UAAU,GAAK,sBAAsB,OAAS,sBAAsB,GAAK,wBAAwB,SAAW,wBAAwB,IAAM,sBAAsB,IAAM,sBAAsB,OAAS,sBAAsB,IAAM,gBAAgB,KAAO,gBAAgB,KAAO,mBAAmB,IAAM,cAAc,OAAS,cAAc,IAAM,wBAAwB,MAAQ,wBAAwB,IAAM,mBACtgB,KAAQ,oDACR,IAAOzC,IAEiD,IAAK95K,EAAAA,OAAL,yBAA+E,CACvI,2BAA8Bu8K,GAC9B,uBAA0BD,GAC1B,KAAQ,oDACR,IAAOnC,IAE+C,IAAKn6K,EAAAA,MAAL,kBAAsE,CAC5H,wBAA2B08K,GAC3B,KAAQ,kDACR,IAAOjC,IAEiD,IAAKz6K,EAAAA,OAAL,oBAA0E,CAClI,wBAA2B08K,GAC3B,KAAQ,oDACR,IAAOjC,IAEsD,IAAKz6K,EAAAA,OAAL,wBAAmF,CAChJ,wBAA2B08K,GAC3B,KAAQ,yDACR,IAAOjC,IAEqD,IAAKz6K,EAAAA,OAAL,uBAAiF,CAC7I,UAAa,cACb,oBAAuB,KACvB,wBAA2By8K,GAC3B,uBAA0BpB,EAC1B,wBAA2BqB,GAC3B,KAAQ,wDACR,IAAOjC,IAE+C,IAAKz6K,EAAAA,OAAL,kBAAsE,CAC5H,wBAA2B08K,GAC3B,KAAQ,kDACR,IAAOjC,IAEyD,IAAKz6K,EAAAA,OAAL,2BAAwF,CACxJ,wBAA2B08K,GAC3B,KAAQ,4DACR,IAAOjC,IAEsD,IAAKz6K,EAAAA,OAAL,wBAAkF,CAC/I,wBAA2B08K,GAC3B,KAAQ,yDACR,IAAOjC,IAE+C,IAAKz6K,EAAAA,OAAL,uBAA2E,CACjI,wBAA2B08K,GAC3B,KAAQ,kDACR,IAAOjC,IAEqD,IAAKz6K,EAAAA,OAAL,4BAAsF,CAClJ,wBAA2B08K,GAC3B,KAAQ,wDACR,IAAOjC,IAEkD,IAAKz6K,EAAAA,OAAL,0BAAiF,CAC1I,UAAa,cACb,oBAAuB,KACvB,uBAA0Bq7K,EAC1B,wBAA2BqB,GAC3B,KAAQ,qDACR,IAAOjC,IAEyD,IAAKz6K,EAAAA,OAAL,gCAA6F,CAC7J,wBAA2B08K,GAC3B,KAAQ,4DACR,IAAOjC,IAEsD,IAAKz6K,EAAAA,OAAL,8BAAyF,CACtJ,iBAAoB28K,GACpB,wBAA2BC,GAC3B,uBAA0BJ,GAC1B,WAAc,qDACd,aAAgB,uDAChB,UAAa,oDACb,SAAY,wDACZ,KAAQ,yDACR,IAAOpC,IAE+D,IAAKp6K,EAAAA,OAAL,sCAA0G,CAChL,UAAa,IACb,gBAAmB47K,EACnB,aAAgB,GAChB,uBAA0BY,GAC1B,iBAAoBG,GACpB,wBAA2BC,GAC3B,6BAAgCC,GAChC,kCAAqCC,GACrC,uCAA0CC,GAC1C,KAAQ,kEACR,IAAOpC,IAEuD,IAAK36K,EAAAA,MAAL,+BAA2F,CACzJ,UAAa,IACb,gBAAmB27K,EACnB,uBAA0Ba,GAC1B,iBAAoBG,GACpB,wBAA2BC,GAC3B,4BAA+BI,GAC/B,KAAQ,0DACR,IAAOxC,IAEwD,IAAKx6K,EAAAA,OAAL,0BAAuF,CACtJ,oBAAuBi9K,GACvB,uBAA0B5B,EAC1B,KAAQ,2DACR,IAAO/B,IAEyD,IAAKt5K,EAAAA,OAAL,2BAAyF,CACzJ,oBAAuBi9K,GACvB,uBAA0B5B,EAC1B,KAAQ,4DACR,IAAO/B,IAEgE,IAAKt5K,EAAAA,OAAL,uCAA2G,CAClL,oBAAuBi9K,GACvB,uBAA0B5B,EAC1B,KAAQ,mEACR,IAAO/B,IAEuD,IAAKt5K,EAAAA,OAAL,yBAAqF,CACnJ,oBAAuBi9K,GACvB,uBAA0B5B,EAC1B,KAAQ,0DACR,IAAO/B,IAEuD,IAAKt5K,EAAAA,MAAL,yBAAqF,CACnJ,oBAAuBi9K,GACvB,uBAA0B5B,EAC1B,KAAQ,0DACR,IAAO/B,IAEgD,IAAKt5K,EAAAA,OAAL,yBAA8E,CACrI,aAAgBk9K,GAChB,uBAA0B7B,EAC1B,KAAQ,mDACR,IAAO/B,IAEoD,IAAKt5K,EAAAA,OAAL,6BAAsF,CACjJ,aAAgBk9K,GAChB,uBAA0B7B,EAC1B,KAAQ,uDACR,IAAO/B,IAEiD,IAAKt5K,EAAAA,OAAL,0BAAgF,CACxI,aAAgBk9K,GAChB,uBAA0B7B,EAC1B,KAAQ,oDACR,IAAO/B,IAEoD,IAAKt5K,EAAAA,OAAL,4BAAqF,CAChJ,aAAgBk9K,GAChB,uBAA0B7B,EAC1B,KAAQ,uDACR,IAAO/B,IAEyD,IAAKt5K,EAAAA,OAAL,2BAAyF,CACzJ,wBAA2By8K,GAC3B,aAAgBS,GAChB,wBAA2BR,GAC3B,KAAQ,4DACR,IAAOjC,IAEuD,IAAKz6K,EAAAA,OAAL,gCAA4F,CAC1J,2BAA8Bm9K,GAC9B,KAAQ,0DACR,IAAO7D,IAE8D,IAAKt5K,EAAAA,OAAL,qCAAwG,CAC7K,2BAA8Bo9K,GAC9B,mBAAqB,EACrB,KAAQ,iEACR,IAAOzC,IAEkD,IAAK36K,EAAAA,OAAL,2BAAkF,CAC3I,oBAAuBq8K,GACvB,cAAiBkB,GACjB,wBAA2BC,GAC3B,cAAiB,CAAC,IAAM,YAAY,KAAO,YAAY,MAAQ,aAAa,KAAO,mBAAmB,OAAS,sBAAsB,GAAK,UAAU,GAAK,sBAAsB,OAAS,sBAAsB,GAAK,wBAAwB,SAAW,wBAAwB,IAAM,sBAAsB,IAAM,sBAAsB,OAAS,sBAAsB,IAAM,gBAAgB,KAAO,gBAAgB,KAAO,mBAAmB,IAAM,cAAc,OAAS,cAAc,IAAM,wBAAwB,MAAQ,wBAAwB,IAAM,mBAC3hB,KAAQ,qDACR,IAAO1C,IAEmD,IAAK96K,EAAAA,OAAL,4BAAoF,CAC9I,UAAa,IACb,gBAAmB67K,EACnB,wBAA2B4B,GAC3B,KAAQ,sDACR,IAAO1C,IAEuD,IAAK/6K,EAAAA,OAAL,+BAA2F,CACzJ,uBAA0Bi9K,GAC1B,8BAAiCG,GACjC,oBAAuBM,GACvB,qBAAwBJ,GACxB,KAAQ,0DACR,IAAOtC,IAEuE,IAAKh7K,EAAAA,OAAL,6CAAyH,CACvM,kBAAqB29K,GACrB,8BAAiCP,GACjC,KAAQ,0EACR,IAAO1C,IAE+D,IAAK16K,EAAAA,OAAL,sCAA0G,CAChL,kBAAqB29K,GACrB,8BAAiCP,GACjC,uBAA0BH,GAC1B,KAAQ,kEACR,IAAOhC,IAEsC,IAAKj7K,EAAAA,OAAL,gBAA2D,CACxG,aAAgBk8K,EAChB,KAAQ,yCACR,IAAOvC,EACP,aAAgB,CAChBwC,KAGmD,IAAKn8K,EAAAA,OAAL,sBAAuE,CAC1H,aAAgBk8K,EAChB,sBAAyB,KACzB,6BAAgC,IAChC,KAAQ,+CACR,IAAOtC,EACP,aAAgB,CAChBwC,MAGoE,IAAKp8K,EAAAA,OAAL,qCAAuG,CAC3K,KAAQ,gEACR,IAAO46K,EACP,aAAgB,CAChByC,MA4HF58I,EAAO5sE,QAAU+pN,+HCjkCjB,iBAEA,WAEMC,EAAY79K,EAAQ,OAK1B,MAAa89K,UAA4C9qC,EAAAA,iBACvD9+K,YAAmBC,GACjBC,MAAMD,GAGS,WAACG,GAChB,GAAIA,EAAO4D,MAAQ6lN,EAAAA,gCAAgCC,OACjD,OAAO,EAET,MAAM,IAAI/oN,MAAM,yDAAyD8oN,EAAAA,gCAAgCC,UAG3F,UAAC1pN,GACf,MAAO,CACLqJ,KAAMkgN,EAAUlgN,GAChBzF,IAAK,eACLg8K,YAAa,EACb5vK,QAAQ,IAjBdzQ,EAAAA,oCAAAA,EAsBA,MAAM8J,EAAO,40VChCb5G,EAAAA,EAAAA,OAAAA,6HCCA,iBAEA,WAEM8mN,EAAY79K,EAAQ,OAK1B,MAAai+K,UAA0CjrC,EAAAA,iBACrD9+K,YAAmBC,GACjBC,MAAMD,GAGS,WAACG,GAChB,GAAIA,EAAO4D,MAAQ6lN,EAAAA,gCAAgCG,KACjD,OAAO,EAET,MAAM,IAAIjpN,MAAM,yDAAyD8oN,EAAAA,gCAAgCG,QAG3F,UAAC5pN,GACf,MAAO,CACLqJ,KAAMkgN,EAAUlgN,GAChBzF,IAAK,aACLg8K,YAAa,EACb5vK,QAAQ,IAjBdzQ,EAAAA,kCAAAA,EAsBA,MAAM8J,EAAO,69CDhCb5G,EAAAA,EAAAA,OAAAA,qHEEA,iBAMA,MAAaonN,UAAkCC,EAAAA,qBA0B7ClqN,YAAmBC,GACjBC,MAAMD,GAGgB,kBAACugL,GACvB,MAAO,CAAE33K,QAAS23K,EAAYx8K,MA/BlCrE,EAAAA,0BAAAA,2gBFRAkD,EAAAA,EAAAA,OAAAA,qJGGA,iBAIA,WACA,WAMA,MAAasnN,UAA4CC,EAAAA,kBACvDpqN,YAAmBC,GACjBC,MAAMD,GAGS,WAACG,GAChB,MAAM,QAAEuG,GAAYvG,EAEpB,IAAKuG,EACH,MAAM,IAAI5F,MAAM,iEAIlB,MAAMuO,EAAgC,GAatC,IAAI,IAAA+oH,YAAW1xH,GAXf,SAAwBgL,GACtB,MAAsB,aAAlBA,EAAKtK,WACHiI,EAAKqC,EAAK/R,SAGd0P,EAAKqC,EAAK/R,QAAS,GACZ,MAMT,MAAM,IAAImB,MAAM,yDAQlB,OAAO,EAGO,UAACX,GAEf,MAAMg3J,EAAQh3J,EAAOg3J,MAAMvpJ,QACxBw8M,IAA6D,IAApBA,EAAKC,aAEjD,MAAO,IAAKlqN,EAAQg3J,OAAO,IAAAmzD,WAAUC,QAAoBpzD,EAAMltJ,UAAW,CAAE9J,EAAOuG,aAQvF,SAAS6jN,EAAcpzD,EAAiC/lB,GAEtD,IAAIo5E,EAAc,IAAKp5E,GACnBq5E,EAAc,IAAKtzD,GACnBuzD,EAA2C,GAC/C,MAAMC,EAAqC,GAC3C,IAAIp9M,GAAQ,EACZ,KAAOk9M,EAAYpkN,OAAS,GAAKkH,EAAOo9M,EAAStkN,QAAQ,CACvDkH,EAAOo9M,EAAStkN,OAChB,IAAK,MAAM+jN,KAAQK,EAGbL,EAAKC,WAAWvgM,MAAKhjB,GAAQ0jN,EAAY1gM,MAAKpjB,GAAWi3H,EAAqBj3H,EAASI,QACzF6jN,EAAS5kN,KAAKqkN,GACdI,EAAcA,EAAYzrM,OAAOqrM,EAAKQ,UAEtCF,EAAe3kN,KAAKqkN,GAGxBK,EAAcC,EACdA,EAAiB,GAEnB,OAAOC,EAcT,SAAgBhtF,EAAqBj3H,EAAqCI,GACxE,MAAMy3H,EAAoC,GAC1C,OAAO,IAAAnG,YAAW1xH,GAAS,CAACgL,EAAMjQ,IACL,aAAvBqF,EAAKrF,GAAK2F,WAGQ,aAAlBsK,EAAKtK,SACAsK,EAAKhE,OAAO5G,EAAKrF,IAGnBiQ,EAAK/R,SAAS4+H,EAAUA,EAAQ7sH,EAAK/R,OAAO+N,OAAO5G,EAAKrF,KAAS88H,EAAQ7sH,EAAK/R,OAASmH,EAAKrF,MAAS,KAjGhH/B,EAAAA,oCAAAA,EAuFAA,EAAAA,qBAAAA,2gBHrGAkD,EAAAA,EAAAA,MAAAA,kIIGA,iBAMA,MAAaioN,UAA+CV,EAAAA,kBAC1DpqN,YAAmBC,GACjBC,MAAMD,GAGS,WAACG,GAEhB,OAAO,EAGO,UAACA,GACf,MAAMg3J,EAAQh3J,EAAOg3J,MAAMvpJ,QAAOw8M,IAA4B,IAApBA,EAAKC,aAC/C,MAAO,IAAKlqN,EAAQg3J,MAAAA,IAZxBz3J,EAAAA,uCAAAA,2gBJTAkD,EAAAA,EAAAA,OAAAA,+LKCA,iBAEA,WAIA,WACA,WACA,WACA,WAMA,MAAakoN,UAAsCC,EAAAA,uBACjDhrN,YAAmBC,GACjBC,MAAMD,GAGS,WAACG,GAChB,IAAKA,EAAOM,QAAQ+H,IAAIohN,EAAAA,cAAcpgN,QAAUrJ,EAAOM,QAAQ+H,IAAIohN,EAAAA,cAAczyD,OAC/E,MAAM,IAAIr2J,MAAM,mCAElB,OAAO,EAGW,cAACX,GACnB,MAAM,QAAEM,EAAF,MAAW02J,GAAUh3J,EACrB+gC,EAAQ,IAAI0tK,EAAAA,MAClB,IAAIrhM,EAAO,EACX,EAAG,CACDA,EAAO2zB,EAAM3zB,KAEb,MAAMqjL,EAAmBo6B,EAAsB7zD,EAAO72J,KAAK2qN,gBAAgBxqN,GAAS2oB,QAC9E,QAAEthB,SAAkBxH,KAAK4qN,kBAAkB,CAAEt6B,iBAAkBA,EAAiBniJ,QAAShuC,QAAAA,UACzF6K,QAAQ4nB,IAAI,CAAEprB,UAAiB,IAAAizM,uBAAsB75K,EAAMqtK,OAAO3d,EAAiBniJ,kBAClFvN,EAAM3zB,KAAOA,IAW1B,SAAgBy9M,EACd7zD,EAAqF/tI,GAKrF,OAAO,IAAI0zJ,EAAAA,cACT3lB,EAAM7wJ,KAAK8jN,GAAuCe,EAAiCf,EAAMhhM,KACzF,CAAEw0J,WAAW,IAKjB,SAAgButC,EAAiCC,EAA0ChiM,GAEzF,MAAMwrF,GAAY,IAAAmzE,QAAOqjC,GAAYv9F,UAAwE,CAC3G+vD,WAAW,EACX/vD,UAAUu8F,EAAoD/0H,EAAMtvF,GAClE,IAAIy4L,GAAmC,IAAAzW,QAAO,IAC9C,KAAOqiC,GACL5rB,EAAW4rB,EAAKQ,QAAQ/wM,QACtB,CAACpM,EAAUm9M,IAAY,IAAI9tC,EAAAA,cAAcrvK,EAASnH,KAChDi4H,IACE,MAAM8sF,EAAQC,EAAeV,EAASrsF,GACtC,OAAOn1G,EAAMiiM,GAAO/kN,KAAIQ,IACtB,IAAIykN,EAAoC,GAYxC,OAVA,IAAAzuF,cAAauuF,GAAO,CAAC35M,EAAMjQ,KACH,aAAlBiQ,EAAKtK,UAA2BmkN,IAC9B75M,EAAK/R,SAAS4rN,IAAiBA,EAAa75M,EAAK/R,OAAO+N,OAAO5G,EAAKrF,IACtE8pN,OAAenpN,EAEfmpN,EAAa75M,EAAK/R,OAASmH,EAAKrF,OAK/B8pN,GAAgB/rN,OAAO4W,OAAOm1M,EAAchtF,MAClD3wH,QAAiB49M,QAA+CppN,IAAbopN,OAEvD,CAAE5tC,WAAW,KAChB4gB,GAEFz4L,EAAK,CACHskN,WAAYD,EAAKC,WAGjB7rB,SAAU4sB,EAAWr0K,KAAOynJ,EAAS/vJ,QAAU+vJ,KAG7C4rB,EAAOA,EAAKrzK,QACdynJ,EAAWA,EAAS/vJ,SAGxB4mD,OAED/uF,KAAI,EAAGk4L,SAAAA,EAAU6rB,WAAAA,KAAiB,IAAIvtC,EAAAA,cACvCutC,EAAW/jN,KACTQ,IAASujN,EAAWhkN,OAAS,EAAIm4L,EAAS/vJ,QAAU+vJ,GAAUl4L,KAAIi4H,GAAW+sF,EAAexkN,EAAMy3H,OAEpG,CAAEq/C,WAAW,MAEf,OAAO,IAAId,EAAAA,cAAcloE,EAAW,CAAEgpE,WAAW,IAGnD,SAAgB0tC,EAAe55M,EAAgB6sH,GAC7C,OAAO,IAAA5B,UAASjrH,GAAMy7D,GAA0B,aAAlBA,EAAK/lE,UAA2B+lE,EAAKxtE,SAAS4+H,EAAUA,EAAQpxD,EAAKxtE,OAASwtE,IAnG9GztE,EAAAA,8BAAAA,EAiCAA,EAAAA,gBAAAA,EAaAA,EAAAA,iCAAAA,EAoDAA,EAAAA,eAAAA,2gBLlHAkD,EAAAA,EAAAA,OAAAA,uIMCA,iBAIA,WAKA,MAAa6oN,UAAoDC,EAAAA,oCAG/D3rN,YAAmBC,GACjBC,MAAMD,GAGiB,mBAACG,GAExB,MAAMM,GAAU,IAAAkrN,+BAA8BxrN,EAAOM,UAG/C,QAAEqH,SAAkBxH,KAAKsrN,kBAAkB1nN,QAAQ,CAAEzD,QAAAA,EAASiG,QAASvG,EAAOuG,UAGpF,aADMoB,IACC,IAAK3H,EAAQM,SAAS,IAAAorN,gBAAeprN,KAfhDf,EAAAA,4CAAAA,2gBNVAkD,EAAAA,EAAAA,OAAAA,gIOCA,iBAMA,WAIA,WACA,WACA,WAEM,aAAE+xH,EAAF,SAAgB9tH,GAAa+nM,EAAAA,YAE7B18L,EAAU,IAAIV,EAAAA,QAKpB,MAAas6M,UAA6CC,EAAAA,6BAIxDhsN,YAAmBC,GACjBC,MAAMD,GAGS,WAACG,GAEhB,aADoBG,KAAK0rN,uBAAuB3xM,aAAala,IAChDsY,KAAKtY,GAGJ,UAACA,GAGf,MAAM8rN,EAAoB/rN,MAAAA,IACxB,MAAM,KAAEsJ,SAAelJ,KAAK4rN,8BAA8BhoN,QAAQ,CAChEzD,QAASN,EAAOM,QAChBiG,QAASwL,EAAQG,cAAcxL,EAAS,MAAOA,EAAS,MAAOA,EAAS,MAAOM,KAEjF,OAAOqC,GAGTtJ,eAAeisN,EAAqBxyE,GAElC,OAAQA,GACN,IAAK,MACH,OAAOsyE,EAAkBt3F,KAC3B,IAAK,QACH,aAAcs3F,EAAkBplN,EAAS,QAAQ+G,QAAO9G,IAASA,EAAKK,MAAMuG,OAAOinH,OACrF,QACE,GAAIv4G,MAAMC,QAAQs9H,GAAS,CAEzB,MAAM/kC,QAAkBtpG,QAAQ4nB,IAAIymH,EAAOrzI,KAAIa,GAAS8kN,EAAkB9kN,MAC1E,OAAO,IAAI21K,EAAAA,cAAwBloE,EAAW,CAAEgpE,WAAW,IAE7D,OAAOquC,EAAkBtyE,IAI/B,MAAO,CACL7xI,QAAS5H,UACP,MAAM2wL,EAAmB,CACvB1wL,EAAO4vL,cAAcp2C,cAAgBwyE,EAAqBhsN,EAAO4vL,aAAap2C,QAC9Ex5I,EAAO0wL,kBAAkBpiJ,SACzB7gC,QAAQW,QAA0CnM,IAANmM,KAEtCzG,QAASskN,SAA2B9rN,KAAKsrN,kBAAkB1nN,QAAQ,CACzEzD,SAAS,IAAAkrN,+BAA8BxrN,EAAOM,SAC9Co1I,QAAS,CACPg7C,iBAAkB,IAAI/T,EAAAA,cAAwB+T,EAAkB,CAAEjT,WAAW,IAC7EgT,iBAAkBzwL,EAAOywL,kBAAkBniJ,iBAKzC29K,IAGN,MAAM,QAAEtkN,SAAkBxH,KAAK0rN,uBAAuB9nN,QAAQ,IACzD/D,EAGHywL,iBAAkBzwL,EAAOywL,kBAAkBniJ,QAC3CoiJ,iBAAkB1wL,EAAO0wL,kBAAkBpiJ,gBAIvC3mC,OArEdpI,EAAAA,qCAAAA,2gBPtBAkD,EAAAA,EAAAA,OAAAA,wJQIA,gBAIA,WACA,WACA,WACA,WAEM,KAAEkE,EAAF,SAAQD,GAAa+nM,EAAAA,YAK3B,MAAayd,UAA4BC,EAAAA,8BAavCvsN,YAAmBC,GACjBC,MAAMD,GAGc,gBAACG,EAA0ByB,EAAmBnB,GAElE,IAAI0e,EAAS,GA0Bb,MAAO,CAAE3V,MAvBW,IAAAskB,MAAa3tB,EAAOqJ,MAAMlD,KAAI0iF,GAASA,EAAM76E,aAAY0/G,UAAkB,CAC7FA,UAAUrkH,EAAM6rF,EAAMtvF,GACpB,IAAK,MAAMgsH,KAAQvoH,EACJ,OAATuoH,EACa,KAAX5yG,IACFpZ,EAAKoZ,GACLA,EAAS,IAGXA,GAAU4yG,EAMC,KAAX5yG,IACFpZ,EAAKoZ,GACLA,EAAS,IAEXk2E,OAIqE/uF,KAAIimN,GAAcC,EAAUD,OA7CzG7sN,EAAAA,oBAAAA,EAiDA,MAAM+sN,EAAS,2CAEf,SAAgBD,EAAUE,GACxB,MAAQ9B,EAASP,GAAeqC,EAAQtrM,MAAM,MACxCurM,EAAe/B,EAAQxhM,MAAMqjM,GAC7BG,EAAkBvC,EAAWjhM,MAAMqjM,GAGzC,GAAqB,OAAjBE,GAA6C,OAApBC,EAC3B,MAAM,IAAI9rN,MAAM,iBAAiB4rN,KAGnC,MAAO,CACLG,SAAU,OACVjC,QAASkC,EAAaH,GACtBtC,WAAmC,UAAvBuC,EAAgB,IAAyBE,EAAaF,IAItE,SAAgBE,EAAah1E,GAC3B,OAAOA,EAAQxxI,KAAI83I,GAAU2uE,EAAY3uE,KAG3C,SAAgB2uE,EAAY3uE,GAC1B,MAAQp3I,EAASC,EAAWC,GAAWk3I,EAAOh9H,MAAM,KACpD,OAAO,IAAA4rM,YACLlmN,EAAmBmmN,EAAejmN,GAAUimN,EAAehmN,GAAYgmN,EAAe/lN,GAAS,IAAI0nM,EAAAA,eAxBvGlvM,EAAAA,UAAAA,EAiBAA,EAAAA,aAAAA,EAIAA,EAAAA,YAAAA,EAOA,MAAMs4I,EAAmC,CACvCk1E,IAAK,iCACLC,IAAK,8CACLpD,KAAM,wCACNqD,IAAK,gDAGP,SAASH,EAAettN,GACtB,MAAMyhB,EAAQzhB,EAAMyhB,MAAM,KAC1B,GAAIA,EAAM/a,QAAU,EAAG,CACrB,MAAM46B,EAAS7f,EAAM,GACjB6f,KAAU+2G,IACZr4I,EAAQq4I,EAAS/2G,GAAUthC,EAAMgkB,MAAMsd,EAAO56B,OAAS,IAG3D,OAAO,IAAAy1H,cAAan8H,6gBRhHtBiD,EAAAA,EAAAA,OAAAA,sHSGA,iBAEA,WAEA,WACA,WAKA,MAAayqN,UAAmCC,EAAAA,uBAO9CvtN,YAAmBC,GACjBC,MAAMD,GACN,MAAMutG,EAAQjtG,KAAKitG,MAAQjtG,KAAKysL,UAC9B,IAAIooB,EAAqC,CAAE3lK,IAAKlvC,KAAKysL,iBACrD3qL,EACEmrG,GACFjtG,KAAK+0M,gBAAgBC,uBACnB,EAAGvxM,IAAAA,KAAiCA,EAAMwpG,EAAMppG,OAAOJ,GAAOwpG,EAAMv6B,UAKzD,WAAC7yE,GAMhB,OAAO,EAGCs1M,UAAUh1M,GAClB,MAAMsD,EAAMtD,EAAQkC,IAAYinN,EAAAA,cAAczyD,OAE9C,IAAKpzJ,EACH,MAAM,IAAIjD,MAAM,4BAGlB,IAAI0U,EAASlV,KAAKitG,OAAO5qG,IAAIoB,GAS7B,OAPKyR,IAEHA,EAAS,IAAI+3M,EAAAA,mBAAmB9sN,EAASsD,EAAKzD,MAE9CA,KAAKitG,OAAO1nG,IAAI9B,EAAKyR,IAGhBA,GA5CX9V,EAAAA,2BAAAA,6GCTA,iBAMAA,EAAAA,mBAAA,MAGEK,YACkBU,EACAsD,EACA6zM,GAFA,KAAAn3M,QAAAA,EACA,KAAAsD,IAAAA,EACA,KAAA6zM,UAAAA,EAKXj1M,MACL,GAAIrC,KAAKitG,MACP,OAAO,IAAA+8G,WAAUhqN,KAAKitG,OAGxB,MAAM9pE,GAAQ,IAAA3V,MAAWxtB,KAAKs3M,UAAU4V,wBAAwBtpN,QAAQ,CACtEH,IAAKzD,KAAKyD,IACVtD,QAASH,KAAKG,UACbgM,MAAK,EAAGjD,KAAAA,KAAWA,KAGtB,OADAlJ,KAAKitG,MAAQ,GACN9pE,EAAMn9B,KAAI8jN,IACf9pN,KAAKitG,OAAOxnG,KAAKqkN,GACVA,ghBVlCbxnN,EAAAA,EAAAA,OAAAA,GACAA,EAAAA,EAAAA,OAAAA,gHWIA,iBAkBA,MAAsB6qN,UACpB5uC,EAAAA,sBAIA9+K,YAAmBC,GACjBC,MAAMD,IANVN,EAAAA,qBAAAA,2gBXvBAkD,EAAAA,EAAAA,OAAAA,4GYCA,gBAiBA,MAAsB8qN,UAA0B7tN,EAAAA,MAI9CE,YAAmBC,GACjBC,MAAMD,IALVN,EAAAA,kBAAAA,2gBZlBAkD,EAAAA,EAAAA,MAAAA,sVaAA,gBAEA,UACA,WAOA,SAAgB+qN,EAAuBltN,GACrC,MAAMmtN,EAAiBntN,EAAQkC,IAAqBinN,EAAAA,cAAc+D,wBAClE,IAAKC,EACH,MAAM,IAAI9sN,MAAM,6BAA6B8oN,EAAAA,cAAc+D,uBAAuBnqN,QAEpF,OAAOoqN,IAGT,SAAgBC,EAAqBptN,GACnC,MAAO,CACL29L,QAASuvB,EAAuBltN,GAChC6wB,OAAQ,CAAE7qB,KAAM,OAAQqnN,UAAU,GAClCrtN,QAAS,IAAIZ,EAAAA,eAKjB,SAAgBkuN,EAAYttN,GAC1B,MAAM+I,EAAiC/I,EAAQkC,IAAIinN,EAAAA,cAAcpgN,MACjE,IAAKA,EACH,MAAM,IAAI1I,MAAM,iBAAiB8oN,EAAAA,cAAcpgN,KAAKhG,sCAEtD,OAAOgG,EAGT,SAAgBwkN,EAAkBvtN,GAChC,OAAOstN,EAAYttN,GAAS29L,QAG9B,SAAgB6vB,EAAmBxtN,GACjC,OAAOA,EAAQ+H,IAAIrF,EAAAA,0BAA0BqS,QAC3C,CAAE/U,EAAQkC,IAAIQ,EAAAA,0BAA0BqS,SACxC/U,EAAQkC,IAAIQ,EAAAA,0BAA0BoS,UAAY,GAGtD,SAAgB24M,EAAgBztN,GAC9B,MAAO,IAAKwtN,EAAmBxtN,GAAUutN,EAAkBvtN,IApC7Df,EAAAA,uBAAAA,EAQAA,EAAAA,qBAAAA,EASAA,EAAAA,YAAAA,EAQAA,EAAAA,kBAAAA,EAIAA,EAAAA,mBAAAA,EAMAA,EAAAA,gBAAAA,EAIAA,EAAAA,uBAAA,SAAuCe,GACrC,OAAOA,EAAQoF,IAAI1C,EAAAA,mBAAmBsS,YAAau4M,EAAkBvtN,KAGvEf,EAAAA,kBAAA,SAAkCe,GAChC,OAAOA,EACJ0D,OAAOhB,EAAAA,0BAA0BoS,SACjC1P,IAAI1C,EAAAA,0BAA0BqS,OAAQw4M,EAAkBvtN,KAG7Df,EAAAA,eAAA,SAA+Be,GAC7B,OAAOA,EAAQ0D,OAAOhB,EAAAA,0BAA0BqS,QAC7C3P,IAAI1C,EAAAA,0BAA0BoS,QAAS24M,EAAgBztN,KAG5Df,EAAAA,8BAAA,SAA8Ce,GAG5C,OAAOA,EAAQ+H,IAAIohN,EAAAA,cAAcpgN,MAAQ/I,EAAUA,EAAQoF,IAAI+jN,EAAAA,cAAcpgN,KAAMqkN,EAAqBptN,KAG1Gf,EAAAA,mBAAA,SAAmCe,EAAyB6wB,GAE1D,OADAy8L,EAAYttN,GAAS6wB,OAASA,EACvB7wB,GAcT,MAAsB0tN,UAAuBtuN,EAAAA,MAI3CE,YAAmBC,GACjBC,MAAMD,IALVN,EAAAA,eAAAA,iHC5EA,iBACA,WAGA,WAIA,MAAsB0uN,UAA+BC,EAAAA,eASnDtuN,YAAmBC,GACjBC,MAAMD,GAGyB,wBAACsuN,GAChC,OAAOhuN,KAAK0rN,uBAAuB9nN,QAAQoqN,GAGZ,wBAACnuN,GAChC,OAAOG,KAAKiuN,kBAAkB,IAAKpuN,EAAQM,SAAS,IAAA+tN,wBAAuBruN,EAAOM,WAG1EguN,mBAAmBhuN,GAG3B,MAAO,CACL2oB,MAAQ1iB,IAAsD,IAAAonB,MAC5DxtB,KAAK4rN,8BAA8BhoN,QAAQ,CAAEzD,QAAAA,EAASiG,QAAAA,IAAW+F,MAAK,EAAGjD,KAAAA,KAAWA,MAYhFyhN,gBAAgBxqN,GACxB,OAAOH,KAAKmuN,oBAAmB,IAAA5C,gBAAeprN,IAIzCiuN,SAASvuN,GAMd,OAAO,IAAA2tB,MALU5tB,WACf,MAAM,KAAEsJ,SAAelJ,KAAKquN,oBAAoBzqN,QAAQ/D,IAClD,MAAEg3J,SAAgB72J,KAAKsuN,qBAAqB1qN,QAAQ,CAAEizJ,MAAO3tJ,KAASrJ,IAC5E,OAAOg3J,GAESu3D,IAGJ,UAACvuN,GACf,MAAO,CACL2H,QAAS5H,UACP,MAAM,QAAE21I,EAAF,QAAWnvI,GAAYvG,EACzB01I,IAEF,IAAAg5E,oBAAmB1uN,EAAOM,QAAS,CAAEgG,KAAM,OAAQqnN,UAAU,IAG/D,MAAM,OAAEx8L,IAAW,IAAAy8L,aAAY5tN,EAAOM,SAGtC,GAAoB,SAAhB6wB,EAAO7qB,MAAmB6qB,EAAOw8L,SACnC,OAAOx8L,EAAO+jE,KAKhB,SAASy5H,EAAqBC,EAAyBjoN,GACrD,MAAMy3H,EAAoC,GAgB1C,OAfA,SAASn1G,EAAMo1G,EAAwBC,GACrC,OAAO,IAAArG,YAAWoG,GAAU,CAAC9sH,EAAMjQ,KACjC,OAAQiQ,EAAKtK,UACX,IAAK,OACH,MAA+B,SAAxBq3H,EAAMh9H,GAAK2F,UAAuBgiB,EAAM1X,EAAqB+sH,EAAMh9H,IAC5E,IAAK,WAEH,OAAOiQ,EAAK/R,SAAS4+H,EACnBA,EAAQ7sH,EAAK/R,OAAO+N,OAAO+wH,EAAMh9H,KAChC88H,EAAQ7sH,EAAK/R,OAAS8+H,EAAMh9H,MAAS,EAC1C,QACE,OAAOiQ,EAAKhE,OAAO+wH,EAAMh9H,QAI1B2nB,CAAM2lM,EAAWjoN,GAK1B,GAAoB,YAAhBwqB,EAAO7qB,MAAsBC,EAC/B,IAAK,MAAQjF,EAAK9B,KAAW2xB,EAAO8/G,SAClC,GAAIzxI,EAAMmuN,UAAYgB,EAAqBrtN,EAAKiF,GAC9C,OAAO/G,EAAM01F,KAInB/0F,KAAK+W,QAAQlX,EAAOM,QAAS,0BAC7B,MAAMuuN,EAAgB1uN,KAAKwH,QAAQ,IAAK3H,EAAQg3J,YAAa72J,KAAKouN,SAASvuN,GAAQ8J,YAEnF,GAAIvD,EAAS,CAEX,MAAM0qI,EAA6D,YAAhB9/G,EAAO7qB,KAAqB6qB,EAAO8/G,SAAW,IAAIjsI,KACrG,IAAA0pN,oBAAmB1uN,EAAOM,QAAS,CACjCgG,KAAM,UACN2qI,SAAUA,EAASvrI,IAAIa,EAAS,CAAED,KAAM,OAAQqnN,UAAU,EAAMz4H,KAAM25H,WAGxE,IAAAH,oBAAmB1uN,EAAOM,QAAS,CAAEgG,KAAM,OAAQqnN,UAAU,EAAMz4H,KAAM25H,IAG3E,OAAOA,KAjHftvN,EAAAA,uBAAAA,2gBdlBAkD,EAAAA,EAAAA,OAAAA,GACAA,EAAAA,EAAAA,OAAAA,+HeGA,gBAaA,MAAsBqsN,UACpBpvN,EAAAA,MAMAE,YAAmBC,GACjBC,MAAMD,GAGS,WAACG,GAChB,OAAO,EAMO,UAACA,GACf,OAAOG,KAAK4rN,8BAA8BhoN,cAAc5D,KAAK4uN,aAAa/uN,KAnB9ET,EAAAA,oCAAAA,2gBfjBAkD,EAAAA,EAAAA,OAAAA,wHgBMA,gBAeA,MAAsBusN,UACpBtvN,EAAAA,MAMAE,YAAmBC,GACjBC,MAAMD,IARVN,EAAAA,6BAAAA,2gBhBrBAkD,EAAAA,EAAAA,OAAAA,0GiBYA,iBAkBA,MAAsBwsN,UACpBt7M,EAAAA,wBAIA/T,YAAmBC,GACjBC,MAAMD,IANVN,EAAAA,eAAAA,wHC9BA,iBAcA,MAAsB2vN,UAAsCv7M,EAAAA,6BAO1D/T,YAAmBC,GACjBC,MAAMD,GAIsB,wBAACG,GAC7B,OAAO,GAbXT,EAAAA,8BAAAA,0gBlBdAkD,EAAAA,EAAAA,OAAAA,GACAA,EAAAA,EAAAA,OAAAA,4GmBDA,gBAgBA,MAAsB0sN,UAAyBzvN,EAAAA,MAI7CE,YAAmBC,GACjBC,MAAMD,IALVN,EAAAA,iBAAAA,iHCXA,iBAQA,MAAsB6vN,UAA+BC,EAAAA,iBACnDzvN,YAAmBC,GACjBC,MAAMD,GAKQ,UAACG,GACf,MAAO,CAAEqJ,KAAMlJ,KAAKm1M,UAAUt1M,EAAOM,SAASkC,QARlDjD,EAAAA,uBAAAA,2gBpBbAkD,EAAAA,EAAAA,OAAAA,GACAA,EAAAA,EAAAA,OAAAA,2IADA,gBAGalD,EAAAA,cAAgB,CAI3B8J,KAAM,IAAI3J,EAAAA,iBAA+B,iCAIzCs3J,MAAO,IAAIt3J,EAAAA,iBAAyB,kCAIpC8tN,uBAAwB,IAAI9tN,EAAAA,iBAAkC,oDAGnDH,EAAAA,gCAAkC,CAC7CqqN,KAAM,oDACNF,OAAQ,6EqBpBV,OAAC,SAAW4F,GACV,aAkDA,IAAIC,EACFC,EAAY,6CACZC,EAAW/vM,KAAKsG,KAChB0pM,EAAYhwM,KAAKC,MAEjBgwM,EAAiB,qBACjBC,EAAgBD,EAAiB,yDAEjCE,EAAO,KACPC,EAAW,GACXC,EAAmB,iBAEnBC,EAAW,CAAC,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MAC7EC,EAAY,IAKZC,EAAM,IAmoFR,SAASC,EAASthM,GAChB,IAAI9V,EAAQ,EAAJ8V,EACR,OAAOA,EAAI,GAAKA,IAAM9V,EAAIA,EAAIA,EAAI,EAKpC,SAASq3M,EAAczsM,GAMrB,IALA,IAAIqG,EAAG8T,EACL/kB,EAAI,EACJkkB,EAAItZ,EAAEzd,OACNoxB,EAAI3T,EAAE,GAAK,GAEN5K,EAAIkkB,GAAI,CAGb,IAFAjT,EAAIrG,EAAE5K,KAAO,GACb+kB,EAAIgyL,EAAW9lM,EAAE9jB,OACV43B,IAAK9T,EAAI,IAAMA,GACtBsN,GAAKtN,EAIP,IAAKiT,EAAI3F,EAAEpxB,OAA8B,KAAtBoxB,EAAEnW,aAAa8b,KAElC,OAAO3F,EAAE9T,MAAM,EAAGyZ,EAAI,GAAK,GAK7B,SAAS6kC,EAAQ1zD,EAAGqf,GAClB,IAAI9J,EAAGC,EACLysM,EAAKjiN,EAAE8S,EACPovM,EAAK7iM,EAAEvM,EACPnI,EAAI3K,EAAE4b,EACNiT,EAAIxP,EAAEzD,EACNjoB,EAAIqM,EAAEwgB,EACN4I,EAAI/J,EAAEmB,EAGR,IAAK7V,IAAMkkB,EAAG,OAAO,KAMrB,GAJAtZ,EAAI0sM,IAAOA,EAAG,GACdzsM,EAAI0sM,IAAOA,EAAG,GAGV3sM,GAAKC,EAAG,OAAOD,EAAIC,EAAI,GAAKqZ,EAAIlkB,EAGpC,GAAIA,GAAKkkB,EAAG,OAAOlkB,EAMnB,GAJA4K,EAAI5K,EAAI,EACR6K,EAAI7hB,GAAKy1B,GAGJ64L,IAAOC,EAAI,OAAO1sM,EAAI,GAAKysM,EAAK1sM,EAAI,GAAK,EAG9C,IAAKC,EAAG,OAAO7hB,EAAIy1B,EAAI7T,EAAI,GAAK,EAKhC,IAHAsZ,GAAKl7B,EAAIsuN,EAAGnqN,SAAWsxB,EAAI84L,EAAGpqN,QAAUnE,EAAIy1B,EAGvCze,EAAI,EAAGA,EAAIkkB,EAAGlkB,IAAK,GAAIs3M,EAAGt3M,IAAMu3M,EAAGv3M,GAAI,OAAOs3M,EAAGt3M,GAAKu3M,EAAGv3M,GAAK4K,EAAI,GAAK,EAG5E,OAAO5hB,GAAKy1B,EAAI,EAAIz1B,EAAIy1B,EAAI7T,EAAI,GAAK,EAOvC,SAAS4sM,EAAS1hM,EAAG0gB,EAAKF,EAAKhsC,GAC7B,GAAIwrB,EAAI0gB,GAAO1gB,EAAIwgB,GAAOxgB,IAAM6gM,EAAU7gM,GACxC,MAAMluB,MACJgvN,GAAkBtsN,GAAQ,aAA2B,iBAALwrB,EAC7CA,EAAI0gB,GAAO1gB,EAAIwgB,EAAM,kBAAoB,oBACzC,6BAA+B/uB,OAAOuO,IAM/C,SAAS2hM,EAAM3hM,GACb,IAAI9sB,EAAI8sB,EAAE3N,EAAEhb,OAAS,EACrB,OAAOiqN,EAASthM,EAAED,EAAIkhM,IAAa/tN,GAAK8sB,EAAE3N,EAAEnf,GAAK,GAAK,EAIxD,SAASy5H,EAAc/nG,EAAK7E,GAC1B,OAAQ6E,EAAIvtB,OAAS,EAAIutB,EAAI+c,OAAO,GAAK,IAAM/c,EAAIjQ,MAAM,GAAKiQ,IAC5D7E,EAAI,EAAI,IAAM,MAAQA,EAI1B,SAAS6hM,EAAah9L,EAAK7E,EAAGkP,GAC5B,IAAIja,EAAK6sM,EAGT,GAAI9hM,EAAI,EAAG,CAGT,IAAK8hM,EAAK5yL,EAAI,MAAOlP,EAAG8hM,GAAM5yL,GAC9BrK,EAAMi9L,EAAKj9L,OAOX,KAAM7E,GAHN/K,EAAM4P,EAAIvtB,QAGK,CACb,IAAKwqN,EAAK5yL,EAAGlP,GAAK/K,IAAO+K,EAAG8hM,GAAM5yL,GAClCrK,GAAOi9L,OACE9hM,EAAI/K,IACb4P,EAAMA,EAAIjQ,MAAM,EAAGoL,GAAK,IAAM6E,EAAIjQ,MAAMoL,IAI5C,OAAO6E,EAOT87L,EAzvFA,SAASjhL,EAAMqiL,GACb,IAAIC,EAAKC,EAAaC,EA4kBhBC,EAMAC,EAwqBAC,EACFC,EACAC,EACAC,EACAC,EA7vCFv1L,EAAIyzL,EAAU5sN,UAAY,CAAE/C,YAAa2vN,EAAWvhN,SAAU,KAAMgsC,QAAS,MAC7E1H,EAAM,IAAIi9K,EAAU,GAUpB+B,EAAiB,GAajBC,EAAgB,EAMhBC,GAAc,EAIdC,EAAa,GAMbC,GAAW,IAKXC,EAAU,IAGVC,GAAS,EAkBTC,EAAc,EAIdC,EAAgB,EAGhBC,EAAS,CACPjxL,OAAQ,GACRkxL,UAAW,EACXC,mBAAoB,EACpBC,eAAgB,IAChBC,iBAAkB,IAClBC,kBAAmB,EACnBC,uBAAwB,IACxBC,OAAQ,IAMVC,EAAW,uCACXC,GAAiC,EAgBnC,SAASjD,EAAUz0L,EAAGlX,GACpB,IAAIyvE,EAAUnyE,EAAGuxM,EAAa7jM,EAAG7V,EAAG25M,EAAO7uM,EAAK4P,EAC9CrlB,EAAIjO,KAGN,KAAMiO,aAAamhN,GAAY,OAAO,IAAIA,EAAUz0L,EAAGlX,GAEvD,GAAS,MAALA,EAAW,CAEb,GAAIkX,IAAwB,IAAnBA,EAAE63L,aAYT,OAXAvkN,EAAE4b,EAAI8Q,EAAE9Q,QAEH8Q,EAAE5Z,GAAK4Z,EAAElM,EAAI+iM,EAChBvjN,EAAE8S,EAAI9S,EAAEwgB,EAAI,KACHkM,EAAElM,EAAI8iM,EACftjN,EAAE8S,EAAI,CAAC9S,EAAEwgB,EAAI,IAEbxgB,EAAEwgB,EAAIkM,EAAElM,EACRxgB,EAAE8S,EAAI4Z,EAAE5Z,EAAEsC,UAMd,IAAKkvM,EAAoB,iBAAL53L,IAAsB,EAAJA,GAAS,EAAG,CAMhD,GAHA1sB,EAAE4b,EAAI,EAAI8Q,EAAI,GAAKA,GAAKA,GAAI,GAAK,EAG7BA,MAAQA,EAAG,CACb,IAAKlM,EAAI,EAAG7V,EAAI+hB,EAAG/hB,GAAK,GAAIA,GAAK,GAAI6V,KASrC,YAPIA,EAAI+iM,EACNvjN,EAAE8S,EAAI9S,EAAEwgB,EAAI,MAEZxgB,EAAEwgB,EAAIA,EACNxgB,EAAE8S,EAAI,CAAC4Z,KAMXrH,EAAMnT,OAAOwa,OACR,CAEL,IAAK00L,EAAUl3M,KAAKmb,EAAMnT,OAAOwa,IAAK,OAAOg2L,EAAa1iN,EAAGqlB,EAAKi/L,GAElEtkN,EAAE4b,EAAyB,IAArByJ,EAAItS,WAAW,IAAYsS,EAAMA,EAAIjQ,MAAM,IAAK,GAAK,GAIxDoL,EAAI6E,EAAIxb,QAAQ,OAAS,IAAGwb,EAAMA,EAAI7S,QAAQ,IAAK,MAGnD7H,EAAI0a,EAAIqsG,OAAO,OAAS,GAGvBlxG,EAAI,IAAGA,EAAI7V,GACf6V,IAAM6E,EAAIjQ,MAAMzK,EAAI,GACpB0a,EAAMA,EAAI2D,UAAU,EAAGre,IACd6V,EAAI,IAGbA,EAAI6E,EAAIvtB,YAGL,CAOL,GAJAqqN,EAAS3sM,EAAG,EAAG2uM,EAASrsN,OAAQ,QAIvB,IAAL0d,GAAW4uM,EAEb,OAAO1+L,EADP1lB,EAAI,IAAImhN,EAAUz0L,GACFw2L,EAAiBljN,EAAEwgB,EAAI,EAAG2iM,GAK5C,GAFA99L,EAAMnT,OAAOwa,GAET43L,EAAoB,iBAAL53L,EAAe,CAGhC,GAAQ,EAAJA,GAAS,EAAG,OAAOg2L,EAAa1iN,EAAGqlB,EAAKi/L,EAAO9uM,GAKnD,GAHAxV,EAAE4b,EAAI,EAAI8Q,EAAI,GAAKrH,EAAMA,EAAIjQ,MAAM,IAAK,GAAK,EAGzC+rM,EAAU10C,OAASpnJ,EAAI7S,QAAQ,YAAa,IAAI1a,OAAS,GAC3D,MAAMvF,MACJivN,EAAgB90L,QAGpB1sB,EAAE4b,EAA0B,KAAtByJ,EAAItS,WAAW,IAAasS,EAAMA,EAAIjQ,MAAM,IAAK,GAAK,EAQ9D,IALA6vE,EAAWk/H,EAAS/uM,MAAM,EAAGI,GAC7BgL,EAAI7V,EAAI,EAIH8K,EAAM4P,EAAIvtB,OAAQ6S,EAAI8K,EAAK9K,IAC9B,GAAIs6E,EAASp7E,QAAQiJ,EAAIuS,EAAI+c,OAAOz3B,IAAM,EAAG,CAC3C,GAAS,KAALmI,GAGF,GAAInI,EAAI6V,EAAG,CACTA,EAAI/K,EACJ,eAEG,IAAK4uM,IAGNh/L,GAAOA,EAAI3Y,gBAAkB2Y,EAAMA,EAAII,gBACvCJ,GAAOA,EAAII,gBAAkBJ,EAAMA,EAAI3Y,gBAAgB,CACzD23M,GAAc,EACd15M,GAAK,EACL6V,EAAI,EACJ,SAIJ,OAAOkiM,EAAa1iN,EAAGkS,OAAOwa,GAAI43L,EAAO9uM,GAK7C8uM,GAAQ,GAIH9jM,GAHL6E,EAAMo9L,EAAYp9L,EAAK7P,EAAG,GAAIxV,EAAE4b,IAGnB/R,QAAQ,OAAS,EAAGwb,EAAMA,EAAI7S,QAAQ,IAAK,IACnDgO,EAAI6E,EAAIvtB,OAIf,IAAK6S,EAAI,EAAyB,KAAtB0a,EAAItS,WAAWpI,GAAWA,KAGtC,IAAK8K,EAAM4P,EAAIvtB,OAAkC,KAA1ButB,EAAItS,aAAa0C,KAExC,GAAI4P,EAAMA,EAAIjQ,MAAMzK,IAAK8K,GAAM,CAI7B,GAHAA,GAAO9K,EAGH25M,GAASnD,EAAU10C,OACrBh3J,EAAM,KAAOiX,EAAIi1L,GAAoBj1L,IAAM40L,EAAU50L,IACnD,MAAMn6B,MACJivN,EAAiBxhN,EAAE4b,EAAI8Q,GAI7B,IAAKlM,EAAIA,EAAI7V,EAAI,GAAK44M,EAGpBvjN,EAAE8S,EAAI9S,EAAEwgB,EAAI,UAGP,GAAIA,EAAI8iM,EAGbtjN,EAAE8S,EAAI,CAAC9S,EAAEwgB,EAAI,OACR,CAWL,GAVAxgB,EAAEwgB,EAAIA,EACNxgB,EAAE8S,EAAI,GAMNnI,GAAK6V,EAAI,GAAKkhM,EACVlhM,EAAI,IAAG7V,GAAK+2M,GAEZ/2M,EAAI8K,EAAK,CAGX,IAFI9K,GAAG3K,EAAE8S,EAAEtb,MAAM6tB,EAAIjQ,MAAM,EAAGzK,IAEzB8K,GAAOisM,EAAU/2M,EAAI8K,GACxBzV,EAAE8S,EAAEtb,MAAM6tB,EAAIjQ,MAAMzK,EAAGA,GAAK+2M,IAG9B/2M,EAAI+2M,GAAYr8L,EAAMA,EAAIjQ,MAAMzK,IAAI7S,YAEpC6S,GAAK8K,EAGP,KAAO9K,IAAK0a,GAAO,KACnBrlB,EAAE8S,EAAEtb,MAAM6tB,SAKZrlB,EAAE8S,EAAI,CAAC9S,EAAEwgB,EAAI,GA61BjB,SAASnG,EAAOoG,EAAG9V,EAAG65M,EAAI5vL,GACxB,IAAI6vL,EAAIjkM,EAAGkkM,EAAIjvM,EAAK4P,EAKpB,GAHU,MAANm/L,EAAYA,EAAKrB,EAChBhB,EAASqC,EAAI,EAAG,IAEhB/jM,EAAE3N,EAAG,OAAO2N,EAAE7gB,WAKnB,GAHA6kN,EAAKhkM,EAAE3N,EAAE,GACT4xM,EAAKjkM,EAAED,EAEE,MAAL7V,EACF0a,EAAM28L,EAAcvhM,EAAE3N,GACtBuS,EAAY,GAANuP,GAAiB,GAANA,IAAY8vL,GAAMtB,GAAcsB,GAAMrB,GACpDj2F,EAAc/nG,EAAKq/L,GACnBrC,EAAah9L,EAAKq/L,EAAI,UAezB,GAVAlkM,GAHAC,EAAIiF,EAAM,IAAIy7L,EAAU1gM,GAAI9V,EAAG65M,IAGzBhkM,EAGN/K,GADA4P,EAAM28L,EAAcvhM,EAAE3N,IACZhb,OAOA,GAAN88B,GAAiB,GAANA,IAAYjqB,GAAK6V,GAAKA,GAAK4iM,GAAa,CAGrD,KAAO3tM,EAAM9K,EAAG0a,GAAO,IAAK5P,KAC5B4P,EAAM+nG,EAAc/nG,EAAK7E,QAQzB,GAJA7V,GAAK+5M,EACLr/L,EAAMg9L,EAAah9L,EAAK7E,EAAG,KAGvBA,EAAI,EAAI/K,GACV,KAAM9K,EAAI,EAAG,IAAK0a,GAAO,IAAK1a,IAAK0a,GAAO,WAG1C,IADA1a,GAAK6V,EAAI/K,GACD,EAEN,IADI+K,EAAI,GAAK/K,IAAK4P,GAAO,KAClB1a,IAAK0a,GAAO,KAM3B,OAAO5E,EAAE7E,EAAI,GAAK6oM,EAAK,IAAMp/L,EAAMA,EAKrC,SAASs/L,EAASlzN,EAAMqxB,GAKtB,IAJA,IAAIrC,EACF9V,EAAI,EACJjX,EAAI,IAAIytN,EAAU1vN,EAAK,IAElBkZ,EAAIlZ,EAAKqG,OAAQ6S,IAAK,CAI3B,KAHA8V,EAAI,IAAI0gM,EAAU1vN,EAAKkZ,KAGhBiR,EAAG,CACRloB,EAAI+sB,EACJ,MACSqC,EAAOruB,KAAKf,EAAG+sB,KACxB/sB,EAAI+sB,GAIR,OAAO/sB,EAQT,SAASkxN,EAAUnkM,EAAG3N,EAAG0N,GAKvB,IAJA,IAAI7V,EAAI,EACNkkB,EAAI/b,EAAEhb,QAGAgb,IAAI+b,GAAI/b,EAAEyB,OAGlB,IAAKsa,EAAI/b,EAAE,GAAI+b,GAAK,GAAIA,GAAK,GAAIlkB,KAkBjC,OAfK6V,EAAI7V,EAAI6V,EAAIkhM,EAAW,GAAK6B,EAG/B9iM,EAAE3N,EAAI2N,EAAED,EAAI,KAGHA,EAAI8iM,EAGb7iM,EAAE3N,EAAI,CAAC2N,EAAED,EAAI,IAEbC,EAAED,EAAIA,EACNC,EAAE3N,EAAIA,GAGD2N,EA0DT,SAASiF,EAAM1lB,EAAG6kN,EAAIL,EAAIt7L,GACxB,IAAIhP,EAAGvP,EAAGkkB,EAAGl7B,EAAG8sB,EAAGqkM,EAAIC,EACrB9C,EAAKjiN,EAAE8S,EACPkyM,EAASpD,EAGX,GAAIK,EAAI,CAQNvsM,EAAK,CAGH,IAAKwE,EAAI,EAAGvmB,EAAIsuN,EAAG,GAAItuN,GAAK,GAAIA,GAAK,GAAIumB,KAIzC,IAHAvP,EAAIk6M,EAAK3qM,GAGD,EACNvP,GAAK+2M,EACL7yL,EAAIg2L,EAIJE,GAHAtkM,EAAIwhM,EAAG6C,EAAK,IAGHE,EAAO9qM,EAAI2U,EAAI,GAAK,GAAK,OAIlC,IAFAi2L,EAAKzD,GAAU12M,EAAI,GAAK+2M,KAEdO,EAAGnqN,OAAQ,CAEnB,IAAIoxB,EASF,MAAMxT,EANN,KAAOusM,EAAGnqN,QAAUgtN,EAAI7C,EAAGzqN,KAAK,IAChCipB,EAAIskM,EAAK,EACT7qM,EAAI,EAEJ2U,GADAlkB,GAAK+2M,GACGA,EAAW,MAIhB,CAIL,IAHAjhM,EAAI9sB,EAAIsuN,EAAG6C,GAGN5qM,EAAI,EAAGvmB,GAAK,GAAIA,GAAK,GAAIumB,KAU9B6qM,GAHAl2L,GAJAlkB,GAAK+2M,GAIGA,EAAWxnM,GAGV,EAAI,EAAIuG,EAAIukM,EAAO9qM,EAAI2U,EAAI,GAAK,GAAK,EAmBlD,GAfA3F,EAAIA,GAAK27L,EAAK,GAKC,MAAd5C,EAAG6C,EAAK,KAAej2L,EAAI,EAAIpO,EAAIA,EAAIukM,EAAO9qM,EAAI2U,EAAI,IAEvD3F,EAAIs7L,EAAK,GACLO,GAAM77L,KAAa,GAANs7L,GAAWA,IAAOxkN,EAAE4b,EAAI,EAAI,EAAI,IAC9CmpM,EAAK,GAAW,GAANA,IAAkB,GAANP,GAAWt7L,GAAW,GAANs7L,IAGrC75M,EAAI,EAAIkkB,EAAI,EAAIpO,EAAIukM,EAAO9qM,EAAI2U,GAAK,EAAIozL,EAAG6C,EAAK,IAAM,GAAM,GAC7DN,IAAOxkN,EAAE4b,EAAI,EAAI,EAAI,IAEpBipM,EAAK,IAAM5C,EAAG,GAiBhB,OAhBAA,EAAGnqN,OAAS,EAERoxB,GAGF27L,GAAM7kN,EAAEwgB,EAAI,EAGZyhM,EAAG,GAAK+C,GAAQtD,EAAWmD,EAAKnD,GAAYA,GAC5C1hN,EAAEwgB,GAAKqkM,GAAM,GAIb5C,EAAG,GAAKjiN,EAAEwgB,EAAI,EAGTxgB,EAkBT,GAdS,GAAL2K,GACFs3M,EAAGnqN,OAASgtN,EACZnxN,EAAI,EACJmxN,MAEA7C,EAAGnqN,OAASgtN,EAAK,EACjBnxN,EAAIqxN,EAAOtD,EAAW/2M,GAItBs3M,EAAG6C,GAAMj2L,EAAI,EAAIyyL,EAAU7gM,EAAIukM,EAAO9qM,EAAI2U,GAAKm2L,EAAOn2L,IAAMl7B,EAAI,GAI9Du1B,EAEF,OAAU,CAGR,GAAU,GAAN47L,EAAS,CAGX,IAAKn6M,EAAI,EAAGkkB,EAAIozL,EAAG,GAAIpzL,GAAK,GAAIA,GAAK,GAAIlkB,KAEzC,IADAkkB,EAAIozL,EAAG,IAAMtuN,EACRA,EAAI,EAAGk7B,GAAK,GAAIA,GAAK,GAAIl7B,KAG1BgX,GAAKhX,IACPqM,EAAEwgB,IACEyhM,EAAG,IAAMR,IAAMQ,EAAG,GAAK,IAG7B,MAGA,GADAA,EAAG6C,IAAOnxN,EACNsuN,EAAG6C,IAAOrD,EAAM,MACpBQ,EAAG6C,KAAQ,EACXnxN,EAAI,EAMV,IAAKgX,EAAIs3M,EAAGnqN,OAAoB,IAAZmqN,IAAKt3M,GAAUs3M,EAAG1tM,QAIpCvU,EAAEwgB,EAAI+iM,EACRvjN,EAAE8S,EAAI9S,EAAEwgB,EAAI,KAGHxgB,EAAEwgB,EAAI8iM,IACftjN,EAAE8S,EAAI,CAAC9S,EAAEwgB,EAAI,IAIjB,OAAOxgB,EAIT,SAAS4rC,EAAQnrB,GACf,IAAI4E,EACF7E,EAAIC,EAAED,EAER,OAAU,OAANA,EAAmBC,EAAE7gB,YAEzBylB,EAAM28L,EAAcvhM,EAAE3N,GAEtBuS,EAAM7E,GAAK4iM,GAAc5iM,GAAK6iM,EAC1Bj2F,EAAc/nG,EAAK7E,GACnB6hM,EAAah9L,EAAK7E,EAAG,KAElBC,EAAE7E,EAAI,EAAI,IAAMyJ,EAAMA,GA0pC/B,OAj0EA87L,EAAUjhL,MAAQA,EAElBihL,EAAU8D,SAAW,EACrB9D,EAAU+D,WAAa,EACvB/D,EAAUgE,WAAa,EACvBhE,EAAUiE,YAAc,EACxBjE,EAAUkE,cAAgB,EAC1BlE,EAAUmE,gBAAkB,EAC5BnE,EAAUoE,gBAAkB,EAC5BpE,EAAUqE,gBAAkB,EAC5BrE,EAAUsE,iBAAmB,EAC7BtE,EAAUuE,OAAS,EAqCnBvE,EAAU/zM,OAAS+zM,EAAU7pN,IAAM,SAAU22C,GAC3C,IAAI35C,EAAGo4B,EAEP,GAAW,MAAPuhB,EAAa,CAEf,GAAkB,iBAAPA,EA4HT,MAAM17C,MACJgvN,EAAiB,oBAAsBtzK,GAvFzC,GAlCIA,EAAIz5C,eAAeF,EAAI,oBAEzB6tN,EADAz1L,EAAIuhB,EAAI35C,GACI,EAAGwtN,EAAKxtN,GACpB4uN,EAAiBx2L,GAKfuhB,EAAIz5C,eAAeF,EAAI,mBAEzB6tN,EADAz1L,EAAIuhB,EAAI35C,GACI,EAAG,EAAGA,GAClB6uN,EAAgBz2L,GAOduhB,EAAIz5C,eAAeF,EAAI,qBACzBo4B,EAAIuhB,EAAI35C,KACCo4B,EAAEnY,KACT4tM,EAASz1L,EAAE,IAAKo1L,EAAK,EAAGxtN,GACxB6tN,EAASz1L,EAAE,GAAI,EAAGo1L,EAAKxtN,GACvB8uN,EAAa12L,EAAE,GACf22L,EAAa32L,EAAE,KAEfy1L,EAASz1L,GAAIo1L,EAAKA,EAAKxtN,GACvB8uN,IAAeC,EAAa32L,EAAI,GAAKA,EAAIA,KAOzCuhB,EAAIz5C,eAAeF,EAAI,SAEzB,IADAo4B,EAAIuhB,EAAI35C,KACCo4B,EAAEnY,IACT4tM,EAASz1L,EAAE,IAAKo1L,GAAM,EAAGxtN,GACzB6tN,EAASz1L,EAAE,GAAI,EAAGo1L,EAAKxtN,GACvBgvN,EAAU52L,EAAE,GACZ62L,EAAU72L,EAAE,OACP,CAEL,GADAy1L,EAASz1L,GAAIo1L,EAAKA,EAAKxtN,IACnBo4B,EAGF,MAAMn6B,MACJgvN,EAAiBjtN,EAAI,oBAAsBo4B,GAH7C42L,IAAYC,EAAU72L,EAAI,GAAKA,EAAIA,GAWzC,GAAIuhB,EAAIz5C,eAAeF,EAAI,UAAW,CAEpC,IADAo4B,EAAIuhB,EAAI35C,QACIo4B,EAcV,MAAMn6B,MACJgvN,EAAiBjtN,EAAI,uBAAyBo4B,GAdhD,GAAIA,EAAG,CACL,GAAqB,oBAAVjZ,SAAyBA,SAClCA,OAAO6E,kBAAmB7E,OAAOkyM,YAIjC,MADAnC,GAAU92L,EACJn6B,MACJgvN,EAAiB,sBAJnBiC,EAAS92L,OAOX82L,EAAS92L,EA0Bf,GAhBIuhB,EAAIz5C,eAAeF,EAAI,iBAEzB6tN,EADAz1L,EAAIuhB,EAAI35C,GACI,EAAG,EAAGA,GAClBmvN,EAAc/2L,GAKZuhB,EAAIz5C,eAAeF,EAAI,mBAEzB6tN,EADAz1L,EAAIuhB,EAAI35C,GACI,EAAGwtN,EAAKxtN,GACpBovN,EAAgBh3L,GAKduhB,EAAIz5C,eAAeF,EAAI,UAAW,CAEpC,GAAgB,iBADhBo4B,EAAIuhB,EAAI35C,IAEH,MAAM/B,MACTgvN,EAAiBjtN,EAAI,mBAAqBo4B,GAFlBi3L,EAASj3L,EAOrC,GAAIuhB,EAAIz5C,eAAeF,EAAI,YAAa,CAKtC,GAAgB,iBAJhBo4B,EAAIuhB,EAAI35C,KAIqB,wBAAwB4V,KAAKwiB,GAIxD,MAAMn6B,MACJgvN,EAAiBjtN,EAAI,aAAeo4B,GAJtC03L,EAAmD,cAAlB13L,EAAEtX,MAAM,EAAG,IAC5C+uM,EAAWz3L,GAenB,MAAO,CACLw2L,eAAgBA,EAChBC,cAAeA,EACfyC,eAAgB,CAACxC,EAAYC,GAC7BwC,MAAO,CAACvC,EAASC,GACjBC,OAAQA,EACRC,YAAaA,EACbC,cAAeA,EACfC,OAAQA,EACRQ,SAAUA,IAcdhD,EAAU2E,YAAc,SAAUp5L,GAChC,IAAKA,IAAwB,IAAnBA,EAAE63L,aAAuB,OAAO,EAC1C,IAAKpD,EAAU10C,MAAO,OAAO,EAE7B,IAAI9hK,EAAG8V,EACL3N,EAAI4Z,EAAE5Z,EACN0N,EAAIkM,EAAElM,EACN5E,EAAI8Q,EAAE9Q,EAERlG,EAAK,GAA2B,kBAAvB,GAAG9V,SAASnL,KAAKqe,IAExB,IAAW,IAAN8I,IAAkB,IAAPA,IAAa4E,IAAMshM,GAAOthM,GAAKshM,GAAOthM,IAAM8gM,EAAU9gM,GAAI,CAGxE,GAAa,IAAT1N,EAAE,GAAU,CACd,GAAU,IAAN0N,GAAwB,IAAb1N,EAAEhb,OAAc,OAAO,EACtC,MAAM4d,EASR,IALA/K,GAAK6V,EAAI,GAAKkhM,GACN,IAAG/2M,GAAK+2M,GAIZxvM,OAAOY,EAAE,IAAIhb,QAAU6S,EAAG,CAE5B,IAAKA,EAAI,EAAGA,EAAImI,EAAEhb,OAAQ6S,IAExB,IADA8V,EAAI3N,EAAEnI,IACE,GAAK8V,GAAKghM,GAAQhhM,IAAM6gM,EAAU7gM,GAAI,MAAM/K,EAItD,GAAU,IAAN+K,EAAS,OAAO,SAKnB,GAAU,OAAN3N,GAAoB,OAAN0N,IAAqB,OAAN5E,GAAoB,IAANA,IAAkB,IAAPA,GAC/D,OAAO,EAGT,MAAMrpB,MACHgvN,EAAiB,sBAAwB70L,IAS9Cy0L,EAAU4E,QAAU5E,EAAUlgL,IAAM,WAClC,OAAO0jL,EAAS71M,UAAW4e,EAAEs4L,KAS/B7E,EAAU8E,QAAU9E,EAAUhgL,IAAM,WAClC,OAAOwjL,EAAS71M,UAAW4e,EAAEw4L,KAc/B/E,EAAU/tM,QACJuvM,EAAU,iBAMVC,EAAkBtxM,KAAK8B,SAAWuvM,EAAW,QAC9C,WAAc,OAAOrB,EAAUhwM,KAAK8B,SAAWuvM,IAC/C,WAAc,OAA2C,SAAlB,WAAhBrxM,KAAK8B,SAAwB,IACnC,QAAhB9B,KAAK8B,SAAsB,IAExB,SAAU21C,GACf,IAAIxzC,EAAGC,EAAGgL,EAAG7sB,EAAG+4B,EACd/hB,EAAI,EACJmI,EAAI,GACJqzM,EAAO,IAAIhF,EAAUj9K,GAOvB,GALU,MAAN6kB,EAAYA,EAAKm6J,EAChBf,EAASp5J,EAAI,EAAG+4J,GAErBnuN,EAAI0tN,EAASt4J,EAAK24J,GAEd8B,EAGF,GAAI/vM,OAAO6E,gBAAiB,CAI1B,IAFA/C,EAAI9B,OAAO6E,gBAAgB,IAAI23E,YAAYt8F,GAAK,IAEzCgX,EAAIhX,IAQT+4B,EAAW,OAAPnX,EAAE5K,IAAgB4K,EAAE5K,EAAI,KAAO,MAM1B,MACP6K,EAAI/B,OAAO6E,gBAAgB,IAAI23E,YAAY,IAC3C16E,EAAE5K,GAAK6K,EAAE,GACTD,EAAE5K,EAAI,GAAK6K,EAAE,KAKb1C,EAAEtb,KAAKk1B,EAAI,MACX/hB,GAAK,GAGTA,EAAIhX,EAAI,MAGH,KAAI8f,OAAOkyM,YA2BhB,MADAnC,GAAS,EACHjxN,MACJgvN,EAAiB,sBAvBnB,IAFAhsM,EAAI9B,OAAOkyM,YAAYhyN,GAAK,GAErBgX,EAAIhX,IAMT+4B,EAAmB,iBAAN,GAAPnX,EAAE5K,IAA0C,cAAX4K,EAAE5K,EAAI,GAC9B,WAAX4K,EAAE5K,EAAI,GAAgC,SAAX4K,EAAE5K,EAAI,IACjC4K,EAAE5K,EAAI,IAAM,KAAO4K,EAAE5K,EAAI,IAAM,GAAK4K,EAAE5K,EAAI,KAErC,KACP8I,OAAOkyM,YAAY,GAAGlzJ,KAAKl9C,EAAG5K,IAI9BmI,EAAEtb,KAAKk1B,EAAI,MACX/hB,GAAK,GAGTA,EAAIhX,EAAI,EASZ,IAAK6vN,EAEH,KAAO74M,EAAIhX,IACT+4B,EAAIk2L,KACI,OAAM9vM,EAAEnI,KAAO+hB,EAAI,MAc/B,IAVA/4B,EAAImf,IAAInI,GACRo+C,GAAM24J,EAGF/tN,GAAKo1D,IACPr8B,EAAIk1L,EAASF,EAAW34J,GACxBj2C,EAAEnI,GAAK22M,EAAU3tN,EAAI+4B,GAAKA,GAIZ,IAAT5Z,EAAEnI,GAAUmI,EAAEyB,MAAO5J,KAG5B,GAAIA,EAAI,EACNmI,EAAI,CAAC0N,EAAI,OACJ,CAGL,IAAKA,GAAK,EAAa,IAAT1N,EAAE,GAAUA,EAAEhJ,OAAO,EAAG,GAAI0W,GAAKkhM,GAG/C,IAAK/2M,EAAI,EAAG+hB,EAAI5Z,EAAE,GAAI4Z,GAAK,GAAIA,GAAK,GAAI/hB,KAGpCA,EAAI+2M,IAAUlhM,GAAKkhM,EAAW/2M,GAKpC,OAFAw7M,EAAK3lM,EAAIA,EACT2lM,EAAKrzM,EAAIA,EACFqzM,IAUXhF,EAAUj8G,IAAM,WAId,IAHA,IAAIv6F,EAAI,EACNlZ,EAAOqd,UACPo2F,EAAM,IAAIi8G,EAAU1vN,EAAK,IACpBkZ,EAAIlZ,EAAKqG,QAASotG,EAAMA,EAAIkhH,KAAK30N,EAAKkZ,MAC7C,OAAOu6F,GAQTu9G,EAAc,WACZ,IAAI4D,EAAU,aAOd,SAASC,EAAUjhM,EAAKkhM,EAAQC,EAASvhI,GAOvC,IANA,IAAIp2D,EAEF43L,EADAx0M,EAAM,CAAC,GAEPtH,EAAI,EACJ8K,EAAM4P,EAAIvtB,OAEL6S,EAAI8K,GAAM,CACf,IAAKgxM,EAAOx0M,EAAIna,OAAQ2uN,IAAQx0M,EAAIw0M,IAASF,GAI7C,IAFAt0M,EAAI,IAAMgzE,EAASp7E,QAAQwb,EAAI+c,OAAOz3B,MAEjCkkB,EAAI,EAAGA,EAAI5c,EAAIna,OAAQ+2B,IAEtB5c,EAAI4c,GAAK23L,EAAU,IACH,MAAdv0M,EAAI4c,EAAI,KAAY5c,EAAI4c,EAAI,GAAK,GACrC5c,EAAI4c,EAAI,IAAM5c,EAAI4c,GAAK23L,EAAU,EACjCv0M,EAAI4c,IAAM23L,GAKhB,OAAOv0M,EAAI8sF,UAMb,OAAO,SAAU15E,EAAKkhM,EAAQC,EAASrxM,EAAMuxM,GAC3C,IAAIzhI,EAAU/qE,EAAGsG,EAAG7sB,EAAGu1B,EAAGlpB,EAAGiiN,EAAI5iM,EAC/B1U,EAAI0a,EAAIxb,QAAQ,KAChBk/C,EAAKm6J,EACLsB,EAAKrB,EA+BP,IA5BIx4M,GAAK,IACPhX,EAAI+vN,EAGJA,EAAgB,EAChBr+L,EAAMA,EAAI7S,QAAQ,IAAK,IAEvBxS,GADAqf,EAAI,IAAI8hM,EAAUoF,IACZjkL,IAAIjd,EAAIvtB,OAAS6S,GACvB+4M,EAAgB/vN,EAKhB0rB,EAAEvM,EAAIwzM,EAAUjE,EAAaL,EAAchiN,EAAE8S,GAAI9S,EAAEwgB,EAAG,KACrD,GAAIgmM,EAASH,GACdhnM,EAAEmB,EAAInB,EAAEvM,EAAEhb,QAUZ0oB,EAAI7sB,GALJsuN,EAAKqE,EAAUjhM,EAAKkhM,EAAQC,EAASE,GACjCzhI,EAAWk/H,EAAUkC,IACrBphI,EAAWohI,EAASlC,KAGbrsN,OAGO,GAAXmqN,IAAKtuN,GAASsuN,EAAG1tM,OAGxB,IAAK0tM,EAAG,GAAI,OAAOh9H,EAAS7iD,OAAO,GAqCnC,GAlCIz3B,EAAI,IACJ6V,GAEFxgB,EAAE8S,EAAImvM,EACNjiN,EAAEwgB,EAAIA,EAGNxgB,EAAE4b,EAAIzG,EAEN8sM,GADAjiN,EAAIwiN,EAAIxiN,EAAGqf,EAAG0pC,EAAIy7J,EAAIgC,IACf1zM,EACPoW,EAAIlpB,EAAEkpB,EACN1I,EAAIxgB,EAAEwgB,GASR7V,EAAIs3M,EAHJ/nM,EAAIsG,EAAIuoC,EAAK,GAObp1D,EAAI6yN,EAAU,EACdt9L,EAAIA,GAAKhP,EAAI,GAAkB,MAAb+nM,EAAG/nM,EAAI,GAEzBgP,EAAIs7L,EAAK,GAAU,MAAL75M,GAAaue,KAAa,GAANs7L,GAAWA,IAAOxkN,EAAE4b,EAAI,EAAI,EAAI,IAC1DjR,EAAIhX,GAAKgX,GAAKhX,IAAW,GAAN6wN,GAAWt7L,GAAW,GAANs7L,GAAuB,EAAZvC,EAAG/nM,EAAI,IACtDsqM,IAAOxkN,EAAE4b,EAAI,EAAI,EAAI,IAKxB1B,EAAI,IAAM+nM,EAAG,GAGf58L,EAAM6D,EAAIm5L,EAAap9H,EAAS7iD,OAAO,IAAK2mB,EAAIk8B,EAAS7iD,OAAO,IAAM6iD,EAAS7iD,OAAO,OACjF,CAML,GAHA6/K,EAAGnqN,OAASoiB,EAGRgP,EAGF,MAAOs9L,IAAWvE,IAAK/nM,GAAKssM,GAC1BvE,EAAG/nM,GAAK,EAEHA,MACDsG,EACFyhM,EAAK,CAAC,GAAGzxM,OAAOyxM,IAMtB,IAAKtuN,EAAIsuN,EAAGnqN,QAASmqN,IAAKtuN,KAG1B,IAAKgX,EAAI,EAAG0a,EAAM,GAAI1a,GAAKhX,EAAG0xB,GAAO4/D,EAAS7iD,OAAO6/K,EAAGt3M,OAGxD0a,EAAMg9L,EAAah9L,EAAK7E,EAAGykE,EAAS7iD,OAAO,IAI7C,OAAO/c,GAjJG,GAuJdm9L,EAAM,WAGJ,SAASt6K,EAASloC,EAAGrM,EAAGwgJ,GACtB,IAAIzgJ,EAAGizN,EAAMC,EAAKC,EAChBxtH,EAAQ,EACR1uF,EAAI3K,EAAElI,OACNgvN,EAAMnzN,EAAIkuN,EACVkF,EAAMpzN,EAAIkuN,EAAY,EAExB,IAAK7hN,EAAIA,EAAEoV,QAASzK,KAKlB0uF,IADAstH,EAAOG,GAHPF,EAAM5mN,EAAE2K,GAAKk3M,IAEbnuN,EAAIqzN,EAAMH,GADVC,EAAM7mN,EAAE2K,GAAKk3M,EAAY,GACHiF,GACGjF,EAAaA,EAAaxoH,GACnC86C,EAAO,IAAMzgJ,EAAImuN,EAAY,GAAKkF,EAAMF,EACxD7mN,EAAE2K,GAAKg8M,EAAOxyE,EAKhB,OAFI96C,IAAOr5F,EAAI,CAACq5F,GAAO7oF,OAAOxQ,IAEvBA,EAGT,SAAS0zD,EAAQn+C,EAAGC,EAAGwxM,EAAIC,GACzB,IAAIt8M,EAAGu8M,EAEP,GAAIF,GAAMC,EACRC,EAAMF,EAAKC,EAAK,GAAK,OAGrB,IAAKt8M,EAAIu8M,EAAM,EAAGv8M,EAAIq8M,EAAIr8M,IAExB,GAAI4K,EAAE5K,IAAM6K,EAAE7K,GAAI,CAChBu8M,EAAM3xM,EAAE5K,GAAK6K,EAAE7K,GAAK,GAAK,EACzB,MAKN,OAAOu8M,EAGT,SAAS//K,EAAS5xB,EAAGC,EAAGwxM,EAAI7yE,GAI1B,IAHA,IAAIxpI,EAAI,EAGDq8M,KACLzxM,EAAEyxM,IAAOr8M,EACTA,EAAI4K,EAAEyxM,GAAMxxM,EAAEwxM,GAAM,EAAI,EACxBzxM,EAAEyxM,GAAMr8M,EAAIwpI,EAAO5+H,EAAEyxM,GAAMxxM,EAAEwxM,GAI/B,MAAQzxM,EAAE,IAAMA,EAAEzd,OAAS,EAAGyd,EAAEzL,OAAO,EAAG,KAI5C,OAAO,SAAU9J,EAAGqf,EAAG0pC,EAAIy7J,EAAIrwE,GAC7B,IAAI+yE,EAAK1mM,EAAG7V,EAAGq9I,EAAMvnI,EAAG0mM,EAAMC,EAAO93L,EAAG+3L,EAAIC,EAAKC,EAAMC,EAAMC,EAAIC,EAAIC,EACnEC,EAAIC,EACJjsM,EAAI5b,EAAE4b,GAAKyD,EAAEzD,EAAI,GAAK,EACtBqmM,EAAKjiN,EAAE8S,EACPovM,EAAK7iM,EAAEvM,EAGT,KAAKmvM,GAAOA,EAAG,IAAOC,GAAOA,EAAG,IAE9B,OAAO,IAAIf,EAGTnhN,EAAE4b,GAAMyD,EAAEzD,IAAMqmM,GAAKC,GAAMD,EAAG,IAAMC,EAAG,GAAMA,GAG7CD,GAAe,GAATA,EAAG,KAAYC,EAAS,EAAJtmM,EAAQA,EAAI,EAHa06C,KAoBvD,IAZA+wJ,GADA/3L,EAAI,IAAI6xL,EAAUvlM,IACX9I,EAAI,GAEX8I,EAAImtC,GADJvoC,EAAIxgB,EAAEwgB,EAAInB,EAAEmB,GACC,EAER2zH,IACHA,EAAOstE,EACPjhM,EAAIuhM,EAAS/hN,EAAEwgB,EAAIkhM,GAAYK,EAAS1iM,EAAEmB,EAAIkhM,GAC9C9lM,EAAIA,EAAI8lM,EAAW,GAKhB/2M,EAAI,EAAGu3M,EAAGv3M,KAAOs3M,EAAGt3M,IAAM,GAAIA,KAInC,GAFIu3M,EAAGv3M,IAAMs3M,EAAGt3M,IAAM,IAAI6V,IAEtB5E,EAAI,EACNyrM,EAAG7vN,KAAK,GACRwwJ,GAAO,MACF,CAwBL,IAvBA0/D,EAAKzF,EAAGnqN,OACR8vN,EAAK1F,EAAGpqN,OACR6S,EAAI,EACJiR,GAAK,GAIL6E,EAAI6gM,EAAUntE,GAAQ+tE,EAAG,GAAK,KAItB,IACNA,EAAKh6K,EAASg6K,EAAIzhM,EAAG0zH,GACrB8tE,EAAK/5K,EAAS+5K,EAAIxhM,EAAG0zH,GACrByzE,EAAK1F,EAAGpqN,OACR4vN,EAAKzF,EAAGnqN,QAGV2vN,EAAKG,EAELL,GADAD,EAAMrF,EAAG7sM,MAAM,EAAGwyM,IACP9vN,OAGJyvN,EAAOK,EAAIN,EAAIC,KAAU,GAChCM,EAAK3F,EAAG9sM,QACRyyM,EAAK,CAAC,GAAGr3M,OAAOq3M,GAChBF,EAAMzF,EAAG,GACLA,EAAG,IAAM/tE,EAAO,GAAGwzE,IAIvB,EAAG,CAOD,GANAlnM,EAAI,GAGJymM,EAAMxzJ,EAAQwuJ,EAAIoF,EAAKM,EAAIL,IAGjB,EAAG,CAqBX,GAjBAC,EAAOF,EAAI,GACPM,GAAML,IAAMC,EAAOA,EAAOrzE,GAAQmzE,EAAI,IAAM,KAGhD7mM,EAAI6gM,EAAUkG,EAAOG,IAab,EAcN,IAXIlnM,GAAK0zH,IAAM1zH,EAAI0zH,EAAO,GAI1BizE,GADAD,EAAOj/K,EAASg6K,EAAIzhM,EAAG0zH,IACVr8I,OACbyvN,EAAOD,EAAIxvN,OAM+B,GAAnC47D,EAAQyzJ,EAAMG,EAAKF,EAAOG,IAC/B9mM,IAGA0mB,EAASggL,EAAMS,EAAKR,EAAQS,EAAK3F,EAAIkF,EAAOjzE,GAC5CizE,EAAQD,EAAKrvN,OACbovN,EAAM,OAQC,GAALzmM,IAGFymM,EAAMzmM,EAAI,GAKZ2mM,GADAD,EAAOjF,EAAG9sM,SACGtd,OAUf,GAPIsvN,EAAQG,IAAMJ,EAAO,CAAC,GAAG32M,OAAO22M,IAGpChgL,EAASmgL,EAAKH,EAAMI,EAAMpzE,GAC1BozE,EAAOD,EAAIxvN,QAGC,GAARovN,EAMF,KAAOxzJ,EAAQwuJ,EAAIoF,EAAKM,EAAIL,GAAQ,GAClC9mM,IAGA0mB,EAASmgL,EAAKM,EAAKL,EAAOM,EAAK3F,EAAIqF,EAAMpzE,GACzCozE,EAAOD,EAAIxvN,YAGE,IAARovN,IACTzmM,IACA6mM,EAAM,CAAC,IAITD,EAAG18M,KAAO8V,EAGN6mM,EAAI,GACNA,EAAIC,KAAUtF,EAAGwF,IAAO,GAExBH,EAAM,CAACrF,EAAGwF,IACVF,EAAO,UAEDE,IAAOC,GAAgB,MAAVJ,EAAI,KAAe1rM,KAE1CosI,EAAiB,MAAVs/D,EAAI,GAGND,EAAG,IAAIA,EAAGv9M,OAAO,EAAG,GAG3B,GAAIqqI,GAAQstE,EAAM,CAGhB,IAAK92M,EAAI,EAAGiR,EAAIyrM,EAAG,GAAIzrM,GAAK,GAAIA,GAAK,GAAIjR,KAEzC+a,EAAM4J,EAAGy5B,GAAMz5B,EAAE9O,EAAI7V,EAAI6V,EAAIkhM,EAAW,GAAK,EAAG8C,EAAIx8D,QAIpD14H,EAAE9O,EAAIA,EACN8O,EAAEpG,GAAK8+H,EAGT,OAAO14H,GA9PL,GAgYAuzL,EAAa,8BACfC,EAAW,cACXC,EAAY,cACZC,EAAkB,qBAClBC,EAAmB,6BALvBP,EAOS,SAAU1iN,EAAGqlB,EAAKi/L,EAAO9uM,GAC9B,IAAI2+H,EACFv4H,EAAI0oM,EAAQj/L,EAAMA,EAAI7S,QAAQywM,EAAkB,IAGlD,GAAID,EAAgB94M,KAAK0R,GACvB5b,EAAE4b,EAAI+2C,MAAM/2C,GAAK,KAAOA,EAAI,GAAK,EAAI,MAChC,CACL,IAAK0oM,IAGH1oM,EAAIA,EAAEpJ,QAAQqwM,GAAY,SAAUnvN,EAAGo0N,EAAIC,GAEzC,OADA5zE,EAAkC,MAA1B4zE,EAAKA,EAAGtiM,eAAwB,GAAW,KAANsiM,EAAY,EAAI,EACrDvyM,GAAKA,GAAK2+H,EAAYzgJ,EAALo0N,KAGvBtyM,IACF2+H,EAAO3+H,EAGPoG,EAAIA,EAAEpJ,QAAQswM,EAAU,MAAMtwM,QAAQuwM,EAAW,SAG/C19L,GAAOzJ,GAAG,OAAO,IAAIulM,EAAUvlM,EAAGu4H,GAKxC,GAAIgtE,EAAU10C,MACZ,MAAMl6K,MACHgvN,EAAiB,SAAW/rM,EAAI,SAAWA,EAAI,IAAM,YAAc6P,GAIxErlB,EAAE4b,EAAI,KAGR5b,EAAE8S,EAAI9S,EAAEwgB,EAAI,MA6LhBkN,EAAEs6L,cAAgBt6L,EAAEqX,IAAM,WACxB,IAAI/kC,EAAI,IAAImhN,EAAUpvN,MAEtB,OADIiO,EAAE4b,EAAI,IAAG5b,EAAE4b,EAAI,GACZ5b,GAWT0tB,EAAEu6L,WAAa,SAAU5oM,EAAG7J,GAC1B,OAAOk+C,EAAQ3hE,KAAM,IAAIovN,EAAU9hM,EAAG7J,KAiBxCkY,EAAEw6L,cAAgBx6L,EAAEq7B,GAAK,SAAUA,EAAIy7J,GACrC,IAAI1xM,EAAG2N,EAAGiM,EACR1sB,EAAIjO,KAEN,GAAU,MAANg3D,EAKF,OAJAo5J,EAASp5J,EAAI,EAAG+4J,GACN,MAAN0C,EAAYA,EAAKrB,EAChBhB,EAASqC,EAAI,EAAG,GAEd9+L,EAAM,IAAIy7L,EAAUnhN,GAAI+oD,EAAK/oD,EAAEwgB,EAAI,EAAGgkM,GAG/C,KAAM1xM,EAAI9S,EAAE8S,GAAI,OAAO,KAIvB,GAHA2N,IAAMiM,EAAI5Z,EAAEhb,OAAS,GAAKiqN,EAAShwN,KAAKyuB,EAAIkhM,IAAaA,EAGrDh1L,EAAI5Z,EAAE4Z,GAAI,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAIjM,KAG3C,OAFIA,EAAI,IAAGA,EAAI,GAERA,GAwBTiN,EAAEy6L,UAAYz6L,EAAE80L,IAAM,SAAUnjM,EAAG7J,GACjC,OAAOgtM,EAAIzwN,KAAM,IAAIovN,EAAU9hM,EAAG7J,GAAI0tM,EAAgBC,IAQxDz1L,EAAE06L,mBAAqB16L,EAAE26L,KAAO,SAAUhpM,EAAG7J,GAC3C,OAAOgtM,EAAIzwN,KAAM,IAAIovN,EAAU9hM,EAAG7J,GAAI,EAAG,IAmB3CkY,EAAE46L,gBAAkB56L,EAAE4U,IAAM,SAAU7hB,EAAG/sB,GACvC,IAAI60N,EAAMC,EAAU79M,EAAGhX,EAAS80N,EAAQC,EAAQC,EAAQtpM,EACtDrf,EAAIjO,KAKN,IAHA0uB,EAAI,IAAI0gM,EAAU1gM,IAGZ3N,IAAM2N,EAAE41B,YACZ,MAAM9jD,MACHgvN,EAAiB,4BAA8B31K,EAAQnrB,IAS5D,GANS,MAAL/sB,IAAWA,EAAI,IAAIytN,EAAUztN,IAGjC+0N,EAAShoM,EAAED,EAAI,IAGVxgB,EAAE8S,IAAM9S,EAAE8S,EAAE,IAAgB,GAAV9S,EAAE8S,EAAE,KAAY9S,EAAEwgB,GAAmB,GAAdxgB,EAAE8S,EAAEhb,SAAgB2oB,EAAE3N,IAAM2N,EAAE3N,EAAE,GAK5E,OADAuM,EAAI,IAAI8hM,EAAU7vM,KAAKgxB,KAAKsJ,EAAQ5rC,GAAIyoN,EAAS,EAAIrG,EAAM3hM,IAAMmrB,EAAQnrB,KAClE/sB,EAAI2rB,EAAEmlB,IAAI9wC,GAAK2rB,EAKxB,GAFAqpM,EAASjoM,EAAE7E,EAAI,EAEXloB,EAAG,CAGL,GAAIA,EAAEof,GAAKpf,EAAEof,EAAE,IAAMpf,EAAEkoB,EAAG,OAAO,IAAIulM,EAAU7qJ,MAE/CkyJ,GAAYE,GAAU1oN,EAAEq2C,aAAe3iD,EAAE2iD,eAE3Br2C,EAAIA,EAAEwkC,IAAI9wC,QAInB,IAAI+sB,EAAED,EAAI,IAAMxgB,EAAEwgB,EAAI,GAAKxgB,EAAEwgB,GAAK,IAAa,GAAPxgB,EAAEwgB,EAE7CxgB,EAAE8S,EAAE,GAAK,GAAK21M,GAAUzoN,EAAE8S,EAAE,IAAM,KAElC9S,EAAE8S,EAAE,GAAK,MAAQ21M,GAAUzoN,EAAE8S,EAAE,IAAM,YASvC,OANAnf,EAAIqM,EAAE4b,EAAI,GAAKwmM,EAAM3hM,IAAM,EAAI,EAG3BzgB,EAAEwgB,GAAK,IAAG7sB,EAAI,EAAIA,GAGf,IAAIwtN,EAAUuH,EAAS,EAAI/0N,EAAIA,GAE7B+vN,IAKT/vN,EAAI0tN,EAASqC,EAAgBhC,EAAW,IAe1C,IAZI+G,GACFF,EAAO,IAAIpH,EAAU,IACjBuH,IAAQjoM,EAAE7E,EAAI,GAClB+sM,EAASvG,EAAM3hM,IAGfkoM,GADAh+M,EAAI2G,KAAKyzB,KAAK6G,EAAQnrB,KACT,EAGfpB,EAAI,IAAI8hM,EAAUj9K,KAGR,CAER,GAAIykL,EAAQ,CAEV,KADAtpM,EAAIA,EAAEo+F,MAAMz9G,IACL8S,EAAG,MAENnf,EACE0rB,EAAEvM,EAAEhb,OAASnE,IAAG0rB,EAAEvM,EAAEhb,OAASnE,GACxB60N,IACTnpM,EAAIA,EAAEmlB,IAAI9wC,IAId,GAAIiX,EAAG,CAEL,GAAU,KADVA,EAAI22M,EAAU32M,EAAI,IACL,MACbg+M,EAASh+M,EAAI,OAKb,GAFA+a,EADAjF,EAAIA,EAAEg9F,MAAM8qG,GACH9nM,EAAED,EAAI,EAAG,GAEdC,EAAED,EAAI,GACRmoM,EAASvG,EAAM3hM,OACV,CAEL,GAAU,IADV9V,GAAKihC,EAAQnrB,IACA,MACbkoM,EAASh+M,EAAI,EAIjB3K,EAAIA,EAAEy9G,MAAMz9G,GAERrM,EACEqM,EAAE8S,GAAK9S,EAAE8S,EAAEhb,OAASnE,IAAGqM,EAAE8S,EAAEhb,OAASnE,GAC/B60N,IACTxoN,EAAIA,EAAEwkC,IAAI9wC,IAId,OAAI80N,EAAiBnpM,GACjBqpM,IAAQrpM,EAAI6kB,EAAIs+K,IAAInjM,IAEjB3rB,EAAI2rB,EAAEmlB,IAAI9wC,GAAKC,EAAI+xB,EAAMrG,EAAGqkM,EAAeP,OAnHxBn7D,GAmH+C3oI,IAY3EqO,EAAEk7L,aAAe,SAAUpE,GACzB,IAAI/jM,EAAI,IAAI0gM,EAAUpvN,MAGtB,OAFU,MAANyyN,EAAYA,EAAKrB,EAChBhB,EAASqC,EAAI,EAAG,GACd9+L,EAAMjF,EAAGA,EAAED,EAAI,EAAGgkM,IAQ3B92L,EAAEm7L,UAAYn7L,EAAEo7L,GAAK,SAAUzpM,EAAG7J,GAChC,OAA8C,IAAvCk+C,EAAQ3hE,KAAM,IAAIovN,EAAU9hM,EAAG7J,KAOxCkY,EAAEomC,SAAW,WACX,QAAS/hE,KAAK+gB,GAQhB4a,EAAEq7L,cAAgBr7L,EAAEw4L,GAAK,SAAU7mM,EAAG7J,GACpC,OAAOk+C,EAAQ3hE,KAAM,IAAIovN,EAAU9hM,EAAG7J,IAAM,GAQ9CkY,EAAEs7L,uBAAyBt7L,EAAEu7L,IAAM,SAAU5pM,EAAG7J,GAC9C,OAAoD,KAA5CA,EAAIk+C,EAAQ3hE,KAAM,IAAIovN,EAAU9hM,EAAG7J,MAAoB,IAANA,GAQ3DkY,EAAE2oB,UAAY,WACZ,QAAStkD,KAAK+gB,GAAKivM,EAAShwN,KAAKyuB,EAAIkhM,GAAY3vN,KAAK+gB,EAAEhb,OAAS,GAQnE41B,EAAEw7L,WAAax7L,EAAEs4L,GAAK,SAAU3mM,EAAG7J,GACjC,OAAOk+C,EAAQ3hE,KAAM,IAAIovN,EAAU9hM,EAAG7J,IAAM,GAQ9CkY,EAAEy7L,oBAAsBz7L,EAAE07L,IAAM,SAAU/pM,EAAG7J,GAC3C,OAAqD,KAA7CA,EAAIk+C,EAAQ3hE,KAAM,IAAIovN,EAAU9hM,EAAG7J,MAAqB,IAANA,GAO5DkY,EAAEilC,MAAQ,WACR,OAAQ5gE,KAAK6pB,GAOf8R,EAAE27L,WAAa,WACb,OAAOt3N,KAAK6pB,EAAI,GAOlB8R,EAAE47L,WAAa,WACb,OAAOv3N,KAAK6pB,EAAI,GAOlB8R,EAAE67L,OAAS,WACT,QAASx3N,KAAK+gB,GAAkB,GAAb/gB,KAAK+gB,EAAE,IAwB5B4a,EAAEinH,MAAQ,SAAUt1H,EAAG7J,GACrB,IAAI7K,EAAGkkB,EAAG1F,EAAGqgM,EACXxpN,EAAIjO,KACJwjB,EAAIvV,EAAE4b,EAMR,GAHApG,GADA6J,EAAI,IAAI8hM,EAAU9hM,EAAG7J,IACfoG,GAGDrG,IAAMC,EAAG,OAAO,IAAI2rM,EAAU7qJ,KAGnC,GAAI/gD,GAAKC,EAEP,OADA6J,EAAEzD,GAAKpG,EACAxV,EAAEomN,KAAK/mM,GAGhB,IAAIoqM,EAAKzpN,EAAEwgB,EAAIkhM,EACbgI,EAAKrqM,EAAEmB,EAAIkhM,EACXO,EAAKjiN,EAAE8S,EACPovM,EAAK7iM,EAAEvM,EAET,IAAK22M,IAAOC,EAAI,CAGd,IAAKzH,IAAOC,EAAI,OAAOD,GAAM5iM,EAAEzD,GAAKpG,EAAG6J,GAAK,IAAI8hM,EAAUe,EAAKliN,EAAIs2D,KAGnE,IAAK2rJ,EAAG,KAAOC,EAAG,GAGhB,OAAOA,EAAG,IAAM7iM,EAAEzD,GAAKpG,EAAG6J,GAAK,IAAI8hM,EAAUc,EAAG,GAAKjiN,EAGnC,GAAjBmjN,GAAsB,EAAI,GAS/B,GALAsG,EAAK1H,EAAS0H,GACdC,EAAK3H,EAAS2H,GACdzH,EAAKA,EAAG7sM,QAGJG,EAAIk0M,EAAKC,EAAI,CAaf,KAXIF,EAAOj0M,EAAI,IACbA,GAAKA,EACL4T,EAAI84L,IAEJyH,EAAKD,EACLtgM,EAAI+4L,GAGN/4L,EAAE41E,UAGGvpF,EAAID,EAAGC,IAAK2T,EAAE3xB,KAAK,IACxB2xB,EAAE41E,eAMF,IAFAlwE,GAAK26L,GAAQj0M,EAAI0sM,EAAGnqN,SAAW0d,EAAI0sM,EAAGpqN,SAAWyd,EAAIC,EAEhDD,EAAIC,EAAI,EAAGA,EAAIqZ,EAAGrZ,IAErB,GAAIysM,EAAGzsM,IAAM0sM,EAAG1sM,GAAI,CAClBg0M,EAAOvH,EAAGzsM,GAAK0sM,EAAG1sM,GAClB,MAYN,GANIg0M,IAAMrgM,EAAI84L,EAAIA,EAAKC,EAAIA,EAAK/4L,EAAG9J,EAAEzD,GAAKyD,EAAEzD,IAE5CpG,GAAKqZ,EAAIqzL,EAAGpqN,SAAW6S,EAAIs3M,EAAGnqN,SAItB,EAAG,KAAO0d,IAAKysM,EAAGt3M,KAAO,GAIjC,IAHA6K,EAAIisM,EAAO,EAGJ5yL,EAAItZ,GAAI,CAEb,GAAI0sM,IAAKpzL,GAAKqzL,EAAGrzL,GAAI,CACnB,IAAKlkB,EAAIkkB,EAAGlkB,IAAMs3M,IAAKt3M,GAAIs3M,EAAGt3M,GAAK6K,KACjCysM,EAAGt3M,GACLs3M,EAAGpzL,IAAM4yL,EAGXQ,EAAGpzL,IAAMqzL,EAAGrzL,GAId,KAAgB,GAATozL,EAAG,GAASA,EAAGn4M,OAAO,EAAG,KAAM4/M,GAGtC,OAAKzH,EAAG,GAWD2C,EAAUvlM,EAAG4iM,EAAIyH,IAPtBrqM,EAAEzD,EAAqB,GAAjBunM,GAAsB,EAAI,EAChC9jM,EAAEvM,EAAI,CAACuM,EAAEmB,EAAI,GACNnB,IA8BXqO,EAAEi8L,OAASj8L,EAAE8W,IAAM,SAAUnlB,EAAG7J,GAC9B,IAAI8Z,EAAG1T,EACL5b,EAAIjO,KAKN,OAHAstB,EAAI,IAAI8hM,EAAU9hM,EAAG7J,IAGhBxV,EAAE8S,IAAMuM,EAAEzD,GAAKyD,EAAEvM,IAAMuM,EAAEvM,EAAE,GACvB,IAAIquM,EAAU7qJ,MAGXj3C,EAAEvM,GAAK9S,EAAE8S,IAAM9S,EAAE8S,EAAE,GACtB,IAAIquM,EAAUnhN,IAGJ,GAAfyjN,GAIF7nM,EAAIyD,EAAEzD,EACNyD,EAAEzD,EAAI,EACN0T,EAAIkzL,EAAIxiN,EAAGqf,EAAG,EAAG,GACjBA,EAAEzD,EAAIA,EACN0T,EAAE1T,GAAKA,GAEP0T,EAAIkzL,EAAIxiN,EAAGqf,EAAG,EAAGokM,IAGnBpkM,EAAIrf,EAAE20I,MAAMrlH,EAAEmuF,MAAMp+F,KAGbvM,EAAE,IAAqB,GAAf2wM,IAAkBpkM,EAAEzD,EAAI5b,EAAE4b,GAElCyD,IAwBTqO,EAAEk8L,aAAel8L,EAAE+vF,MAAQ,SAAUp+F,EAAG7J,GACtC,IAAI1C,EAAG0N,EAAG7V,EAAGkkB,EAAGl7B,EAAGD,EAAGm2N,EAAKjD,EAAKC,EAAKiD,EAAKC,EAAKC,EAAKC,EAClD91E,EAAM+1E,EACNlqN,EAAIjO,KACJkwN,EAAKjiN,EAAE8S,EACPovM,GAAM7iM,EAAI,IAAI8hM,EAAU9hM,EAAG7J,IAAI1C,EAGjC,KAAKmvM,GAAOC,GAAOD,EAAG,IAAOC,EAAG,IAmB9B,OAhBKliN,EAAE4b,IAAMyD,EAAEzD,GAAKqmM,IAAOA,EAAG,KAAOC,GAAMA,IAAOA,EAAG,KAAOD,EAC1D5iM,EAAEvM,EAAIuM,EAAEmB,EAAInB,EAAEzD,EAAI,MAElByD,EAAEzD,GAAK5b,EAAE4b,EAGJqmM,GAAOC,GAKV7iM,EAAEvM,EAAI,CAAC,GACPuM,EAAEmB,EAAI,GALNnB,EAAEvM,EAAIuM,EAAEmB,EAAI,MASTnB,EAYT,IATAmB,EAAIuhM,EAAS/hN,EAAEwgB,EAAIkhM,GAAYK,EAAS1iM,EAAEmB,EAAIkhM,GAC9CriM,EAAEzD,GAAK5b,EAAE4b,GACTiuM,EAAM5H,EAAGnqN,SACTgyN,EAAM5H,EAAGpqN,UAGMmyN,EAAKhI,EAAIA,EAAKC,EAAIA,EAAK+H,EAAIt/M,EAAIk/M,EAAKA,EAAMC,EAAKA,EAAMn/M,GAG/DA,EAAIk/M,EAAMC,EAAKG,EAAK,GAAIt/M,IAAKs/M,EAAGzyN,KAAK,IAK1C,IAHA28I,EAAOstE,EACPyI,EAAWrI,EAENl3M,EAAIm/M,IAAOn/M,GAAK,GAAI,CAKvB,IAJAmI,EAAI,EACJi3M,EAAM7H,EAAGv3M,GAAKu/M,EACdF,EAAM9H,EAAGv3M,GAAKu/M,EAAW,EAEXr7L,EAAIlkB,GAAbhX,EAAIk2N,GAAgBh7L,EAAIlkB,GAK3BmI,IADA8zM,EAAMmD,GAHNnD,EAAM3E,IAAKtuN,GAAKu2N,IAEhBx2N,EAAIs2N,EAAMpD,GADVC,EAAM5E,EAAGtuN,GAAKu2N,EAAW,GACHH,GACEG,EAAYA,EAAYD,EAAGp7L,GAAK/b,GAC7CqhI,EAAO,IAAMzgJ,EAAIw2N,EAAW,GAAKF,EAAMnD,EAClDoD,EAAGp7L,KAAO+3L,EAAMzyE,EAGlB81E,EAAGp7L,GAAK/b,EASV,OANIA,IACA0N,EAEFypM,EAAGngN,OAAO,EAAG,GAGR86M,EAAUvlM,EAAG4qM,EAAIzpM,IAQ1BkN,EAAEy8L,QAAU,WACV,IAAInqN,EAAI,IAAImhN,EAAUpvN,MAEtB,OADAiO,EAAE4b,GAAK5b,EAAE4b,GAAK,KACP5b,GAwBT0tB,EAAE04L,KAAO,SAAU/mM,EAAG7J,GACpB,IAAI2T,EACFnpB,EAAIjO,KACJwjB,EAAIvV,EAAE4b,EAMR,GAHApG,GADA6J,EAAI,IAAI8hM,EAAU9hM,EAAG7J,IACfoG,GAGDrG,IAAMC,EAAG,OAAO,IAAI2rM,EAAU7qJ,KAGlC,GAAI/gD,GAAKC,EAER,OADA6J,EAAEzD,GAAKpG,EACAxV,EAAE20I,MAAMt1H,GAGjB,IAAIoqM,EAAKzpN,EAAEwgB,EAAIkhM,EACbgI,EAAKrqM,EAAEmB,EAAIkhM,EACXO,EAAKjiN,EAAE8S,EACPovM,EAAK7iM,EAAEvM,EAET,IAAK22M,IAAOC,EAAI,CAGd,IAAKzH,IAAOC,EAAI,OAAO,IAAIf,EAAU5rM,EAAI,GAIzC,IAAK0sM,EAAG,KAAOC,EAAG,GAAI,OAAOA,EAAG,GAAK7iM,EAAI,IAAI8hM,EAAUc,EAAG,GAAKjiN,EAAQ,EAAJuV,GAQrE,GALAk0M,EAAK1H,EAAS0H,GACdC,EAAK3H,EAAS2H,GACdzH,EAAKA,EAAG7sM,QAGJG,EAAIk0M,EAAKC,EAAI,CAUf,IATIn0M,EAAI,GACNm0M,EAAKD,EACLtgM,EAAI+4L,IAEJ3sM,GAAKA,EACL4T,EAAI84L,GAGN94L,EAAE41E,UACKxpF,IAAK4T,EAAE3xB,KAAK,IACnB2xB,EAAE41E,UAUJ,KAPAxpF,EAAI0sM,EAAGnqN,SACP0d,EAAI0sM,EAAGpqN,QAGK,IAAGqxB,EAAI+4L,EAAIA,EAAKD,EAAIA,EAAK94L,EAAG3T,EAAID,GAGvCA,EAAI,EAAGC,GACVD,GAAK0sM,IAAKzsM,GAAKysM,EAAGzsM,GAAK0sM,EAAG1sM,GAAKD,GAAKksM,EAAO,EAC3CQ,EAAGzsM,GAAKisM,IAASQ,EAAGzsM,GAAK,EAAIysM,EAAGzsM,GAAKisM,EAUvC,OAPIlsM,IACF0sM,EAAK,CAAC1sM,GAAG/E,OAAOyxM,KACdyH,GAKG9E,EAAUvlM,EAAG4iM,EAAIyH,IAmB1Bh8L,EAAE08L,UAAY18L,EAAEm3L,GAAK,SAAUA,EAAIL,GACjC,IAAI1xM,EAAG2N,EAAGiM,EACR1sB,EAAIjO,KAEN,GAAU,MAAN8yN,GAAcA,MAASA,EAKzB,OAJA1C,EAAS0C,EAAI,EAAG/C,GACN,MAAN0C,EAAYA,EAAKrB,EAChBhB,EAASqC,EAAI,EAAG,GAEd9+L,EAAM,IAAIy7L,EAAUnhN,GAAI6kN,EAAIL,GAGrC,KAAM1xM,EAAI9S,EAAE8S,GAAI,OAAO,KAIvB,GAFA2N,GADAiM,EAAI5Z,EAAEhb,OAAS,GACP4pN,EAAW,EAEfh1L,EAAI5Z,EAAE4Z,GAAI,CAGZ,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAIjM,KAG7B,IAAKiM,EAAI5Z,EAAE,GAAI4Z,GAAK,GAAIA,GAAK,GAAIjM,MAKnC,OAFIokM,GAAM7kN,EAAEwgB,EAAI,EAAIC,IAAGA,EAAIzgB,EAAEwgB,EAAI,GAE1BC,GAYTiN,EAAE28L,UAAY,SAAU12N,GAEtB,OADAwuN,EAASxuN,GAAG,iBAAmBguN,GACxB5vN,KAAK0rH,MAAM,KAAO9pH,IAe3B+5B,EAAE48L,WAAa58L,EAAE2U,KAAO,WACtB,IAAI3uC,EAAG+sB,EAAGyI,EAAGqhM,EAAKphM,EAChBnpB,EAAIjO,KACJ+gB,EAAI9S,EAAE8S,EACN8I,EAAI5b,EAAE4b,EACN4E,EAAIxgB,EAAEwgB,EACNuoC,EAAKm6J,EAAiB,EACtBqF,EAAO,IAAIpH,EAAU,OAGvB,GAAU,IAANvlM,IAAY9I,IAAMA,EAAE,GACtB,OAAO,IAAIquM,GAAWvlM,GAAKA,EAAI,KAAO9I,GAAKA,EAAE,IAAMwjD,IAAMxjD,EAAI9S,EAAI,KA8BnE,GAtBS,IAJT4b,EAAItK,KAAK+wB,MAAMuJ,EAAQ5rC,MAIT4b,GAAK,OACjB6E,EAAIuhM,EAAclvM,IACXhb,OAAS0oB,GAAK,GAAK,IAAGC,GAAK,KAClC7E,EAAItK,KAAK+wB,MAAM5hB,GACfD,EAAIuhM,GAAUvhM,EAAI,GAAK,IAAMA,EAAI,GAAKA,EAAI,GAS1C0I,EAAI,IAAIi4L,EANN1gM,EADE7E,GAAK,IACH,KAAO4E,GAEXC,EAAI7E,EAAEwxG,iBACAh4G,MAAM,EAAGqL,EAAE5W,QAAQ,KAAO,GAAK2W,IAKvC0I,EAAI,IAAIi4L,EAAUvlM,EAAI,IAOpBsN,EAAEpW,EAAE,GAMN,KAJA8I,GADA4E,EAAI0I,EAAE1I,GACEuoC,GACA,IAAGntC,EAAI,KAOb,GAHAuN,EAAID,EACJA,EAAIq/L,EAAK9qG,MAAMt0F,EAAEi9L,KAAK5D,EAAIxiN,EAAGmpB,EAAG4/B,EAAI,KAEhCi5J,EAAc74L,EAAErW,GAAGsC,MAAM,EAAGwG,MAAQ6E,EAAIuhM,EAAc94L,EAAEpW,IAAIsC,MAAM,EAAGwG,GAAI,CAW3E,GANIsN,EAAE1I,EAAIA,KAAK5E,EAMN,SALT6E,EAAIA,EAAErL,MAAMwG,EAAI,EAAGA,EAAI,MAKH2uM,GAAY,QAAL9pM,GAgBpB,EAICA,KAAOA,EAAErL,MAAM,IAAqB,KAAfqL,EAAE2hB,OAAO,MAGlC1c,EAAMwD,EAAGA,EAAE1I,EAAI0iM,EAAiB,EAAG,GACnCxvN,GAAKw1B,EAAEu0F,MAAMv0F,GAAG4/L,GAAG9oN,IAGrB,MAvBA,IAAKuqN,IACH7kM,EAAMyD,EAAGA,EAAE3I,EAAI0iM,EAAiB,EAAG,GAE/B/5L,EAAEs0F,MAAMt0F,GAAG2/L,GAAG9oN,IAAI,CACpBkpB,EAAIC,EACJ,MAIJ4/B,GAAM,EACNntC,GAAK,EACL2uM,EAAM,EAkBd,OAAO7kM,EAAMwD,EAAGA,EAAE1I,EAAI0iM,EAAiB,EAAGC,EAAezvN,IAa3Dg6B,EAAE0/F,cAAgB,SAAUrkE,EAAIy7J,GAK9B,OAJU,MAANz7J,IACFo5J,EAASp5J,EAAI,EAAG+4J,GAChB/4J,KAEK1uC,EAAOtoB,KAAMg3D,EAAIy7J,EAAI,IAgB9B92L,EAAE4jJ,QAAU,SAAUvoH,EAAIy7J,GAKxB,OAJU,MAANz7J,IACFo5J,EAASp5J,EAAI,EAAG+4J,GAChB/4J,EAAKA,EAAKh3D,KAAKyuB,EAAI,GAEdnG,EAAOtoB,KAAMg3D,EAAIy7J,IA6B1B92L,EAAE88L,SAAW,SAAUzhK,EAAIy7J,EAAInqM,GAC7B,IAAIgL,EACFrlB,EAAIjO,KAEN,GAAc,MAAVsoB,EACQ,MAAN0uC,GAAcy7J,GAAmB,iBAANA,GAC7BnqM,EAASmqM,EACTA,EAAK,MACIz7J,GAAmB,iBAANA,GACtB1uC,EAAS0uC,EACTA,EAAKy7J,EAAK,MAEVnqM,EAASspM,OAEN,GAAqB,iBAAVtpM,EAChB,MAAM9nB,MACHgvN,EAAiB,2BAA6BlnM,GAKnD,GAFAgL,EAAMrlB,EAAEsxK,QAAQvoH,EAAIy7J,GAEhBxkN,EAAE8S,EAAG,CACP,IAAInI,EACFsH,EAAMoT,EAAIxS,MAAM,KAChB43M,GAAMpwM,EAAOupM,UACb8G,GAAMrwM,EAAOwpM,mBACbC,EAAiBzpM,EAAOypM,gBAAkB,GAC1C6G,EAAU14M,EAAI,GACd24M,EAAe34M,EAAI,GACnByoF,EAAQ16F,EAAE4b,EAAI,EACdivM,EAAYnwH,EAAQiwH,EAAQv1M,MAAM,GAAKu1M,EACvCl1M,EAAMo1M,EAAU/yN,OAIlB,GAFI4yN,IAAI//M,EAAI8/M,EAAIA,EAAKC,EAAIA,EAAK//M,EAAG8K,GAAO9K,GAEpC8/M,EAAK,GAAKh1M,EAAM,EAAG,CAGrB,IAFA9K,EAAI8K,EAAMg1M,GAAMA,EAChBE,EAAUE,EAAU72M,OAAO,EAAGrJ,GACvBA,EAAI8K,EAAK9K,GAAK8/M,EAAIE,GAAW7G,EAAiB+G,EAAU72M,OAAOrJ,EAAG8/M,GACrEC,EAAK,IAAGC,GAAW7G,EAAiB+G,EAAUz1M,MAAMzK,IACpD+vF,IAAOiwH,EAAU,IAAMA,GAG7BtlM,EAAMulM,EACHD,GAAWtwM,EAAO0pM,kBAAoB,MAAQ2G,GAAMrwM,EAAO2pM,mBAC1D4G,EAAap4M,QAAQ,IAAIy5B,OAAO,OAASy+K,EAAK,OAAQ,KACvD,MAAQrwM,EAAO4pM,wBAA0B,KACxC2G,GACDD,EAGL,OAAQtwM,EAAOqY,QAAU,IAAMrN,GAAOhL,EAAO6pM,QAAU,KAezDx2L,EAAEo9L,WAAa,SAAUjwK,GACvB,IAAI3gC,EAAG6wM,EAAIC,EAAIC,EAAIzqM,EAAGsG,EAAKrG,EAAGyqM,EAAIC,EAAI77L,EAAGpG,EAAGtN,EAC1C5b,EAAIjO,KACJkwN,EAAKjiN,EAAE8S,EAET,GAAU,MAAN+nC,MACFp6B,EAAI,IAAI0gM,EAAUtmK,IAGXxE,cAAgB51B,EAAE3N,GAAa,IAAR2N,EAAE7E,IAAY6E,EAAEulM,GAAG9hL,IAC/C,MAAM3xC,MACHgvN,EAAiB,aACf9gM,EAAE41B,YAAc,iBAAmB,oBAAsBzK,EAAQnrB,IAI1E,IAAKwhM,EAAI,OAAO,IAAId,EAAUnhN,GAoB9B,IAlBAka,EAAI,IAAIinM,EAAUj9K,GAClBinL,EAAKJ,EAAK,IAAI5J,EAAUj9K,GACxB8mL,EAAKE,EAAK,IAAI/J,EAAUj9K,GACxBtoB,EAAIomM,EAAcC,GAIlBzhM,EAAItG,EAAEsG,EAAI5E,EAAE9jB,OAASkI,EAAEwgB,EAAI,EAC3BtG,EAAEpH,EAAE,GAAK8uM,GAAU96L,EAAMtG,EAAIkhM,GAAY,EAAIA,EAAW56L,EAAMA,GAC9D+zB,GAAMA,GAAMp6B,EAAEwnM,WAAW/tM,GAAK,EAAKsG,EAAI,EAAItG,EAAIixM,EAAM1qM,EAErDqG,EAAMy8L,EACNA,EAAU,IACV9iM,EAAI,IAAI0gM,EAAUvlM,GAGlBsvM,EAAGp4M,EAAE,GAAK,EAGRwc,EAAIkzL,EAAI/hM,EAAGvG,EAAG,EAAG,GAEQ,IADzB+wM,EAAKF,EAAG3E,KAAK92L,EAAEmuF,MAAMutG,KACd/C,WAAWptK,IAClBkwK,EAAKC,EACLA,EAAKC,EACLE,EAAKD,EAAG9E,KAAK92L,EAAEmuF,MAAMwtG,EAAKE,IAC1BD,EAAKD,EACL/wM,EAAIuG,EAAEk0H,MAAMrlH,EAAEmuF,MAAMwtG,EAAK/wM,IACzBuG,EAAIwqM,EAeN,OAZAA,EAAKzI,EAAI3nK,EAAG85F,MAAMo2E,GAAKC,EAAI,EAAG,GAC9BE,EAAKA,EAAG9E,KAAK6E,EAAGxtG,MAAM0tG,IACtBJ,EAAKA,EAAG3E,KAAK6E,EAAGxtG,MAAMutG,IACtBE,EAAGtvM,EAAIuvM,EAAGvvM,EAAI5b,EAAE4b,EAIhBsN,EAAIs5L,EAAI2I,EAAIH,EAHZxqM,GAAQ,EAGW2iM,GAAexuE,MAAM30I,GAAG+kC,MAAMkjL,WAC7CzF,EAAI0I,EAAIH,EAAIvqM,EAAG2iM,GAAexuE,MAAM30I,GAAG+kC,OAAS,EAAI,CAAComL,EAAIH,GAAM,CAACE,EAAIH,GAExExH,EAAUz8L,EAEHoC,GAOTwE,EAAE09L,SAAW,WACX,OAAQx/K,EAAQ75C,OAelB27B,EAAE29L,YAAc,SAAUxG,EAAIL,GAE5B,OADU,MAANK,GAAY1C,EAAS0C,EAAI,EAAG/C,GACzBznM,EAAOtoB,KAAM8yN,EAAIL,EAAI,IAe9B92L,EAAE9tB,SAAW,SAAU4V,GACrB,IAAI6P,EACF5E,EAAI1uB,KACJ6pB,EAAI6E,EAAE7E,EACN4E,EAAIC,EAAED,EA0BR,OAvBU,OAANA,EACE5E,GACFyJ,EAAM,WACFzJ,EAAI,IAAGyJ,EAAM,IAAMA,IAEvBA,EAAM,OAGC,MAAL7P,EACF6P,EAAM7E,GAAK4iM,GAAc5iM,GAAK6iM,EAC3Bj2F,EAAc40F,EAAcvhM,EAAE3N,GAAI0N,GAClC6hM,EAAaL,EAAcvhM,EAAE3N,GAAI0N,EAAG,KACxB,KAANhL,GAAY4uM,EAErB/+L,EAAMg9L,EAAaL,GADnBvhM,EAAIiF,EAAM,IAAIy7L,EAAU1gM,GAAIyiM,EAAiB1iM,EAAI,EAAG2iM,IACjBrwM,GAAI2N,EAAED,EAAG,MAE5C2hM,EAAS3sM,EAAG,EAAG2uM,EAASrsN,OAAQ,QAChCutB,EAAMo9L,EAAYJ,EAAaL,EAAcvhM,EAAE3N,GAAI0N,EAAG,KAAM,GAAIhL,EAAGoG,GAAG,IAGpEA,EAAI,GAAK6E,EAAE3N,EAAE,KAAIuS,EAAM,IAAMA,IAG5BA,GAQTqI,EAAEke,QAAUle,EAAEqmC,OAAS,WACrB,OAAOnoB,EAAQ75C,OAIjB27B,EAAE62L,cAAe,EAEG,MAAhBhC,GAAsBpB,EAAU7pN,IAAIirN,GAEjCpB,EAsIGjhL,GACZihL,EAAmB,QAAIA,EAAUA,UAAYA,OAIH,KAAxC,aAAqB,OAAOA,GAAY,8BAz0F3C,2BCIDpjJ,EAAO5sE,QAAU,SAASm6N,EAAW3yN,GACnC,OAAe,OAAXA,GAAqC,iBAAXA,GAAwC,MAAjBA,EAAOo7D,OACnD51D,KAAKC,UAAUzF,GAGpBkV,MAAMC,QAAQnV,GACT,IAAMA,EAAO2S,QAAO,CAAC6d,EAAGoiM,EAAIC,IAG1BriM,GAFc,IAAPqiM,EAAW,GAAK,KAEXF,OADEz3N,IAAP03N,GAAkC,iBAAPA,EAAkB,KAAOA,IAEjE,IAAM,IAGJ,IAAMt6N,OAAO0N,KAAKhG,GAAQu5C,OAAO5mC,QAAO,CAAC6d,EAAGoiM,EAAIC,SAClC33N,IAAf8E,EAAO4yN,IACe,iBAAf5yN,EAAO4yN,GACTpiM,EAGFA,GADoB,IAAbA,EAAErxB,OAAe,GAAK,KACjBwzN,EAAUC,GAAM,IAAMD,EAAU3yN,EAAO4yN,KACzD,IAAM,wBCxBX,SAAUr+M,IAEO,SAAW/b,GAE1B,IAAIm1F,EACY,oBAAqBp5E,EADjCo5E,EAEQ,WAAYp5E,GAAQ,aAAcjO,OAF1CqnF,EAIA,eAAgBp5E,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIq5E,MACG,EACP,MAAO/lE,GACP,OAAO,GALX,GANA8lE,EAcQ,aAAcp5E,EAdtBo5E,EAeW,gBAAiBp5E,EAOhC,GAAIo5E,EACF,IAAIE,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACF/1B,YAAYgC,QACZ,SAASzkB,GACP,OAAOA,GAAOu4C,EAAY38E,QAAQ5Y,OAAOsD,UAAUqL,SAASnL,KAAKw5C,KAAS,GAIhF,SAASy4C,EAAczxF,GAIrB,GAHoB,iBAATA,IACTA,EAAOid,OAAOjd,IAEZ,4BAA4BiV,KAAKjV,GACnC,MAAM,IAAIge,UAAU,0CAEtB,OAAOhe,EAAKwwB,cAGd,SAASkhE,EAAev1F,GAItB,MAHqB,iBAAVA,IACTA,EAAQ8gB,OAAO9gB,IAEVA,EAIT,SAASw1F,EAAYC,GACnB,IAAI3nF,EAAW,CACbspC,KAAM,WACJ,IAAIp3C,EAAQy1F,EAAM36C,QAClB,MAAO,CAAC46C,UAAgBjzF,IAAVzC,EAAqBA,MAAOA,KAU9C,OANIk1F,IACFpnF,EAASD,OAAOC,UAAY,WAC1B,OAAOA,IAIJA,EAGT,SAAS8zE,EAAQn9E,GACf9D,KAAKgG,IAAM,GAEPlC,aAAmBm9E,EACrBn9E,EAAQ5C,SAAQ,SAAS7B,EAAO6D,GAC9BlD,KAAKugF,OAAOr9E,EAAM7D,KACjBW,MACM8b,MAAMC,QAAQjY,GACvBA,EAAQ5C,SAAQ,SAAS2c,GACvB7d,KAAKugF,OAAO1iE,EAAO,GAAIA,EAAO,MAC7B7d,MACM8D,GACT5E,OAAO0lE,oBAAoB9gE,GAAS5C,SAAQ,SAASgC,GACnDlD,KAAKugF,OAAOr9E,EAAMY,EAAQZ,MACzBlD,MAgEP,SAASg1F,EAASnmF,GAChB,GAAIA,EAAKomF,SACP,OAAOjqF,QAAQE,OAAO,IAAIgW,UAAU,iBAEtCrS,EAAKomF,UAAW,EAGlB,SAASC,EAAgBC,GACvB,OAAO,IAAInqF,SAAQ,SAASC,EAASC,GACnCiqF,EAAO3zD,OAAS,WACdv2B,EAAQkqF,EAAO7tF,SAEjB6tF,EAAOtzD,QAAU,WACf32B,EAAOiqF,EAAOppF,WAKpB,SAASqpF,EAAsBC,GAC7B,IAAIF,EAAS,IAAIG,WACbxpD,EAAUopD,EAAgBC,GAE9B,OADAA,EAAOI,kBAAkBF,GAClBvpD,EAoBT,SAAS0pD,EAAY72E,GACnB,GAAIA,EAAI0E,MACN,OAAO1E,EAAI0E,MAAM,GAEjB,IAAIoyE,EAAO,IAAI72E,WAAWD,EAAIogD,YAE9B,OADA02B,EAAKlwF,IAAI,IAAIqZ,WAAWD,IACjB82E,EAAK52E,OAIhB,SAAS62E,IA0FP,OAzFA11F,KAAKi1F,UAAW,EAEhBj1F,KAAK21F,UAAY,SAAS9mF,GAhM5B,IAAoBqtC,EAiMhBl8C,KAAK41F,UAAY/mF,EACZA,EAEsB,iBAATA,EAChB7O,KAAK61F,UAAYhnF,EACR0lF,GAAgBC,KAAKhyF,UAAUszF,cAAcjnF,GACtD7O,KAAK+1F,UAAYlnF,EACR0lF,GAAoByB,SAASxzF,UAAUszF,cAAcjnF,GAC9D7O,KAAKi2F,cAAgBpnF,EACZ0lF,GAAwB2B,gBAAgB1zF,UAAUszF,cAAcjnF,GACzE7O,KAAK61F,UAAYhnF,EAAKhB,WACb0mF,GAAuBA,IA5MlBr4C,EA4M6CrtC,IA3MjD+vD,SAASp8D,UAAUszF,cAAc55C,IA4M3Cl8C,KAAKm2F,iBAAmBX,EAAY3mF,EAAKgQ,QAEzC7e,KAAK41F,UAAY,IAAIpB,KAAK,CAACx0F,KAAKm2F,oBACvB5B,IAAwB51B,YAAYn8D,UAAUszF,cAAcjnF,IAAS6lF,EAAkB7lF,IAChG7O,KAAKm2F,iBAAmBX,EAAY3mF,GAEpC7O,KAAK61F,UAAYhnF,EAAO3P,OAAOsD,UAAUqL,SAASnL,KAAKmM,GAhBvD7O,KAAK61F,UAAY,GAmBd71F,KAAK8D,QAAQzB,IAAI,kBACA,iBAATwM,EACT7O,KAAK8D,QAAQyB,IAAI,eAAgB,4BACxBvF,KAAK+1F,WAAa/1F,KAAK+1F,UAAU5vF,KAC1CnG,KAAK8D,QAAQyB,IAAI,eAAgBvF,KAAK+1F,UAAU5vF,MACvCouF,GAAwB2B,gBAAgB1zF,UAAUszF,cAAcjnF,IACzE7O,KAAK8D,QAAQyB,IAAI,eAAgB,qDAKnCgvF,IACFv0F,KAAKq1F,KAAO,WACV,IAAIe,EAAWpB,EAASh1F,MACxB,GAAIo2F,EACF,OAAOA,EAGT,GAAIp2F,KAAK+1F,UACP,OAAO/qF,QAAQC,QAAQjL,KAAK+1F,WACvB,GAAI/1F,KAAKm2F,iBACd,OAAOnrF,QAAQC,QAAQ,IAAIupF,KAAK,CAACx0F,KAAKm2F,oBACjC,GAAIn2F,KAAKi2F,cACd,MAAM,IAAIz1F,MAAM,wCAEhB,OAAOwK,QAAQC,QAAQ,IAAIupF,KAAK,CAACx0F,KAAK61F,cAI1C71F,KAAKq2F,YAAc,WACjB,OAAIr2F,KAAKm2F,iBACAnB,EAASh1F,OAASgL,QAAQC,QAAQjL,KAAKm2F,kBAEvCn2F,KAAKq1F,OAAOlpF,KAAKipF,KAK9Bp1F,KAAK8uE,KAAO,WACV,IA3FoBumB,EAClBF,EACArpD,EAyFEsqD,EAAWpB,EAASh1F,MACxB,GAAIo2F,EACF,OAAOA,EAGT,GAAIp2F,KAAK+1F,UACP,OAjGkBV,EAiGIr1F,KAAK+1F,UA/F3BjqD,EAAUopD,EADVC,EAAS,IAAIG,YAEjBH,EAAOmB,WAAWjB,GACXvpD,EA8FE,GAAI9rC,KAAKm2F,iBACd,OAAOnrF,QAAQC,QA5FrB,SAA+B0T,GAI7B,IAHA,IAAI82E,EAAO,IAAI72E,WAAWD,GACtB43E,EAAQ,IAAIz6E,MAAM25E,EAAK1vF,QAElB6S,EAAI,EAAGA,EAAI68E,EAAK1vF,OAAQ6S,IAC/B29E,EAAM39E,GAAKuH,OAAOC,aAAaq1E,EAAK78E,IAEtC,OAAO29E,EAAM/1E,KAAK,IAqFSg2E,CAAsBx2F,KAAKm2F,mBAC7C,GAAIn2F,KAAKi2F,cACd,MAAM,IAAIz1F,MAAM,wCAEhB,OAAOwK,QAAQC,QAAQjL,KAAK61F,YAI5BtB,IACFv0F,KAAKy2F,SAAW,WACd,OAAOz2F,KAAK8uE,OAAO3iE,KAAKyU,KAI5B5gB,KAAKixB,KAAO,WACV,OAAOjxB,KAAK8uE,OAAO3iE,KAAKC,KAAK2b,QAGxB/nB,KA1MTihF,EAAQz+E,UAAU+9E,OAAS,SAASr9E,EAAM7D,GACxC6D,EAAOyxF,EAAczxF,GACrB7D,EAAQu1F,EAAev1F,GACvB,IAAIq3F,EAAW12F,KAAKgG,IAAI9C,GACxBlD,KAAKgG,IAAI9C,GAAQwzF,EAAWA,EAAW,KAAOr3F,EAAQA,GAGxD4hF,EAAQz+E,UAAkB,OAAI,SAASU,UAC9BlD,KAAKgG,IAAI2uF,EAAczxF,KAGhC+9E,EAAQz+E,UAAUH,IAAM,SAASa,GAE/B,OADAA,EAAOyxF,EAAczxF,GACdlD,KAAKkI,IAAIhF,GAAQlD,KAAKgG,IAAI9C,GAAQ,MAG3C+9E,EAAQz+E,UAAU0F,IAAM,SAAShF,GAC/B,OAAOlD,KAAKgG,IAAIvD,eAAekyF,EAAczxF,KAG/C+9E,EAAQz+E,UAAU+C,IAAM,SAASrC,EAAM7D,GACrCW,KAAKgG,IAAI2uF,EAAczxF,IAAS0xF,EAAev1F,IAGjD4hF,EAAQz+E,UAAUtB,QAAU,SAAS8M,EAAU2oF,GAC7C,IAAK,IAAIzzF,KAAQlD,KAAKgG,IAChBhG,KAAKgG,IAAIvD,eAAeS,IAC1B8K,EAAStL,KAAKi0F,EAAS32F,KAAKgG,IAAI9C,GAAOA,EAAMlD,OAKnDihF,EAAQz+E,UAAUoK,KAAO,WACvB,IAAIkoF,EAAQ,GAIZ,OAHA90F,KAAKkB,SAAQ,SAAS7B,EAAO6D,GAC3B4xF,EAAMrvF,KAAKvC,MAEN2xF,EAAYC,IAGrB7T,EAAQz+E,UAAUuK,OAAS,WACzB,IAAI+nF,EAAQ,GAIZ,OAHA90F,KAAKkB,SAAQ,SAAS7B,GACpBy1F,EAAMrvF,KAAKpG,MAENw1F,EAAYC,IAGrB7T,EAAQz+E,UAAUvB,QAAU,WAC1B,IAAI6zF,EAAQ,GAIZ,OAHA90F,KAAKkB,SAAQ,SAAS7B,EAAO6D,GAC3B4xF,EAAMrvF,KAAK,CAACvC,EAAM7D,OAEbw1F,EAAYC,IAGjBP,IACFtT,EAAQz+E,UAAU0K,OAAOC,UAAY8zE,EAAQz+E,UAAUvB,SAqJzD,IAAI21F,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAO3D,SAASxyF,EAAQZ,EAAO6N,GAEtB,IAPuB0f,EACnB8lE,EAMAhoF,GADJwC,EAAUA,GAAW,IACFxC,KAEnB,GAAIrL,aAAiBY,EAAS,CAC5B,GAAIZ,EAAMyxF,SACR,MAAM,IAAI/zE,UAAU,gBAEtBlhB,KAAKyD,IAAMD,EAAMC,IACjBzD,KAAK6wB,YAAcrtB,EAAMqtB,YACpBxf,EAAQvN,UACX9D,KAAK8D,QAAU,IAAIm9E,EAAQz9E,EAAMM,UAEnC9D,KAAK+wB,OAASvtB,EAAMutB,OACpB/wB,KAAK8wB,KAAOttB,EAAMstB,KAClB9wB,KAAK0wB,OAASltB,EAAMktB,OACf7hB,GAA2B,MAAnBrL,EAAMoyF,YACjB/mF,EAAOrL,EAAMoyF,UACbpyF,EAAMyxF,UAAW,QAGnBj1F,KAAKyD,IAAM0c,OAAO3c,GAYpB,GATAxD,KAAK6wB,YAAcxf,EAAQwf,aAAe7wB,KAAK6wB,aAAe,eAC1Dxf,EAAQvN,SAAY9D,KAAK8D,UAC3B9D,KAAK8D,QAAU,IAAIm9E,EAAQ5vE,EAAQvN,UAErC9D,KAAK+wB,QAhCD8lE,GADmB9lE,EAiCO1f,EAAQ0f,QAAU/wB,KAAK+wB,QAAU,OAhC1CpW,cACdi8E,EAAQ9+E,QAAQ++E,IAAY,EAAIA,EAAU9lE,GAgCjD/wB,KAAK8wB,KAAOzf,EAAQyf,MAAQ9wB,KAAK8wB,MAAQ,KACzC9wB,KAAK0wB,OAASrf,EAAQqf,QAAU1wB,KAAK0wB,OACrC1wB,KAAK82F,SAAW,MAEK,QAAhB92F,KAAK+wB,QAAoC,SAAhB/wB,KAAK+wB,SAAsBliB,EACvD,MAAM,IAAIqS,UAAU,6CAEtBlhB,KAAK21F,UAAU9mF,GAOjB,SAAS+R,EAAO/R,GACd,IAAIkoF,EAAO,IAAIf,SAYf,OAXAnnF,EACGw1D,OACAvjD,MAAM,KACN5f,SAAQ,SAASwuF,GAChB,GAAIA,EAAO,CACT,IAAI5uE,EAAQ4uE,EAAM5uE,MAAM,KACpB5d,EAAO4d,EAAMq5B,QAAQ15B,QAAQ,MAAO,KACpCphB,EAAQyhB,EAAMN,KAAK,KAAKC,QAAQ,MAAO,KAC3Cs2E,EAAKxW,OAAOtmD,mBAAmB/2B,GAAO+2B,mBAAmB56B,QAGxD03F,EAqBT,SAASC,EAASC,EAAU5lF,GACrBA,IACHA,EAAU,IAGZrR,KAAKmG,KAAO,UACZnG,KAAKgxB,YAA4BlvB,IAAnBuP,EAAQ2f,OAAuB,IAAM3f,EAAQ2f,OAC3DhxB,KAAKouE,GAAKpuE,KAAKgxB,QAAU,KAAOhxB,KAAKgxB,OAAS,IAC9ChxB,KAAK4hC,WAAa,eAAgBvwB,EAAUA,EAAQuwB,WAAa,KACjE5hC,KAAK8D,QAAU,IAAIm9E,EAAQ5vE,EAAQvN,SACnC9D,KAAKyD,IAAM4N,EAAQ5N,KAAO,GAC1BzD,KAAK21F,UAAUsB,GAjDjB7yF,EAAQ5B,UAAU2rC,MAAQ,WACxB,OAAO,IAAI/pC,EAAQpE,KAAM,CAAC6O,KAAM7O,KAAK41F,aAmCvCF,EAAKhzF,KAAK0B,EAAQ5B,WAgBlBkzF,EAAKhzF,KAAKs0F,EAASx0F,WAEnBw0F,EAASx0F,UAAU2rC,MAAQ,WACzB,OAAO,IAAI6oD,EAASh3F,KAAK41F,UAAW,CAClC5kE,OAAQhxB,KAAKgxB,OACb4Q,WAAY5hC,KAAK4hC,WACjB99B,QAAS,IAAIm9E,EAAQjhF,KAAK8D,SAC1BL,IAAKzD,KAAKyD,OAIduzF,EAASjrF,MAAQ,WACf,IAAI0kB,EAAW,IAAIumE,EAAS,KAAM,CAAChmE,OAAQ,EAAG4Q,WAAY,KAE1D,OADAnR,EAAStqB,KAAO,QACTsqB,GAGT,IAAIymE,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CF,EAASrmE,SAAW,SAASltB,EAAKutB,GAChC,IAA0C,IAAtCkmE,EAAiBp/E,QAAQkZ,GAC3B,MAAM,IAAI5R,WAAW,uBAGvB,OAAO,IAAI43E,EAAS,KAAM,CAAChmE,OAAQA,EAAQltB,QAAS,CAACk0B,SAAUv0B,MAGjErE,EAAQk1F,aAAen5E,EAAKm5E,aAC5B,IACE,IAAIl1F,EAAQk1F,aACZ,MAAOppE,GACP9rB,EAAQk1F,aAAe,SAAS59E,EAASxT,GACvClD,KAAK0W,QAAUA,EACf1W,KAAKkD,KAAOA,EACZ,IAAI6I,EAAQvL,MAAMkW,GAClB1W,KAAK+mF,MAAQh7E,EAAMg7E,OAErB3nF,EAAQk1F,aAAa9xF,UAAYtD,OAAOuC,OAAOjB,MAAMgC,WACrDpD,EAAQk1F,aAAa9xF,UAAU/C,YAAcL,EAAQk1F,aAGvD,SAASpgF,EAAM1Q,EAAOU,GACpB,OAAO,IAAI8G,SAAQ,SAASC,EAASC,GACnC,IAAIjH,EAAU,IAAIG,EAAQZ,EAAOU,GAEjC,GAAID,EAAQysB,QAAUzsB,EAAQysB,OAAOymE,QACnC,OAAOjsF,EAAO,IAAI9L,EAAQk1F,aAAa,UAAW,eAGpD,IAAI8C,EAAM,IAAIj/D,eAEd,SAASk/D,IACPD,EAAI5mE,QAGN4mE,EAAI51D,OAAS,WACX,IAxFgB81D,EAChBxzF,EAuFIuN,EAAU,CACZ2f,OAAQomE,EAAIpmE,OACZ4Q,WAAYw1D,EAAIx1D,WAChB99B,SA3FcwzF,EA2FQF,EAAIG,yBAA2B,GA1FvDzzF,EAAU,IAAIm9E,EAGQqW,EAAW72E,QAAQ,eAAgB,KACzCK,MAAM,SAAS5f,SAAQ,SAASs2F,GAClD,IAAI7gE,EAAQ6gE,EAAK12E,MAAM,KACnB3f,EAAMw1B,EAAMwjB,QAAQkqB,OACxB,GAAIljE,EAAK,CACP,IAAI9B,EAAQs3B,EAAMnW,KAAK,KAAK6jD,OAC5BvgE,EAAQy8E,OAAOp/E,EAAK9B,OAGjByE,IAgFHuN,EAAQ5N,IAAM,gBAAiB2zF,EAAMA,EAAIK,YAAcpmF,EAAQvN,QAAQzB,IAAI,iBAC3E,IAAIwM,EAAO,aAAcuoF,EAAMA,EAAI3mE,SAAW2mE,EAAIz1D,aAClD12B,EAAQ,IAAI+rF,EAASnoF,EAAMwC,KAG7B+lF,EAAIv1D,QAAU,WACZ32B,EAAO,IAAIgW,UAAU,4BAGvBk2E,EAAIM,UAAY,WACdxsF,EAAO,IAAIgW,UAAU,4BAGvBk2E,EAAIO,QAAU,WACZzsF,EAAO,IAAI9L,EAAQk1F,aAAa,UAAW,gBAG7C8C,EAAI71D,KAAKt9B,EAAQ8sB,OAAQ9sB,EAAQR,KAAK,GAEV,YAAxBQ,EAAQ4sB,YACVumE,EAAIQ,iBAAkB,EACW,SAAxB3zF,EAAQ4sB,cACjBumE,EAAIQ,iBAAkB,GAGpB,iBAAkBR,GAAO7C,IAC3B6C,EAAIS,aAAe,QAGrB5zF,EAAQH,QAAQ5C,SAAQ,SAAS7B,EAAO6D,GACtCk0F,EAAIt1D,iBAAiB5+B,EAAM7D,MAGzB4E,EAAQysB,SACVzsB,EAAQysB,OAAOwZ,iBAAiB,QAASmtD,GAEzCD,EAAIU,mBAAqB,WAEA,IAAnBV,EAAIW,YACN9zF,EAAQysB,OAAOub,oBAAoB,QAASorD,KAKlDD,EAAIr1D,UAAkC,IAAtB99B,EAAQ2xF,UAA4B,KAAO3xF,EAAQ2xF,cAIvE1hF,EAAM8jF,UAAW,EAEZ78E,EAAKjH,QACRiH,EAAKjH,MAAQA,EACbiH,EAAK8lE,QAAUA,EACf9lE,EAAK/W,QAAUA,EACf+W,EAAK67E,SAAWA,GAGlB53F,EAAQ6hF,QAAUA,EAClB7hF,EAAQgF,QAAUA,EAClBhF,EAAQ43F,SAAWA,EACnB53F,EAAQ8U,MAAQA,EAEhBhV,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IA5gBvC,CAghBd,IAlhBH,CAmhBmB,oBAAT8b,KAAuBA,KAAOnb,2BCnhBxC,IAAIo0F,EAAyB,oBAATj5E,KAAuBA,KAAOnb,KAC9Cq0F,EAAW,WACf,SAASj5D,IACTp7B,KAAKkU,OAAQ,EACblU,KAAKs0F,aAAeF,EAAOE,aAG3B,OADAl5D,EAAE54B,UAAY4xF,EACP,IAAIh5D,EANI,IAQf,SAAUjgB,IAEO,SAAW/b,GAE1B,IAAIm1F,EACY,oBAAqBp5E,EADjCo5E,EAEQ,WAAYp5E,GAAQ,aAAcjO,OAF1CqnF,EAIA,eAAgBp5E,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIq5E,MACG,EACP,MAAO/lE,GACP,OAAO,GALX,GANA8lE,EAcQ,aAAcp5E,EAdtBo5E,EAeW,gBAAiBp5E,EAOhC,GAAIo5E,EACF,IAAIE,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACF/1B,YAAYgC,QACZ,SAASzkB,GACP,OAAOA,GAAOu4C,EAAY38E,QAAQ5Y,OAAOsD,UAAUqL,SAASnL,KAAKw5C,KAAS,GAIhF,SAASy4C,EAAczxF,GAIrB,GAHoB,iBAATA,IACTA,EAAOid,OAAOjd,IAEZ,4BAA4BiV,KAAKjV,GACnC,MAAM,IAAIge,UAAU,0CAEtB,OAAOhe,EAAKwwB,cAGd,SAASkhE,EAAev1F,GAItB,MAHqB,iBAAVA,IACTA,EAAQ8gB,OAAO9gB,IAEVA,EAIT,SAASw1F,EAAYC,GACnB,IAAI3nF,EAAW,CACbspC,KAAM,WACJ,IAAIp3C,EAAQy1F,EAAM36C,QAClB,MAAO,CAAC46C,UAAgBjzF,IAAVzC,EAAqBA,MAAOA,KAU9C,OANIk1F,IACFpnF,EAASD,OAAOC,UAAY,WAC1B,OAAOA,IAIJA,EAGT,SAAS8zE,EAAQn9E,GACf9D,KAAKgG,IAAM,GAEPlC,aAAmBm9E,EACrBn9E,EAAQ5C,SAAQ,SAAS7B,EAAO6D,GAC9BlD,KAAKugF,OAAOr9E,EAAM7D,KACjBW,MACM8b,MAAMC,QAAQjY,GACvBA,EAAQ5C,SAAQ,SAAS2c,GACvB7d,KAAKugF,OAAO1iE,EAAO,GAAIA,EAAO,MAC7B7d,MACM8D,GACT5E,OAAO0lE,oBAAoB9gE,GAAS5C,SAAQ,SAASgC,GACnDlD,KAAKugF,OAAOr9E,EAAMY,EAAQZ,MACzBlD,MAgEP,SAASg1F,EAASnmF,GAChB,GAAIA,EAAKomF,SACP,OAAOjqF,QAAQE,OAAO,IAAIgW,UAAU,iBAEtCrS,EAAKomF,UAAW,EAGlB,SAASC,EAAgBC,GACvB,OAAO,IAAInqF,SAAQ,SAASC,EAASC,GACnCiqF,EAAO3zD,OAAS,WACdv2B,EAAQkqF,EAAO7tF,SAEjB6tF,EAAOtzD,QAAU,WACf32B,EAAOiqF,EAAOppF,WAKpB,SAASqpF,EAAsBC,GAC7B,IAAIF,EAAS,IAAIG,WACbxpD,EAAUopD,EAAgBC,GAE9B,OADAA,EAAOI,kBAAkBF,GAClBvpD,EAoBT,SAAS0pD,EAAY72E,GACnB,GAAIA,EAAI0E,MACN,OAAO1E,EAAI0E,MAAM,GAEjB,IAAIoyE,EAAO,IAAI72E,WAAWD,EAAIogD,YAE9B,OADA02B,EAAKlwF,IAAI,IAAIqZ,WAAWD,IACjB82E,EAAK52E,OAIhB,SAAS62E,IA0FP,OAzFA11F,KAAKi1F,UAAW,EAEhBj1F,KAAK21F,UAAY,SAAS9mF,GAhM5B,IAAoBqtC,EAiMhBl8C,KAAK41F,UAAY/mF,EACZA,EAEsB,iBAATA,EAChB7O,KAAK61F,UAAYhnF,EACR0lF,GAAgBC,KAAKhyF,UAAUszF,cAAcjnF,GACtD7O,KAAK+1F,UAAYlnF,EACR0lF,GAAoByB,SAASxzF,UAAUszF,cAAcjnF,GAC9D7O,KAAKi2F,cAAgBpnF,EACZ0lF,GAAwB2B,gBAAgB1zF,UAAUszF,cAAcjnF,GACzE7O,KAAK61F,UAAYhnF,EAAKhB,WACb0mF,GAAuBA,IA5MlBr4C,EA4M6CrtC,IA3MjD+vD,SAASp8D,UAAUszF,cAAc55C,IA4M3Cl8C,KAAKm2F,iBAAmBX,EAAY3mF,EAAKgQ,QAEzC7e,KAAK41F,UAAY,IAAIpB,KAAK,CAACx0F,KAAKm2F,oBACvB5B,IAAwB51B,YAAYn8D,UAAUszF,cAAcjnF,IAAS6lF,EAAkB7lF,IAChG7O,KAAKm2F,iBAAmBX,EAAY3mF,GAEpC7O,KAAK61F,UAAYhnF,EAAO3P,OAAOsD,UAAUqL,SAASnL,KAAKmM,GAhBvD7O,KAAK61F,UAAY,GAmBd71F,KAAK8D,QAAQzB,IAAI,kBACA,iBAATwM,EACT7O,KAAK8D,QAAQyB,IAAI,eAAgB,4BACxBvF,KAAK+1F,WAAa/1F,KAAK+1F,UAAU5vF,KAC1CnG,KAAK8D,QAAQyB,IAAI,eAAgBvF,KAAK+1F,UAAU5vF,MACvCouF,GAAwB2B,gBAAgB1zF,UAAUszF,cAAcjnF,IACzE7O,KAAK8D,QAAQyB,IAAI,eAAgB,qDAKnCgvF,IACFv0F,KAAKq1F,KAAO,WACV,IAAIe,EAAWpB,EAASh1F,MACxB,GAAIo2F,EACF,OAAOA,EAGT,GAAIp2F,KAAK+1F,UACP,OAAO/qF,QAAQC,QAAQjL,KAAK+1F,WACvB,GAAI/1F,KAAKm2F,iBACd,OAAOnrF,QAAQC,QAAQ,IAAIupF,KAAK,CAACx0F,KAAKm2F,oBACjC,GAAIn2F,KAAKi2F,cACd,MAAM,IAAIz1F,MAAM,wCAEhB,OAAOwK,QAAQC,QAAQ,IAAIupF,KAAK,CAACx0F,KAAK61F,cAI1C71F,KAAKq2F,YAAc,WACjB,OAAIr2F,KAAKm2F,iBACAnB,EAASh1F,OAASgL,QAAQC,QAAQjL,KAAKm2F,kBAEvCn2F,KAAKq1F,OAAOlpF,KAAKipF,KAK9Bp1F,KAAK8uE,KAAO,WACV,IA3FoBumB,EAClBF,EACArpD,EAyFEsqD,EAAWpB,EAASh1F,MACxB,GAAIo2F,EACF,OAAOA,EAGT,GAAIp2F,KAAK+1F,UACP,OAjGkBV,EAiGIr1F,KAAK+1F,UA/F3BjqD,EAAUopD,EADVC,EAAS,IAAIG,YAEjBH,EAAOmB,WAAWjB,GACXvpD,EA8FE,GAAI9rC,KAAKm2F,iBACd,OAAOnrF,QAAQC,QA5FrB,SAA+B0T,GAI7B,IAHA,IAAI82E,EAAO,IAAI72E,WAAWD,GACtB43E,EAAQ,IAAIz6E,MAAM25E,EAAK1vF,QAElB6S,EAAI,EAAGA,EAAI68E,EAAK1vF,OAAQ6S,IAC/B29E,EAAM39E,GAAKuH,OAAOC,aAAaq1E,EAAK78E,IAEtC,OAAO29E,EAAM/1E,KAAK,IAqFSg2E,CAAsBx2F,KAAKm2F,mBAC7C,GAAIn2F,KAAKi2F,cACd,MAAM,IAAIz1F,MAAM,wCAEhB,OAAOwK,QAAQC,QAAQjL,KAAK61F,YAI5BtB,IACFv0F,KAAKy2F,SAAW,WACd,OAAOz2F,KAAK8uE,OAAO3iE,KAAKyU,KAI5B5gB,KAAKixB,KAAO,WACV,OAAOjxB,KAAK8uE,OAAO3iE,KAAKC,KAAK2b,QAGxB/nB,KA1MTihF,EAAQz+E,UAAU+9E,OAAS,SAASr9E,EAAM7D,GACxC6D,EAAOyxF,EAAczxF,GACrB7D,EAAQu1F,EAAev1F,GACvB,IAAIq3F,EAAW12F,KAAKgG,IAAI9C,GACxBlD,KAAKgG,IAAI9C,GAAQwzF,EAAWA,EAAW,KAAOr3F,EAAQA,GAGxD4hF,EAAQz+E,UAAkB,OAAI,SAASU,UAC9BlD,KAAKgG,IAAI2uF,EAAczxF,KAGhC+9E,EAAQz+E,UAAUH,IAAM,SAASa,GAE/B,OADAA,EAAOyxF,EAAczxF,GACdlD,KAAKkI,IAAIhF,GAAQlD,KAAKgG,IAAI9C,GAAQ,MAG3C+9E,EAAQz+E,UAAU0F,IAAM,SAAShF,GAC/B,OAAOlD,KAAKgG,IAAIvD,eAAekyF,EAAczxF,KAG/C+9E,EAAQz+E,UAAU+C,IAAM,SAASrC,EAAM7D,GACrCW,KAAKgG,IAAI2uF,EAAczxF,IAAS0xF,EAAev1F,IAGjD4hF,EAAQz+E,UAAUtB,QAAU,SAAS8M,EAAU2oF,GAC7C,IAAK,IAAIzzF,KAAQlD,KAAKgG,IAChBhG,KAAKgG,IAAIvD,eAAeS,IAC1B8K,EAAStL,KAAKi0F,EAAS32F,KAAKgG,IAAI9C,GAAOA,EAAMlD,OAKnDihF,EAAQz+E,UAAUoK,KAAO,WACvB,IAAIkoF,EAAQ,GAIZ,OAHA90F,KAAKkB,SAAQ,SAAS7B,EAAO6D,GAC3B4xF,EAAMrvF,KAAKvC,MAEN2xF,EAAYC,IAGrB7T,EAAQz+E,UAAUuK,OAAS,WACzB,IAAI+nF,EAAQ,GAIZ,OAHA90F,KAAKkB,SAAQ,SAAS7B,GACpBy1F,EAAMrvF,KAAKpG,MAENw1F,EAAYC,IAGrB7T,EAAQz+E,UAAUvB,QAAU,WAC1B,IAAI6zF,EAAQ,GAIZ,OAHA90F,KAAKkB,SAAQ,SAAS7B,EAAO6D,GAC3B4xF,EAAMrvF,KAAK,CAACvC,EAAM7D,OAEbw1F,EAAYC,IAGjBP,IACFtT,EAAQz+E,UAAU0K,OAAOC,UAAY8zE,EAAQz+E,UAAUvB,SAqJzD,IAAI21F,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAO3D,SAASxyF,EAAQZ,EAAO6N,GAEtB,IAPuB0f,EACnB8lE,EAMAhoF,GADJwC,EAAUA,GAAW,IACFxC,KAEnB,GAAIrL,aAAiBY,EAAS,CAC5B,GAAIZ,EAAMyxF,SACR,MAAM,IAAI/zE,UAAU,gBAEtBlhB,KAAKyD,IAAMD,EAAMC,IACjBzD,KAAK6wB,YAAcrtB,EAAMqtB,YACpBxf,EAAQvN,UACX9D,KAAK8D,QAAU,IAAIm9E,EAAQz9E,EAAMM,UAEnC9D,KAAK+wB,OAASvtB,EAAMutB,OACpB/wB,KAAK8wB,KAAOttB,EAAMstB,KAClB9wB,KAAK0wB,OAASltB,EAAMktB,OACf7hB,GAA2B,MAAnBrL,EAAMoyF,YACjB/mF,EAAOrL,EAAMoyF,UACbpyF,EAAMyxF,UAAW,QAGnBj1F,KAAKyD,IAAM0c,OAAO3c,GAYpB,GATAxD,KAAK6wB,YAAcxf,EAAQwf,aAAe7wB,KAAK6wB,aAAe,eAC1Dxf,EAAQvN,SAAY9D,KAAK8D,UAC3B9D,KAAK8D,QAAU,IAAIm9E,EAAQ5vE,EAAQvN,UAErC9D,KAAK+wB,QAhCD8lE,GADmB9lE,EAiCO1f,EAAQ0f,QAAU/wB,KAAK+wB,QAAU,OAhC1CpW,cACdi8E,EAAQ9+E,QAAQ++E,IAAY,EAAIA,EAAU9lE,GAgCjD/wB,KAAK8wB,KAAOzf,EAAQyf,MAAQ9wB,KAAK8wB,MAAQ,KACzC9wB,KAAK0wB,OAASrf,EAAQqf,QAAU1wB,KAAK0wB,OACrC1wB,KAAK82F,SAAW,MAEK,QAAhB92F,KAAK+wB,QAAoC,SAAhB/wB,KAAK+wB,SAAsBliB,EACvD,MAAM,IAAIqS,UAAU,6CAEtBlhB,KAAK21F,UAAU9mF,GAOjB,SAAS+R,EAAO/R,GACd,IAAIkoF,EAAO,IAAIf,SAYf,OAXAnnF,EACGw1D,OACAvjD,MAAM,KACN5f,SAAQ,SAASwuF,GAChB,GAAIA,EAAO,CACT,IAAI5uE,EAAQ4uE,EAAM5uE,MAAM,KACpB5d,EAAO4d,EAAMq5B,QAAQ15B,QAAQ,MAAO,KACpCphB,EAAQyhB,EAAMN,KAAK,KAAKC,QAAQ,MAAO,KAC3Cs2E,EAAKxW,OAAOtmD,mBAAmB/2B,GAAO+2B,mBAAmB56B,QAGxD03F,EAqBT,SAASC,EAASC,EAAU5lF,GACrBA,IACHA,EAAU,IAGZrR,KAAKmG,KAAO,UACZnG,KAAKgxB,YAA4BlvB,IAAnBuP,EAAQ2f,OAAuB,IAAM3f,EAAQ2f,OAC3DhxB,KAAKouE,GAAKpuE,KAAKgxB,QAAU,KAAOhxB,KAAKgxB,OAAS,IAC9ChxB,KAAK4hC,WAAa,eAAgBvwB,EAAUA,EAAQuwB,WAAa,KACjE5hC,KAAK8D,QAAU,IAAIm9E,EAAQ5vE,EAAQvN,SACnC9D,KAAKyD,IAAM4N,EAAQ5N,KAAO,GAC1BzD,KAAK21F,UAAUsB,GAjDjB7yF,EAAQ5B,UAAU2rC,MAAQ,WACxB,OAAO,IAAI/pC,EAAQpE,KAAM,CAAC6O,KAAM7O,KAAK41F,aAmCvCF,EAAKhzF,KAAK0B,EAAQ5B,WAgBlBkzF,EAAKhzF,KAAKs0F,EAASx0F,WAEnBw0F,EAASx0F,UAAU2rC,MAAQ,WACzB,OAAO,IAAI6oD,EAASh3F,KAAK41F,UAAW,CAClC5kE,OAAQhxB,KAAKgxB,OACb4Q,WAAY5hC,KAAK4hC,WACjB99B,QAAS,IAAIm9E,EAAQjhF,KAAK8D,SAC1BL,IAAKzD,KAAKyD,OAIduzF,EAASjrF,MAAQ,WACf,IAAI0kB,EAAW,IAAIumE,EAAS,KAAM,CAAChmE,OAAQ,EAAG4Q,WAAY,KAE1D,OADAnR,EAAStqB,KAAO,QACTsqB,GAGT,IAAIymE,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CF,EAASrmE,SAAW,SAASltB,EAAKutB,GAChC,IAA0C,IAAtCkmE,EAAiBp/E,QAAQkZ,GAC3B,MAAM,IAAI5R,WAAW,uBAGvB,OAAO,IAAI43E,EAAS,KAAM,CAAChmE,OAAQA,EAAQltB,QAAS,CAACk0B,SAAUv0B,MAGjErE,EAAQk1F,aAAen5E,EAAKm5E,aAC5B,IACE,IAAIl1F,EAAQk1F,aACZ,MAAOppE,GACP9rB,EAAQk1F,aAAe,SAAS59E,EAASxT,GACvClD,KAAK0W,QAAUA,EACf1W,KAAKkD,KAAOA,EACZ,IAAI6I,EAAQvL,MAAMkW,GAClB1W,KAAK+mF,MAAQh7E,EAAMg7E,OAErB3nF,EAAQk1F,aAAa9xF,UAAYtD,OAAOuC,OAAOjB,MAAMgC,WACrDpD,EAAQk1F,aAAa9xF,UAAU/C,YAAcL,EAAQk1F,aAGvD,SAASpgF,EAAM1Q,EAAOU,GACpB,OAAO,IAAI8G,SAAQ,SAASC,EAASC,GACnC,IAAIjH,EAAU,IAAIG,EAAQZ,EAAOU,GAEjC,GAAID,EAAQysB,QAAUzsB,EAAQysB,OAAOymE,QACnC,OAAOjsF,EAAO,IAAI9L,EAAQk1F,aAAa,UAAW,eAGpD,IAAI8C,EAAM,IAAIj/D,eAEd,SAASk/D,IACPD,EAAI5mE,QAGN4mE,EAAI51D,OAAS,WACX,IAxFgB81D,EAChBxzF,EAuFIuN,EAAU,CACZ2f,OAAQomE,EAAIpmE,OACZ4Q,WAAYw1D,EAAIx1D,WAChB99B,SA3FcwzF,EA2FQF,EAAIG,yBAA2B,GA1FvDzzF,EAAU,IAAIm9E,EAGQqW,EAAW72E,QAAQ,eAAgB,KACzCK,MAAM,SAAS5f,SAAQ,SAASs2F,GAClD,IAAI7gE,EAAQ6gE,EAAK12E,MAAM,KACnB3f,EAAMw1B,EAAMwjB,QAAQkqB,OACxB,GAAIljE,EAAK,CACP,IAAI9B,EAAQs3B,EAAMnW,KAAK,KAAK6jD,OAC5BvgE,EAAQy8E,OAAOp/E,EAAK9B,OAGjByE,IAgFHuN,EAAQ5N,IAAM,gBAAiB2zF,EAAMA,EAAIK,YAAcpmF,EAAQvN,QAAQzB,IAAI,iBAC3E,IAAIwM,EAAO,aAAcuoF,EAAMA,EAAI3mE,SAAW2mE,EAAIz1D,aAClD12B,EAAQ,IAAI+rF,EAASnoF,EAAMwC,KAG7B+lF,EAAIv1D,QAAU,WACZ32B,EAAO,IAAIgW,UAAU,4BAGvBk2E,EAAIM,UAAY,WACdxsF,EAAO,IAAIgW,UAAU,4BAGvBk2E,EAAIO,QAAU,WACZzsF,EAAO,IAAI9L,EAAQk1F,aAAa,UAAW,gBAG7C8C,EAAI71D,KAAKt9B,EAAQ8sB,OAAQ9sB,EAAQR,KAAK,GAEV,YAAxBQ,EAAQ4sB,YACVumE,EAAIQ,iBAAkB,EACW,SAAxB3zF,EAAQ4sB,cACjBumE,EAAIQ,iBAAkB,GAGpB,iBAAkBR,GAAO7C,IAC3B6C,EAAIS,aAAe,QAGrB5zF,EAAQH,QAAQ5C,SAAQ,SAAS7B,EAAO6D,GACtCk0F,EAAIt1D,iBAAiB5+B,EAAM7D,MAGzB4E,EAAQysB,SACVzsB,EAAQysB,OAAOwZ,iBAAiB,QAASmtD,GAEzCD,EAAIU,mBAAqB,WAEA,IAAnBV,EAAIW,YACN9zF,EAAQysB,OAAOub,oBAAoB,QAASorD,KAKlDD,EAAIr1D,UAAkC,IAAtB99B,EAAQ2xF,UAA4B,KAAO3xF,EAAQ2xF,cAIvE1hF,EAAM8jF,UAAW,EAEZ78E,EAAKjH,QACRiH,EAAKjH,MAAQA,EACbiH,EAAK8lE,QAAUA,EACf9lE,EAAK/W,QAAUA,EACf+W,EAAK67E,SAAWA,GAGlB53F,EAAQ6hF,QAAUA,EAClB7hF,EAAQgF,QAAUA,EAClBhF,EAAQ43F,SAAWA,EACnB53F,EAAQ8U,MAAQA,EAEhBhV,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IA5gBvC,CAghBd,IAlhBH,CAmhBGg1F,GACHA,EAASngF,MAAM+jF,UAAW,SAEnB5D,EAASngF,MAAM8jF,SAGtB,IAAIE,EAAM7D,GACVj1F,EAAU84F,EAAIhkF,OACd,QAAkBgkF,EAAIhkF,MACtB9U,EAAQ8U,MAAQgkF,EAAIhkF,MACpB9U,EAAQ6hF,QAAUiX,EAAIjX,QACtB7hF,EAAQgF,QAAU8zF,EAAI9zF,QACtBhF,EAAQ43F,SAAWkB,EAAIlB,SACvBhrB,EAAO5sE,QAAUA,8BCxiBjBF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQs6N,eAAiBt6N,EAAQu6N,kBAAe,EAChDv6N,EAAQu6N,aAAe,IAAI90N,IAAI,CAC3B,CAAC,WAAY,YACb,CAAC,cAAe,eAChB,CAAC,eAAgB,gBACjB,CAAC,eAAgB,gBACjB,CAAC,gBAAiB,iBAClB,CAAC,mBAAoB,oBACrB,CAAC,WAAY,YACb,CAAC,UAAW,WACZ,CAAC,gBAAiB,iBAClB,CAAC,sBAAuB,uBACxB,CAAC,cAAe,eAChB,CAAC,mBAAoB,oBACrB,CAAC,oBAAqB,qBACtB,CAAC,oBAAqB,qBACtB,CAAC,iBAAkB,kBACnB,CAAC,eAAgB,gBACjB,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,iBAAkB,kBACnB,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,cAAe,eAChB,CAAC,eAAgB,gBACjB,CAAC,WAAY,YACb,CAAC,eAAgB,gBACjB,CAAC,qBAAsB,sBACvB,CAAC,cAAe,eAChB,CAAC,SAAU,UACX,CAAC,eAAgB,gBACjB,CAAC,gBAAiB,iBAClB,CAAC,WAAY,YACb,CAAC,iBAAkB,kBACnB,CAAC,iBAAkB,kBACnB,CAAC,WAAY,cAEjBzF,EAAQs6N,eAAiB,IAAI70N,IAAI,CAC7B,CAAC,gBAAiB,iBAClB,CAAC,gBAAiB,iBAClB,CAAC,gBAAiB,iBAClB,CAAC,gBAAiB,iBAClB,CAAC,cAAe,eAChB,CAAC,WAAY,YACb,CAAC,gBAAiB,iBAClB,CAAC,kBAAmB,mBACpB,CAAC,WAAY,YACb,CAAC,cAAe,eAChB,CAAC,WAAY,YACb,CAAC,oBAAqB,qBACtB,CAAC,gBAAiB,iBAClB,CAAC,eAAgB,gBACjB,CAAC,mBAAoB,oBACrB,CAAC,YAAa,aACd,CAAC,aAAc,cACf,CAAC,WAAY,YACb,CAAC,eAAgB,gBACjB,CAAC,oBAAqB,qBACtB,CAAC,eAAgB,gBACjB,CAAC,cAAe,eAChB,CAAC,cAAe,eAChB,CAAC,mBAAoB,oBACrB,CAAC,YAAa,aACd,CAAC,aAAc,cACf,CAAC,aAAc,cACf,CAAC,sBAAuB,uBACxB,CAAC,mBAAoB,oBACrB,CAAC,eAAgB,gBACjB,CAAC,YAAa,aACd,CAAC,YAAa,aACd,CAAC,YAAa,aACd,CAAC,gBAAiB,iBAClB,CAAC,sBAAuB,uBACxB,CAAC,iBAAkB,kBACnB,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,cAAe,eAChB,CAAC,YAAa,aACd,CAAC,qBAAsB,sBACvB,CAAC,mBAAoB,oBACrB,CAAC,mBAAoB,oBACrB,CAAC,mBAAoB,oBACrB,CAAC,eAAgB,gBACjB,CAAC,cAAe,eAChB,CAAC,eAAgB,gBACjB,CAAC,cAAe,eAChB,CAAC,eAAgB,gBACjB,CAAC,iBAAkB,kBACnB,CAAC,cAAe,eAChB,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,aAAc,cACf,CAAC,UAAW,WACZ,CAAC,aAAc,cACf,CAAC,mBAAoB,oBACrB,CAAC,mBAAoB,oBACrB,CAAC,aAAc,oDCpGnB,IAAI+0N,EAAY55N,MAAQA,KAAK45N,UAAa,WAStC,OARAA,EAAW16N,OAAO4W,QAAU,SAASshB,GACjC,IAAK,IAAIvN,EAAGjR,EAAI,EAAG8V,EAAI3R,UAAUhX,OAAQ6S,EAAI8V,EAAG9V,IAE5C,IAAK,IAAIrW,KADTsnB,EAAI9M,UAAUnE,GACO1Z,OAAOsD,UAAUC,eAAeC,KAAKmnB,EAAGtnB,KACzD60B,EAAE70B,GAAKsnB,EAAEtnB,IAEjB,OAAO60B,GAEJwiM,EAASv5M,MAAMrgB,KAAM+c,YAE5Bvb,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEV0tI,EAAsBtvI,MAAQA,KAAKsvI,qBAAwBpwI,OAAOuC,OAAS,SAAUC,EAAGi5B,GACxFz7B,OAAOC,eAAeuC,EAAG,UAAW,CAAEU,YAAY,EAAM/C,MAAOs7B,KAC9D,SAASj5B,EAAGi5B,GACbj5B,EAAW,QAAIi5B,IAEf40G,EAAgBvvI,MAAQA,KAAKuvI,cAAiB,SAAU98F,GACxD,GAAIA,GAAOA,EAAIxwC,WAAY,OAAOwwC,EAClC,IAAInrC,EAAS,GACb,GAAW,MAAPmrC,EAAa,IAAK,IAAI7wC,KAAK6wC,EAAe,YAAN7wC,GAAmB1C,OAAOsD,UAAUC,eAAeC,KAAK+vC,EAAK7wC,IAAIJ,EAAgB8F,EAAQmrC,EAAK7wC,GAEtI,OADA0tI,EAAmBhoI,EAAQmrC,GACpBnrC,GAEXpI,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IAItD,IAAIw6N,EAActqF,EAAa,EAAQ,QACnCuqF,EAAa,EAAQ,OAOrBC,EAAiB,EAAQ,OACzBC,EAAoB,IAAIxsN,IAAI,CAC5B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,aA4BAysN,EAAY,IAAIzsN,IAAI,CACpB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,QAUJ,SAAS0sN,EAAOj1N,EAAMoM,QACF,IAAZA,IAAsBA,EAAU,IAGpC,IAFA,IAAIipG,GAAQ,WAAYr1G,EAAOA,EAAO,CAACA,IACnCvB,EAAS,GACJkV,EAAI,EAAGA,EAAI0hG,EAAMv0G,OAAQ6S,IAC9BlV,GAAUy2N,EAAW7/G,EAAM1hG,GAAIvH,GAEnC,OAAO3N,EAGX,SAASy2N,EAAWl1N,EAAMoM,GACtB,OAAQpM,EAAKkB,MACT,KAAK0zN,EAAYO,KACb,OAAOF,EAAOj1N,EAAKL,SAAUyM,GACjC,KAAKwoN,EAAYQ,UACjB,KAAKR,EAAYS,QACb,MAmED,IAnEwBr1N,EAmEbiE,KAAO,IAlErB,KAAK2wN,EAAYU,QACb,MAkFD,UAlFsBt1N,EAkFRiE,KAAO,SAjFxB,KAAK2wN,EAAYW,MACb,OA4EZ,SAAqB3tJ,GACjB,MAAO,YAAcA,EAAKjoE,SAAS,GAAGsE,KAAO,MA7E9BuxN,CAAYx1N,GACvB,KAAK40N,EAAYa,OACjB,KAAKb,EAAYc,MACjB,KAAKd,EAAYe,IACb,OAiBZ,SAAmB/tJ,EAAMZ,GACrB,IAAIhrD,EAEiB,YAAjBgrD,EAAK+zH,UAELnzH,EAAK3pE,KAA6D,QAArD+d,EAAK84M,EAAeJ,aAAat3N,IAAIwqE,EAAK3pE,aAA0B,IAAP+d,EAAgBA,EAAK4rD,EAAK3pE,KAEhG2pE,EAAKtC,QACLswJ,EAA6B3yN,IAAI2kE,EAAKtC,OAAOrnE,QAC7C+oE,EAAO2tJ,EAASA,EAAS,GAAI3tJ,GAAO,CAAE+zH,SAAS,OAGlD/zH,EAAK+zH,SAAW86B,EAAgB5yN,IAAI2kE,EAAK3pE,QAC1C+oE,EAAO2tJ,EAASA,EAAS,GAAI3tJ,GAAO,CAAE+zH,QAAS,aAEnD,IAAIr9K,EAAM,IAAMkqD,EAAK3pE,KACjB8iM,EA7GR,SAA0B/D,EAAYh2H,GAClC,GAAKg2H,EAEL,OAAO/iM,OAAO0N,KAAKq1L,GACdj8L,KAAI,SAAU7E,GACf,IAAI8f,EAAI6C,EACJzkB,EAAmC,QAA1B4hB,EAAKghL,EAAW9gM,UAAyB,IAAP8f,EAAgBA,EAAK,GAKpE,MAJqB,YAAjBgrD,EAAK+zH,UAEL7+L,EAAwD,QAAjD2iB,EAAKi2M,EAAeL,eAAer3N,IAAIlB,UAAyB,IAAP2iB,EAAgBA,EAAK3iB,GAEpF8qE,EAAK8uJ,YAAe9uJ,EAAK+zH,SAAqB,KAAV3gM,EAGlC8B,EAAM,OAAiC,IAAxB8qE,EAAK62H,eACrBg3B,EAAWkB,UAAU37N,GACrBA,EAAMohB,QAAQ,KAAM,WAAa,IAJ5Btf,KAMVqf,KAAK,KA2FIy6M,CAAiBpuJ,EAAKm5H,QAAS/5H,GAuB7C,OAtBI+5H,IACArjL,GAAO,IAAMqjL,GAEY,IAAzBn5H,EAAKjoE,SAASmB,SACbkmE,EAAK+zH,SAE2B,IAAzB/zH,EAAKivJ,gBAELjvJ,EAAKivJ,iBAAmBjB,EAAU/xN,IAAI2kE,EAAK3pE,QAC9C+oE,EAAK+zH,UACNr9K,GAAO,KACXA,GAAO,OAGPA,GAAO,IACHkqD,EAAKjoE,SAASmB,OAAS,IACvB4c,GAAOu3M,EAAOrtJ,EAAKjoE,SAAUqnE,KAE7BA,EAAK+zH,SAAYi6B,EAAU/xN,IAAI2kE,EAAK3pE,QACpCyf,GAAO,KAAOkqD,EAAK3pE,KAAO,MAG3Byf,EAxDQw4M,CAAUl2N,EAAMoM,GAC3B,KAAKwoN,EAAYuB,KACb,OA2DZ,SAAoBvuJ,EAAMZ,GACtB,IAAI/iE,EAAO2jE,EAAK3jE,MAAQ,GAQxB,OAN4B,IAAxB+iE,EAAK62H,iBACF72H,EAAK+zH,SACJnzH,EAAKtC,QACLyvJ,EAAkB9xN,IAAI2kE,EAAKtC,OAAOrnE,QACtCgG,EAAO4wN,EAAWkB,UAAU9xN,IAEzBA,EApEQmyN,CAAWp2N,EAAMoM,IAjBpCjS,EAAA,QAAkB86N,EAoBlB,IAAIW,EAA+B,IAAIrtN,IAAI,CACvC,KACA,KACA,KACA,KACA,QACA,iBACA,gBACA,OACA,UAEAstN,EAAkB,IAAIttN,IAAI,CAAC,MAAO,qCCjJtC,IAAIqsN,EAHJ36N,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQk7N,QAAUl7N,EAAQo7N,MAAQp7N,EAAQw7N,IAAMx7N,EAAQu7N,MAAQv7N,EAAQs7N,OAASt7N,EAAQm7N,QAAUn7N,EAAQi7N,UAAYj7N,EAAQg8N,KAAOh8N,EAAQg7N,KAAOh7N,EAAQk8N,MAAQl8N,EAAQy6N,iBAAc,EAG3L,SAAWA,GAEPA,EAAkB,KAAI,OAEtBA,EAAkB,KAAI,OAEtBA,EAAuB,UAAI,YAE3BA,EAAqB,QAAI,UAEzBA,EAAoB,OAAI,SAExBA,EAAmB,MAAI,QAEvBA,EAAiB,IAAI,MAErBA,EAAmB,MAAI,QAEvBA,EAAqB,QAAI,UAlB7B,CAmBGA,EAAcz6N,EAAQy6N,cAAgBz6N,EAAQy6N,YAAc,KAW/Dz6N,EAAQk8N,MALR,SAAezuJ,GACX,OAAQA,EAAK1mE,OAAS0zN,EAAYe,KAC9B/tJ,EAAK1mE,OAAS0zN,EAAYa,QAC1B7tJ,EAAK1mE,OAAS0zN,EAAYc,OAKlCv7N,EAAQg7N,KAAOP,EAAYO,KAE3Bh7N,EAAQg8N,KAAOvB,EAAYuB,KAE3Bh8N,EAAQi7N,UAAYR,EAAYQ,UAEhCj7N,EAAQm7N,QAAUV,EAAYU,QAE9Bn7N,EAAQs7N,OAASb,EAAYa,OAE7Bt7N,EAAQu7N,MAAQd,EAAYc,MAE5Bv7N,EAAQw7N,IAAMf,EAAYe,IAE1Bx7N,EAAQo7N,MAAQX,EAAYW,MAE5Bp7N,EAAQk7N,QAAUT,EAAYS,4CCrD9B,IAAI94N,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQm8N,gBAAa,EACrB,IAAIC,EAAmB,EAAQ,OAC3BC,EAAS,EAAQ,OACrBn5N,EAAa,EAAQ,OAAWlD,GAChC,IAAIs8N,EAAe,OAEfC,EAAc,CACdC,qBAAqB,EACrBC,kBAAkB,EAClBC,gBAAgB,EAChB97B,SAAS,GAETu7B,EAA4B,WAM5B,SAASA,EAAWvtN,EAAUqD,EAAS0qN,GAEnC/7N,KAAKg8N,IAAM,GAEXh8N,KAAK8oF,KAAO,IAAI2yI,EAAOQ,SAASj8N,KAAKg8N,KAErCh8N,KAAK+0F,MAAO,EAEZ/0F,KAAKk8N,SAAW,CAACl8N,KAAK8oF,MAEtB9oF,KAAKm8N,SAAW,KAEhBn8N,KAAKwoF,OAAS,KAES,mBAAZn3E,IACP0qN,EAAY1qN,EACZA,EAAUsqN,GAEU,iBAAb3tN,IACPqD,EAAUrD,EACVA,OAAWlM,GAEf9B,KAAKgO,SAAWA,MAAAA,EAA2CA,EAAW,KACtEhO,KAAKqR,QAAUA,MAAAA,EAAyCA,EAAUsqN,EAClE37N,KAAK+7N,UAAYA,MAAAA,EAA6CA,EAAY,KAkH9E,OAhHAR,EAAW/4N,UAAU+jM,aAAe,SAAU/9G,GAC1CxoF,KAAKwoF,OAASA,GAGlB+yI,EAAW/4N,UAAUgmM,QAAU,WAC3BxoM,KAAKg8N,IAAM,GACXh8N,KAAK8oF,KAAO,IAAI2yI,EAAOQ,SAASj8N,KAAKg8N,KACrCh8N,KAAK+0F,MAAO,EACZ/0F,KAAKk8N,SAAW,CAACl8N,KAAK8oF,MACtB9oF,KAAKm8N,SAAW,KAChBn8N,KAAKwoF,OAAS,MAGlB+yI,EAAW/4N,UAAUy9H,MAAQ,WACrBjgI,KAAK+0F,OAET/0F,KAAK+0F,MAAO,EACZ/0F,KAAKwoF,OAAS,KACdxoF,KAAKo8N,eAAe,QAExBb,EAAW/4N,UAAUq/B,QAAU,SAAU91B,GACrC/L,KAAKo8N,eAAerwN,IAExBwvN,EAAW/4N,UAAUkgM,WAAa,WAC9B1iM,KAAKm8N,SAAW,KAChB,IAAItvJ,EAAO7sE,KAAKk8N,SAAS15M,MACrBxiB,KAAKqR,QAAQyqN,iBACbjvJ,EAAK84H,SAAW3lM,KAAKwoF,OAAOm9G,UAE5B3lM,KAAK+7N,WACL/7N,KAAK+7N,UAAUlvJ,IAEvB0uJ,EAAW/4N,UAAUogM,UAAY,SAAU1/L,EAAM8iM,GAC7C,IAAI7/L,EAAOnG,KAAKqR,QAAQ2uL,QAAUw7B,EAAiB3B,YAAYe,SAAM94N,EACjEsnF,EAAU,IAAIqyI,EAAOY,QAAQn5N,EAAM8iM,OAASlkM,EAAWqE,GAC3DnG,KAAKs8N,QAAQlzI,GACbppF,KAAKk8N,SAASz2N,KAAK2jF,IAEvBmyI,EAAW/4N,UAAUqgM,OAAS,SAAU35L,GACpC,IAAI0yN,EAAsB57N,KAAKqR,QAAQuqN,oBACnCO,EAAWn8N,KAAKm8N,SACpB,GAAIA,GAAYA,EAASh2N,OAASq1N,EAAiB3B,YAAYuB,KACvDQ,EACAO,EAASjzN,MAAQizN,EAASjzN,KAAOA,GAAMuX,QAAQi7M,EAAc,KAG7DS,EAASjzN,MAAQA,EAEjBlJ,KAAKqR,QAAQyqN,iBACbK,EAASx2B,SAAW3lM,KAAKwoF,OAAOm9G,cAGnC,CACGi2B,IACA1yN,EAAOA,EAAKuX,QAAQi7M,EAAc,MAEtC,IAAIz2N,EAAO,IAAIw2N,EAAOL,KAAKlyN,GAC3BlJ,KAAKs8N,QAAQr3N,GACbjF,KAAKm8N,SAAWl3N,IAGxBs2N,EAAW/4N,UAAUslM,UAAY,SAAU5+L,GACvC,GAAIlJ,KAAKm8N,UAAYn8N,KAAKm8N,SAASh2N,OAASq1N,EAAiB3B,YAAYU,QACrEv6N,KAAKm8N,SAASjzN,MAAQA,MAD1B,CAIA,IAAIjE,EAAO,IAAIw2N,EAAOlB,QAAQrxN,GAC9BlJ,KAAKs8N,QAAQr3N,GACbjF,KAAKm8N,SAAWl3N,IAEpBs2N,EAAW/4N,UAAUulM,aAAe,WAChC/nM,KAAKm8N,SAAW,MAEpBZ,EAAW/4N,UAAU8lM,aAAe,WAChC,IAAIx5H,EAAO,IAAI2sJ,EAAOL,KAAK,IACvBn2N,EAAO,IAAIw2N,EAAOc,iBAAiBf,EAAiB3B,YAAYW,MAAO,CAAC1rJ,IAC5E9uE,KAAKs8N,QAAQr3N,GACb6pE,EAAKvE,OAAStlE,EACdjF,KAAKm8N,SAAWrtJ,GAEpBysJ,EAAW/4N,UAAU+lM,WAAa,WAC9BvoM,KAAKm8N,SAAW,MAEpBZ,EAAW/4N,UAAUmlM,wBAA0B,SAAUzkM,EAAMgG,GAC3D,IAAIjE,EAAO,IAAIw2N,EAAOe,sBAAsBt5N,EAAMgG,GAClDlJ,KAAKs8N,QAAQr3N,IAEjBs2N,EAAW/4N,UAAU45N,eAAiB,SAAUrwN,GAC5C,GAA6B,mBAAlB/L,KAAKgO,SACZhO,KAAKgO,SAASjC,EAAO/L,KAAKg8N,UAEzB,GAAIjwN,EACL,MAAMA,GAGdwvN,EAAW/4N,UAAU85N,QAAU,SAAUr3N,GACrC,IAAIslE,EAASvqE,KAAKk8N,SAASl8N,KAAKk8N,SAASn2N,OAAS,GAC9C02N,EAAkBlyJ,EAAO3lE,SAAS2lE,EAAO3lE,SAASmB,OAAS,GAC3D/F,KAAKqR,QAAQwqN,mBACb52N,EAAKygM,WAAa1lM,KAAKwoF,OAAOk9G,YAE9B1lM,KAAKqR,QAAQyqN,iBACb72N,EAAK0gM,SAAW3lM,KAAKwoF,OAAOm9G,UAEhCp7H,EAAO3lE,SAASa,KAAKR,GACjBw3N,IACAx3N,EAAK43G,KAAO4/G,EACZA,EAAgBhmL,KAAOxxC,GAE3BA,EAAKslE,OAASA,EACdvqE,KAAKm8N,SAAW,MAEbZ,EAhJoB,GAkJ/Bn8N,EAAQm8N,WAAaA,EACrBn8N,EAAA,QAAkBm8N,sCC9KlB,IACQruB,EADJC,EAAantM,MAAQA,KAAKmtM,YACtBD,EAAgB,SAAU/kL,EAAG1E,GAI7B,OAHAypL,EAAgBhuM,OAAOgmC,gBAClB,CAAEC,UAAW,cAAgBrpB,OAAS,SAAUqM,EAAG1E,GAAK0E,EAAEgd,UAAY1hB,IACvE,SAAU0E,EAAG1E,GAAK,IAAK,IAAIlhB,KAAKkhB,EAAOvkB,OAAOsD,UAAUC,eAAeC,KAAK+gB,EAAGlhB,KAAI4lB,EAAE5lB,GAAKkhB,EAAElhB,KACzF2qM,EAAc/kL,EAAG1E,IAErB,SAAU0E,EAAG1E,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIvC,UAAU,uBAAyBf,OAAOsD,GAAK,iCAE7D,SAAS2pL,IAAOptM,KAAKP,YAAc0oB,EADnC+kL,EAAc/kL,EAAG1E,GAEjB0E,EAAE3lB,UAAkB,OAANihB,EAAavkB,OAAOuC,OAAOgiB,IAAM2pL,EAAG5qM,UAAYihB,EAAEjhB,UAAW,IAAI4qM,KAGnFwsB,EAAY55N,MAAQA,KAAK45N,UAAa,WAStC,OARAA,EAAW16N,OAAO4W,QAAU,SAASshB,GACjC,IAAK,IAAIvN,EAAGjR,EAAI,EAAG8V,EAAI3R,UAAUhX,OAAQ6S,EAAI8V,EAAG9V,IAE5C,IAAK,IAAIrW,KADTsnB,EAAI9M,UAAUnE,GACO1Z,OAAOsD,UAAUC,eAAeC,KAAKmnB,EAAGtnB,KACzD60B,EAAE70B,GAAKsnB,EAAEtnB,IAEjB,OAAO60B,GAEJwiM,EAASv5M,MAAMrgB,KAAM+c,YAEhC7d,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQs9N,UAAYt9N,EAAQu9N,YAAcv9N,EAAQw9N,WAAax9N,EAAQy9N,YAAcz9N,EAAQ09N,UAAY19N,EAAQ29N,OAAS39N,EAAQ49N,QAAU59N,EAAQk8N,MAAQl8N,EAAQi9N,QAAUj9N,EAAQ68N,SAAW78N,EAAQm9N,iBAAmBn9N,EAAQo9N,sBAAwBp9N,EAAQm7N,QAAUn7N,EAAQg8N,KAAOh8N,EAAQ69N,SAAW79N,EAAQ89N,UAAO,EAC/T,IAAI1B,EAAmB,EAAQ,OAC3B2B,EAAY,IAAIt4N,IAAI,CACpB,CAAC22N,EAAiB3B,YAAYe,IAAK,GACnC,CAACY,EAAiB3B,YAAYa,OAAQ,GACtC,CAACc,EAAiB3B,YAAYc,MAAO,GACrC,CAACa,EAAiB3B,YAAYQ,UAAW,GACzC,CAACmB,EAAiB3B,YAAYuB,KAAM,GACpC,CAACI,EAAiB3B,YAAYW,MAAO,GACrC,CAACgB,EAAiB3B,YAAYU,QAAS,GACvC,CAACiB,EAAiB3B,YAAYO,KAAM,KAMpC8C,EAAsB,WAKtB,SAASA,EAAK/2N,GACVnG,KAAKmG,KAAOA,EAEZnG,KAAKuqE,OAAS,KAEdvqE,KAAK68G,KAAO,KAEZ78G,KAAKy2C,KAAO,KAEZz2C,KAAK0lM,WAAa,KAElB1lM,KAAK2lM,SAAW,KAoEpB,OAlEAzmM,OAAOC,eAAe+9N,EAAK16N,UAAW,WAAY,CAM9CH,IAAK,WACD,IAAI4e,EACJ,OAA2C,QAAnCA,EAAKk8M,EAAU96N,IAAIrC,KAAKmG,aAA0B,IAAP8a,EAAgBA,EAAK,GAE5E7e,YAAY,EACZD,cAAc,IAElBjD,OAAOC,eAAe+9N,EAAK16N,UAAW,aAAc,CAMhDH,IAAK,WACD,OAAOrC,KAAKuqE,QAEhBhlE,IAAK,SAAUglE,GACXvqE,KAAKuqE,OAASA,GAElBnoE,YAAY,EACZD,cAAc,IAElBjD,OAAOC,eAAe+9N,EAAK16N,UAAW,kBAAmB,CAKrDH,IAAK,WACD,OAAOrC,KAAK68G,MAEhBt3G,IAAK,SAAUs3G,GACX78G,KAAK68G,KAAOA,GAEhBz6G,YAAY,EACZD,cAAc,IAElBjD,OAAOC,eAAe+9N,EAAK16N,UAAW,cAAe,CAKjDH,IAAK,WACD,OAAOrC,KAAKy2C,MAEhBlxC,IAAK,SAAUkxC,GACXz2C,KAAKy2C,KAAOA,GAEhBr0C,YAAY,EACZD,cAAc,IAQlB+6N,EAAK16N,UAAUk6N,UAAY,SAAUU,GAEjC,YADkB,IAAdA,IAAwBA,GAAY,GACjCV,EAAU18N,KAAMo9N,IAEpBF,EApFc,GAsFzB99N,EAAQ89N,KAAOA,EAIf,IAAID,EAA0B,SAAU1vB,GAMpC,SAAS0vB,EAAS92N,EAAM+C,GACpB,IAAI68H,EAAQwnE,EAAO7qM,KAAK1C,KAAMmG,IAASnG,KAEvC,OADA+lI,EAAM78H,KAAOA,EACN68H,EAgBX,OAxBAonE,EAAU8vB,EAAU1vB,GAUpBruM,OAAOC,eAAe89N,EAASz6N,UAAW,YAAa,CAKnDH,IAAK,WACD,OAAOrC,KAAKkJ,MAEhB3D,IAAK,SAAU2D,GACXlJ,KAAKkJ,KAAOA,GAEhB9G,YAAY,EACZD,cAAc,IAEX86N,EAzBkB,CA0B3BC,GACF99N,EAAQ69N,SAAWA,EAInB,IAAI7B,EAAsB,SAAU7tB,GAEhC,SAAS6tB,EAAKlyN,GACV,OAAOqkM,EAAO7qM,KAAK1C,KAAMw7N,EAAiB3B,YAAYuB,KAAMlyN,IAASlJ,KAEzE,OAJAmtM,EAAUiuB,EAAM7tB,GAIT6tB,EALc,CAMvB6B,GACF79N,EAAQg8N,KAAOA,EAIf,IAAIb,EAAyB,SAAUhtB,GAEnC,SAASgtB,EAAQrxN,GACb,OAAOqkM,EAAO7qM,KAAK1C,KAAMw7N,EAAiB3B,YAAYU,QAASrxN,IAASlJ,KAE5E,OAJAmtM,EAAUotB,EAAShtB,GAIZgtB,EALiB,CAM1B0C,GACF79N,EAAQm7N,QAAUA,EAIlB,IAAIiC,EAAuC,SAAUjvB,GAEjD,SAASivB,EAAsBt5N,EAAMgG,GACjC,IAAI68H,EAAQwnE,EAAO7qM,KAAK1C,KAAMw7N,EAAiB3B,YAAYQ,UAAWnxN,IAASlJ,KAE/E,OADA+lI,EAAM7iI,KAAOA,EACN6iI,EAEX,OANAonE,EAAUqvB,EAAuBjvB,GAM1BivB,EAP+B,CAQxCS,GACF79N,EAAQo9N,sBAAwBA,EAIhC,IAAID,EAAkC,SAAUhvB,GAM5C,SAASgvB,EAAiBp2N,EAAMvB,GAC5B,IAAImhI,EAAQwnE,EAAO7qM,KAAK1C,KAAMmG,IAASnG,KAEvC,OADA+lI,EAAMnhI,SAAWA,EACVmhI,EAoCX,OA5CAonE,EAAUovB,EAAkBhvB,GAU5BruM,OAAOC,eAAeo9N,EAAiB/5N,UAAW,aAAc,CAG5DH,IAAK,WACD,IAAI4e,EACJ,OAAmC,QAA3BA,EAAKjhB,KAAK4E,SAAS,UAAuB,IAAPqc,EAAgBA,EAAK,MAEpE7e,YAAY,EACZD,cAAc,IAElBjD,OAAOC,eAAeo9N,EAAiB/5N,UAAW,YAAa,CAE3DH,IAAK,WACD,OAAOrC,KAAK4E,SAASmB,OAAS,EACxB/F,KAAK4E,SAAS5E,KAAK4E,SAASmB,OAAS,GACrC,MAEV3D,YAAY,EACZD,cAAc,IAElBjD,OAAOC,eAAeo9N,EAAiB/5N,UAAW,aAAc,CAK5DH,IAAK,WACD,OAAOrC,KAAK4E,UAEhBW,IAAK,SAAUX,GACX5E,KAAK4E,SAAWA,GAEpBxC,YAAY,EACZD,cAAc,IAEXo6N,EA7C0B,CA8CnCW,GACF99N,EAAQm9N,iBAAmBA,EAI3B,IAAIN,EAA0B,SAAU1uB,GAEpC,SAAS0uB,EAASr3N,GACd,OAAO2oM,EAAO7qM,KAAK1C,KAAMw7N,EAAiB3B,YAAYO,KAAMx1N,IAAa5E,KAE7E,OAJAmtM,EAAU8uB,EAAU1uB,GAIb0uB,EALkB,CAM3BM,GACFn9N,EAAQ68N,SAAWA,EAInB,IAAII,EAAyB,SAAU9uB,GAOnC,SAAS8uB,EAAQn5N,EAAM8iM,EAASphM,EAAUuB,QACrB,IAAbvB,IAAuBA,EAAW,SACzB,IAATuB,IAAmBA,EAAgB,WAATjD,EACxBs4N,EAAiB3B,YAAYa,OACpB,UAATx3N,EACIs4N,EAAiB3B,YAAYc,MAC7Ba,EAAiB3B,YAAYe,KACvC,IAAI70F,EAAQwnE,EAAO7qM,KAAK1C,KAAMmG,EAAMvB,IAAa5E,KAGjD,OAFA+lI,EAAM7iI,KAAOA,EACb6iI,EAAMigE,QAAUA,EACTjgE,EAiCX,OAjDAonE,EAAUkvB,EAAS9uB,GAkBnBruM,OAAOC,eAAek9N,EAAQ75N,UAAW,UAAW,CAMhDH,IAAK,WACD,OAAOrC,KAAKkD,MAEhBqC,IAAK,SAAUrC,GACXlD,KAAKkD,KAAOA,GAEhBd,YAAY,EACZD,cAAc,IAElBjD,OAAOC,eAAek9N,EAAQ75N,UAAW,aAAc,CACnDH,IAAK,WACD,IAAI0jI,EAAQ/lI,KACZ,OAAOd,OAAO0N,KAAK5M,KAAKgmM,SAAShgM,KAAI,SAAU9C,GAC3C,IAAI+d,EAAI6C,EACR,MAAO,CACH5gB,KAAMA,EACN7D,MAAO0mI,EAAMigE,QAAQ9iM,GACrBygK,UAAkD,QAAtC1iJ,EAAK8kH,EAAM,6BAA0C,IAAP9kH,OAAgB,EAASA,EAAG/d,GACtFy9B,OAA4C,QAAnC7c,EAAKiiH,EAAM,0BAAuC,IAAPjiH,OAAgB,EAASA,EAAG5gB,QAI5Fd,YAAY,EACZD,cAAc,IAEXk6N,EAlDiB,CAmD1BE,GAMF,SAASjB,EAAMr2N,GACX,OAAO,EAAIu2N,EAAiBF,OAAOr2N,GAOvC,SAAS+3N,EAAQ/3N,GACb,OAAOA,EAAKkB,OAASq1N,EAAiB3B,YAAYW,MAOtD,SAASuC,EAAO93N,GACZ,OAAOA,EAAKkB,OAASq1N,EAAiB3B,YAAYuB,KAOtD,SAAS0B,EAAU73N,GACf,OAAOA,EAAKkB,OAASq1N,EAAiB3B,YAAYU,QAOtD,SAASsC,EAAY53N,GACjB,OAAOA,EAAKkB,OAASq1N,EAAiB3B,YAAYQ,UAOtD,SAASuC,EAAW33N,GAChB,OAAOA,EAAKkB,OAASq1N,EAAiB3B,YAAYO,KAiBtD,SAASsC,EAAUz3N,EAAMm4N,GAErB,IAAI91N,EACJ,QAFkB,IAAd81N,IAAwBA,GAAY,GAEpCL,EAAO93N,GACPqC,EAAS,IAAI8zN,EAAKn2N,EAAKiE,WAEtB,GAAI4zN,EAAU73N,GACfqC,EAAS,IAAIizN,EAAQt1N,EAAKiE,WAEzB,GAAIoyN,EAAMr2N,GAAO,CAClB,IAAIL,EAAWw4N,EAAYC,EAAcp4N,EAAKL,UAAY,GACtD04N,EAAU,IAAIjB,EAAQp3N,EAAK/B,KAAM02N,EAAS,GAAI30N,EAAK+gM,SAAUphM,GACjEA,EAAS1D,SAAQ,SAAU+E,GAAS,OAAQA,EAAMskE,OAAS+yJ,KACrC,MAAlBr4N,EAAK0+J,YACL25D,EAAQ35D,UAAY1+J,EAAK0+J,WAEzB1+J,EAAK,wBACLq4N,EAAQ,sBAAwB1D,EAAS,GAAI30N,EAAK,wBAElDA,EAAK,qBACLq4N,EAAQ,mBAAqB1D,EAAS,GAAI30N,EAAK,qBAEnDqC,EAASg2N,OAER,GAAIN,EAAQ/3N,GAAO,CAChBL,EAAWw4N,EAAYC,EAAcp4N,EAAKL,UAAY,GAA1D,IACI24N,EAAU,IAAIhB,EAAiBf,EAAiB3B,YAAYW,MAAO51N,GACvEA,EAAS1D,SAAQ,SAAU+E,GAAS,OAAQA,EAAMskE,OAASgzJ,KAC3Dj2N,EAASi2N,OAER,GAAIX,EAAW33N,GAAO,CACnBL,EAAWw4N,EAAYC,EAAcp4N,EAAKL,UAAY,GAA1D,IACI44N,EAAU,IAAIvB,EAASr3N,GAC3BA,EAAS1D,SAAQ,SAAU+E,GAAS,OAAQA,EAAMskE,OAASizJ,KACvDv4N,EAAK,YACLu4N,EAAQ,UAAYv4N,EAAK,WAE7BqC,EAASk2N,MAER,KAAIX,EAAY53N,GAUjB,MAAM,IAAIzE,MAAM,wBAAwBie,OAAOxZ,EAAKkB,OATpD,IAAIs3N,EAAc,IAAIjB,EAAsBv3N,EAAK/B,KAAM+B,EAAKiE,MACtC,MAAlBjE,EAAK,YACLw4N,EAAY,UAAYx4N,EAAK,UAC7Bw4N,EAAY,cAAgBx4N,EAAK,cACjCw4N,EAAY,cAAgBx4N,EAAK,eAErCqC,EAASm2N,EAUb,OALAn2N,EAAOo+L,WAAazgM,EAAKygM,WACzBp+L,EAAOq+L,SAAW1gM,EAAK0gM,SACQ,MAA3B1gM,EAAKy4N,qBACLp2N,EAAOo2N,mBAAqBz4N,EAAKy4N,oBAE9Bp2N,EAGX,SAAS+1N,EAAcM,GAEnB,IADA,IAAI/4N,EAAW+4N,EAAO33N,KAAI,SAAUC,GAAS,OAAOy2N,EAAUz2N,GAAO,MAC5D2S,EAAI,EAAGA,EAAIhU,EAASmB,OAAQ6S,IACjChU,EAASgU,GAAGikG,KAAOj4G,EAASgU,EAAI,GAChChU,EAASgU,EAAI,GAAG69B,KAAO7xC,EAASgU,GAEpC,OAAOhU,EAhIXxF,EAAQi9N,QAAUA,EAQlBj9N,EAAQk8N,MAAQA,EAQhBl8N,EAAQ49N,QAAUA,EAQlB59N,EAAQ29N,OAASA,EAQjB39N,EAAQ09N,UAAYA,EAQpB19N,EAAQy9N,YAAcA,EAQtBz9N,EAAQw9N,WAAaA,EAQrBx9N,EAAQu9N,YAHR,SAAqB13N,GACjB,OAAO/F,OAAOsD,UAAUC,eAAeC,KAAKuC,EAAM,aAmEtD7F,EAAQs9N,UAAYA,gCClbpBx9N,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQw+N,aAAU,EAClB,IAAIC,EAAc,EAAQ,OACtBC,EAAW,EAAQ,OAevB1+N,EAAQw+N,QARR,SAAiBG,GACb,IAAIC,EAAWC,EAAcC,EAAaH,GAC1C,OAAQC,EAEgB,SAAlBA,EAAS96N,KAWnB,SAAqB86N,GACjB,IAAI/8M,EACA08M,EAASK,EAASp5N,SAClBu5N,EAAO,CACPh4N,KAAM,OACN2uF,OAAO,EAAIgpI,EAASM,sBAAsB,QAAST,GAAQ33N,KAAI,SAAUy4I,GACrE,IAAIx9H,EACArc,EAAW65I,EAAK75I,SAChB2N,EAAQ,CAAE8rN,MAAOC,EAAiB15N,IACtC25N,EAAiBhsN,EAAO,KAAM,KAAM3N,GACpC25N,EAAiBhsN,EAAO,QAAS,QAAS3N,GAC1C,IAAIqqB,EAAkD,QAA1ChO,EAAKg9M,EAAc,OAAQr5N,UAA8B,IAAPqc,OAAgB,EAASA,EAAG+kL,QAAQ/2K,KAC9FA,IACA1c,EAAMgrL,KAAOtuK,GAEjB,IAAIZ,EAAcna,EAAM,UAAWtP,IAAasP,EAAM,UAAWtP,GAC7DypB,IACA9b,EAAM8b,YAAcA,GAExB,IAAImwM,EAAUtqN,EAAM,UAAWtP,GAI/B,OAHI45N,IACAjsN,EAAMisN,QAAU,IAAIh2N,KAAKg2N,IAEtBjsN,MAGfgsN,EAAiBJ,EAAM,KAAM,KAAMR,GACnCY,EAAiBJ,EAAM,QAAS,QAASR,GACzC,IAAI1uM,EAAgD,QAAxChO,EAAKg9M,EAAc,OAAQN,UAA4B,IAAP18M,OAAgB,EAASA,EAAG+kL,QAAQ/2K,KAC5FA,IACAkvM,EAAK5gC,KAAOtuK,GAEhBsvM,EAAiBJ,EAAM,cAAe,WAAYR,GAClD,IAAIc,EAAUvqN,EAAM,UAAWypN,GAK/B,OAJIc,IACAN,EAAKM,QAAU,IAAIj2N,KAAKi2N,IAE5BF,EAAiBJ,EAAM,SAAU,QAASR,GAAQ,GAC3CQ,EAhDGO,CAAYV,GAwD1B,SAAoBA,GAChB,IAAI/8M,EAAI6C,EACJ65M,EAAwH,QAA9G75M,EAA4D,QAAtD7C,EAAKg9M,EAAc,UAAWD,EAASp5N,iBAA8B,IAAPqc,OAAgB,EAASA,EAAGrc,gBAA6B,IAAPkf,EAAgBA,EAAK,GACrJq6M,EAAO,CACPh4N,KAAM63N,EAAS96N,KAAK+e,OAAO,EAAG,GAC9B4gB,GAAI,GACJiyD,OAAO,EAAIgpI,EAASM,sBAAsB,OAAQJ,EAASp5N,UAAUoB,KAAI,SAAUy4I,GAC/E,IAAI75I,EAAW65I,EAAK75I,SAChB2N,EAAQ,CAAE8rN,MAAOC,EAAiB15N,IACtC25N,EAAiBhsN,EAAO,KAAM,OAAQ3N,GACtC25N,EAAiBhsN,EAAO,QAAS,QAAS3N,GAC1C25N,EAAiBhsN,EAAO,OAAQ,OAAQ3N,GACxC25N,EAAiBhsN,EAAO,cAAe,cAAe3N,GACtD,IAAI45N,EAAUtqN,EAAM,UAAWtP,GAG/B,OAFI45N,IACAjsN,EAAMisN,QAAU,IAAIh2N,KAAKg2N,IACtBjsN,MAGfgsN,EAAiBJ,EAAM,QAAS,QAASR,GACzCY,EAAiBJ,EAAM,OAAQ,OAAQR,GACvCY,EAAiBJ,EAAM,cAAe,cAAeR,GACrD,IAAIc,EAAUvqN,EAAM,gBAAiBypN,GAKrC,OAJIc,IACAN,EAAKM,QAAU,IAAIj2N,KAAKi2N,IAE5BF,EAAiBJ,EAAM,SAAU,iBAAkBR,GAAQ,GACpDQ,EAlFGQ,CAAWX,GAHf,MAuFV,IAAIY,EAAoB,CAAC,MAAO,OAAQ,QACpCC,EAAiB,CACjB,WACA,UACA,YACA,eACA,WACA,WACA,SACA,SAQJ,SAASP,EAAiB1oF,GACtB,OAAO,EAAIkoF,EAASM,sBAAsB,gBAAiBxoF,GAAO5vI,KAAI,SAAU6mE,GAM5E,IALA,IAAIm5H,EAAUn5H,EAAKm5H,QACfq4B,EAAQ,CACRS,OAAQ94B,EAAQ84B,OAChBC,YAAa/4B,EAAQ+4B,WAEhB15D,EAAK,EAAG25D,EAAsBJ,EAAmBv5D,EAAK25D,EAAoBj5N,OAAQs/J,IAEnF2gC,EADAi5B,EAASD,EAAoB35D,MAE7Bg5D,EAAMY,GAAUj5B,EAAQi5B,IAGhC,IAAK,IAAIh+M,EAAK,EAAGi+M,EAAmBL,EAAgB59M,EAAKi+M,EAAiBn5N,OAAQkb,IAAM,CACpF,IAAIg+M,EACAj5B,EADAi5B,EAASC,EAAiBj+M,MAE1Bo9M,EAAMY,GAAUj9M,SAASgkL,EAAQi5B,GAAS,KAOlD,OAJIj5B,EAAQjzL,aACRsrN,EAAMtrN,WACFizL,EAAQjzL,YAETsrN,KAUf,SAASJ,EAAckB,EAASl6N,GAC5B,OAAO,EAAI64N,EAASM,sBAAsBe,EAASl6N,GAAM,EAAM,GAAG,GAUtE,SAASiP,EAAMirN,EAASvpF,EAAO/jI,GAE3B,YADgB,IAAZA,IAAsBA,GAAU,IAC7B,EAAIgsN,EAAYuB,cAAa,EAAItB,EAASM,sBAAsBe,EAASvpF,EAAO/jI,EAAS,IAAIwyD,OAWxG,SAASk6J,EAAiBriL,EAAK6lH,EAAMo9D,EAASvpF,EAAO/jI,QACjC,IAAZA,IAAsBA,GAAU,GACpC,IAAIk7E,EAAM74E,EAAMirN,EAASvpF,EAAO/jI,GAC5Bk7E,IACA7wC,EAAI6lH,GAAQh1E,GAQpB,SAASmxI,EAAY7+N,GACjB,MAAiB,QAAVA,GAA6B,SAAVA,GAA8B,YAAVA,iCC3LlDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQigO,WAAajgO,EAAQkgO,wBAA0BlgO,EAAQmgO,mBAAgB,EAC/E,IAAIC,EAAe,EAAQ,OA2D3B,SAASF,EAAwBG,EAAOC,GACpC,IAAIC,EAAW,GACXC,EAAW,GACf,GAAIH,IAAUC,EACV,OAAO,EAGX,IADA,IAAIv1F,GAAU,EAAIq1F,EAAa7C,aAAa8C,GAASA,EAAQA,EAAMl1J,OAC5D4/D,GACHw1F,EAASnmL,QAAQ2wF,GACjBA,EAAUA,EAAQ5/D,OAGtB,IADA4/D,GAAU,EAAIq1F,EAAa7C,aAAa+C,GAASA,EAAQA,EAAMn1J,OACxD4/D,GACHy1F,EAASpmL,QAAQ2wF,GACjBA,EAAUA,EAAQ5/D,OAItB,IAFA,IAAIs1J,EAAStgN,KAAK6vB,IAAIuwL,EAAS55N,OAAQ65N,EAAS75N,QAC5C+zG,EAAM,EACHA,EAAM+lH,GAAUF,EAAS7lH,KAAS8lH,EAAS9lH,IAC9CA,IAEJ,GAAY,IAARA,EACA,OAAO,EAEX,IAAIgmH,EAAeH,EAAS7lH,EAAM,GAC9BimH,EAAWD,EAAal7N,SACxBo7N,EAAWL,EAAS7lH,GACpBmmH,EAAWL,EAAS9lH,GACxB,OAAIimH,EAASjoN,QAAQkoN,GAAYD,EAASjoN,QAAQmoN,GAC1CH,IAAiBJ,EACV,GAEJ,EAEPI,IAAiBL,EACV,GAEJ,EA/DXrgO,EAAQmgO,cA1BR,SAAuBjlH,GAMnB,IALA,IAAIR,EAAMQ,EAAMv0G,SAKP+zG,GAAO,GAAG,CACf,IAAI70G,EAAOq1G,EAAMR,GAMjB,GAAIA,EAAM,GAAKQ,EAAMxgF,YAAY70B,EAAM60G,EAAM,IAAM,EAC/CQ,EAAMviG,OAAO+hG,EAAK,QAGtB,IAAK,IAAIomH,EAAWj7N,EAAKslE,OAAQ21J,EAAUA,EAAWA,EAAS31J,OAC3D,GAAI+vC,EAAMxhG,SAASonN,GAAW,CAC1B5lH,EAAMviG,OAAO+hG,EAAK,GAClB,OAIZ,OAAOQ,GAmEXl7G,EAAQkgO,wBAA0BA,EAuBlClgO,EAAQigO,WAdR,SAAoB/kH,GAYhB,OAXAA,EAAQA,EAAMhtG,QAAO,SAAUrI,EAAM2T,EAAGsH,GAAO,OAAQA,EAAIpH,SAAS7T,EAAM2T,EAAI,MAC9E0hG,EAAMn6D,MAAK,SAAU38B,EAAGC,GACpB,IAAI08M,EAAWb,EAAwB97M,EAAGC,GAC1C,OAAe,EAAX08M,GACQ,EAEQ,EAAXA,EACE,EAEJ,KAEJ7lH,uCCzHX,IAAI94G,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQu9N,YAAcv9N,EAAQw9N,WAAax9N,EAAQ09N,UAAY19N,EAAQ29N,OAAS39N,EAAQ49N,QAAU59N,EAAQk8N,WAAQ,EAClHh5N,EAAa,EAAQ,OAAgBlD,GACrCkD,EAAa,EAAQ,OAAgBlD,GACrCkD,EAAa,EAAQ,OAAmBlD,GACxCkD,EAAa,EAAQ,OAAelD,GACpCkD,EAAa,EAAQ,OAAalD,GAClCkD,EAAa,EAAQ,OAAclD,GACnCkD,EAAa,EAAQ,OAAYlD,GAEjC,IAAIogO,EAAe,EAAQ,OAC3BtgO,OAAOC,eAAeC,EAAS,QAAS,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOm9N,EAAalE,SACnGp8N,OAAOC,eAAeC,EAAS,UAAW,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOm9N,EAAaxC,WACrG99N,OAAOC,eAAeC,EAAS,SAAU,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOm9N,EAAazC,UACpG79N,OAAOC,eAAeC,EAAS,YAAa,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOm9N,EAAa1C,aACvG59N,OAAOC,eAAeC,EAAS,aAAc,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOm9N,EAAa5C,cACxG19N,OAAOC,eAAeC,EAAS,cAAe,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOm9N,EAAa7C,6CC1BzGz9N,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQghO,qBAAuBhhO,EAAQg/N,qBAAuBh/N,EAAQihO,eAAiBjhO,EAAQkhO,YAAclhO,EAAQmhO,iBAAc,EACnI,IAAIf,EAAe,EAAQ,OACvBgB,EAAa,EAAQ,OACrBC,EAAS,CACTC,SAAU,SAAUx9N,GAChB,MAAoB,mBAATA,EACA,SAAU2pE,GAAQ,OAAO,EAAI2yJ,EAAalE,OAAOzuJ,IAAS3pE,EAAK2pE,EAAK3pE,OAE7D,MAATA,EACEs8N,EAAalE,MAEjB,SAAUzuJ,GAAQ,OAAO,EAAI2yJ,EAAalE,OAAOzuJ,IAASA,EAAK3pE,OAASA,IAEnFy9N,SAAU,SAAUx6N,GAChB,MAAoB,mBAATA,EACA,SAAU0mE,GAAQ,OAAO1mE,EAAK0mE,EAAK1mE,OAEvC,SAAU0mE,GAAQ,OAAOA,EAAK1mE,OAASA,IAElDy6N,aAAc,SAAU13N,GACpB,MAAoB,mBAATA,EACA,SAAU2jE,GAAQ,OAAO,EAAI2yJ,EAAazC,QAAQlwJ,IAAS3jE,EAAK2jE,EAAK3jE,OAEzE,SAAU2jE,GAAQ,OAAO,EAAI2yJ,EAAazC,QAAQlwJ,IAASA,EAAK3jE,OAASA,KAQxF,SAAS23N,EAAe5B,EAAQ5/N,GAC5B,MAAqB,mBAAVA,EACA,SAAUwtE,GAAQ,OAAO,EAAI2yJ,EAAalE,OAAOzuJ,IAASxtE,EAAMwtE,EAAKm5H,QAAQi5B,KAEjF,SAAUpyJ,GAAQ,OAAO,EAAI2yJ,EAAalE,OAAOzuJ,IAASA,EAAKm5H,QAAQi5B,KAAY5/N,GAQ9F,SAASyhO,EAAat9M,EAAGC,GACrB,OAAO,SAAUopD,GAAQ,OAAOrpD,EAAEqpD,IAASppD,EAAEopD,IAOjD,SAASk0J,EAAY1vN,GACjB,IAAI2vN,EAAQ9hO,OAAO0N,KAAKyE,GAASrL,KAAI,SAAU7E,GAC3C,IAAI9B,EAAQgS,EAAQlQ,GACpB,OAAOjC,OAAOsD,UAAUC,eAAeC,KAAK+9N,EAAQt/N,GAC9Cs/N,EAAOt/N,GAAK9B,GACZwhO,EAAe1/N,EAAK9B,MAE9B,OAAwB,IAAjB2hO,EAAMj7N,OAAe,KAAOi7N,EAAMznN,OAAOunN,GAWpD1hO,EAAQmhO,YAJR,SAAqBlvN,EAASpM,GAC1B,IAAIkT,EAAO4oN,EAAY1vN,GACvB,OAAO8G,GAAOA,EAAKlT,IAevB7F,EAAQkhO,YALR,SAAqBjvN,EAASipG,EAAOzoG,EAASyK,QAC5B,IAAVA,IAAoBA,EAAQw2E,EAAAA,GAChC,IAAI36E,EAAO4oN,EAAY1vN,GACvB,OAAO8G,GAAO,EAAIqoN,EAAWlzN,QAAQ6K,EAAMmiG,EAAOzoG,EAASyK,GAAS,IAexEld,EAAQihO,eANR,SAAwBx9L,EAAIy3E,EAAOzoG,GAI/B,YAHgB,IAAZA,IAAsBA,GAAU,GAC/BiK,MAAMC,QAAQu+F,KACfA,EAAQ,CAACA,KACN,EAAIkmH,EAAWS,SAASJ,EAAe,KAAMh+L,GAAKy3E,EAAOzoG,IAepEzS,EAAQg/N,qBALR,SAA8Be,EAAS7kH,EAAOzoG,EAASyK,GAGnD,YAFgB,IAAZzK,IAAsBA,GAAU,QACtB,IAAVyK,IAAoBA,EAAQw2E,EAAAA,IACzB,EAAI0tI,EAAWlzN,QAAQmzN,EAAOC,SAASvB,GAAU7kH,EAAOzoG,EAASyK,IAe5Eld,EAAQghO,qBALR,SAA8Bj6N,EAAMm0G,EAAOzoG,EAASyK,GAGhD,YAFgB,IAAZzK,IAAsBA,GAAU,QACtB,IAAVyK,IAAoBA,EAAQw2E,EAAAA,IACzB,EAAI0tI,EAAWlzN,QAAQmzN,EAAOE,SAASx6N,GAAOm0G,EAAOzoG,EAASyK,gCCjHzE,SAAS4kN,EAAcr0J,GAKnB,GAJIA,EAAKgwC,OACLhwC,EAAKgwC,KAAKpmE,KAAOo2B,EAAKp2B,MACtBo2B,EAAKp2B,OACLo2B,EAAKp2B,KAAKomE,KAAOhwC,EAAKgwC,MACtBhwC,EAAKtC,OAAQ,CACb,IAAIozJ,EAAS9wJ,EAAKtC,OAAO3lE,SACzB+4N,EAAO5lN,OAAO4lN,EAAO7jM,YAAY+yC,GAAO,IAdhD3tE,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQs6F,QAAUt6F,EAAQ+hO,aAAe/hO,EAAQmhF,OAASnhF,EAAQ2qC,YAAc3qC,EAAQgiO,eAAiBhiO,EAAQ8hO,mBAAgB,EAgBjI9hO,EAAQ8hO,cAAgBA,EAsBxB9hO,EAAQgiO,eAfR,SAAwBv0J,EAAMqyE,GAC1B,IAAIriC,EAAQqiC,EAAYriC,KAAOhwC,EAAKgwC,KAChCA,IACAA,EAAKpmE,KAAOyoG,GAEhB,IAAIzoG,EAAQyoG,EAAYzoG,KAAOo2B,EAAKp2B,KAChCA,IACAA,EAAKomE,KAAOqiC,GAEhB,IAAI30E,EAAU20E,EAAY30E,OAASsC,EAAKtC,OACxC,GAAIA,EAAQ,CACR,IAAIozJ,EAASpzJ,EAAO3lE,SACpB+4N,EAAOA,EAAO7jM,YAAY+yC,IAASqyE,IAuB3C9/I,EAAQ2qC,YAbR,SAAqB8iC,EAAM5mE,GAIvB,GAHAi7N,EAAcj7N,GACdA,EAAMwwC,KAAO,KACbxwC,EAAMskE,OAASsC,EACXA,EAAKjoE,SAASa,KAAKQ,GAAS,EAAG,CAC/B,IAAIo7N,EAAUx0J,EAAKjoE,SAASioE,EAAKjoE,SAASmB,OAAS,GACnDs7N,EAAQ5qL,KAAOxwC,EACfA,EAAM42G,KAAOwkH,OAGbp7N,EAAM42G,KAAO,MA6BrBz9G,EAAQmhF,OAnBR,SAAgB1T,EAAMp2B,GAClByqL,EAAczqL,GACd,IAAI8zB,EAASsC,EAAKtC,OACd+2J,EAAWz0J,EAAKp2B,KAKpB,GAJAA,EAAKA,KAAO6qL,EACZ7qL,EAAKomE,KAAOhwC,EACZA,EAAKp2B,KAAOA,EACZA,EAAK8zB,OAASA,EACV+2J,GAEA,GADAA,EAASzkH,KAAOpmE,EACZ8zB,EAAQ,CACR,IAAIozJ,EAASpzJ,EAAO3lE,SACpB+4N,EAAO5lN,OAAO4lN,EAAO7jM,YAAYwnM,GAAW,EAAG7qL,SAG9C8zB,GACLA,EAAO3lE,SAASa,KAAKgxC,IAuB7Br3C,EAAQ+hO,aAbR,SAAsBt0J,EAAM5mE,GAIxB,GAHAi7N,EAAcj7N,GACdA,EAAMskE,OAASsC,EACf5mE,EAAM42G,KAAO,KACwB,IAAjChwC,EAAKjoE,SAAS40C,QAAQvzC,GAAc,CACpC,IAAIo7N,EAAUx0J,EAAKjoE,SAAS,GAC5By8N,EAAQxkH,KAAO52G,EACfA,EAAMwwC,KAAO4qL,OAGbp7N,EAAMwwC,KAAO,MAyBrBr3C,EAAQs6F,QAfR,SAAiB7sB,EAAMgwC,GACnBqkH,EAAcrkH,GACd,IAAItyC,EAASsC,EAAKtC,OAClB,GAAIA,EAAQ,CACR,IAAIozJ,EAASpzJ,EAAO3lE,SACpB+4N,EAAO5lN,OAAO4lN,EAAO7lN,QAAQ+0D,GAAO,EAAGgwC,GAEvChwC,EAAKgwC,OACLhwC,EAAKgwC,KAAKpmE,KAAOomE,GAErBA,EAAKtyC,OAASA,EACdsyC,EAAKA,KAAOhwC,EAAKgwC,KACjBA,EAAKpmE,KAAOo2B,EACZA,EAAKgwC,KAAOA,iCC7HhB39G,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmiO,QAAUniO,EAAQoiO,UAAYpiO,EAAQ6hO,QAAU7hO,EAAQqiO,aAAeriO,EAAQsiC,KAAOtiC,EAAQkO,YAAS,EAC/G,IAAIkyN,EAAe,EAAQ,OA2B3B,SAAS99L,EAAKvpB,EAAMmiG,EAAOzoG,EAASyK,GAEhC,IADA,IAAIhV,EAAS,GACJ+9J,EAAK,EAAGq8D,EAAUpnH,EAAO+qD,EAAKq8D,EAAQ37N,OAAQs/J,IAAM,CACzD,IAAIx4F,EAAO60J,EAAQr8D,GACnB,GAAIltJ,EAAK00D,KACLvlE,EAAO7B,KAAKonE,KACNvwD,GAAS,GACX,MAER,GAAIzK,IAAW,EAAI2tN,EAAa7C,aAAa9vJ,IAASA,EAAKjoE,SAASmB,OAAS,EAAG,CAC5E,IAAInB,EAAW88B,EAAKvpB,EAAM00D,EAAKjoE,SAAUiN,EAASyK,GAGlD,GAFAhV,EAAO7B,KAAK4a,MAAM/Y,EAAQ1C,IAC1B0X,GAAS1X,EAASmB,SACL,EACT,OAGZ,OAAOuB,EA3BXlI,EAAQkO,OAPR,SAAgB6K,EAAMlT,EAAM4M,EAASyK,GAKjC,YAJgB,IAAZzK,IAAsBA,GAAU,QACtB,IAAVyK,IAAoBA,EAAQw2E,EAAAA,GAC3Bh3E,MAAMC,QAAQ9W,KACfA,EAAO,CAACA,IACLy8B,EAAKvpB,EAAMlT,EAAM4M,EAASyK,IA+BrCld,EAAQsiC,KAAOA,EAWftiC,EAAQqiO,aAHR,SAAsBtpN,EAAMmiG,GACxB,OAAOA,EAAM54E,KAAKvpB,IA4BtB/Y,EAAQ6hO,QAjBR,SAASA,EAAQ9oN,EAAMmiG,EAAOzoG,QACV,IAAZA,IAAsBA,GAAU,GAEpC,IADA,IAAIg7D,EAAO,KACFj0D,EAAI,EAAGA,EAAI0hG,EAAMv0G,SAAW8mE,EAAMj0D,IAAK,CAC5C,IAAIizE,EAAUyuB,EAAM1hG,IACf,EAAI4mN,EAAalE,OAAOzvI,KAGpB1zE,EAAK0zE,GACVhf,EAAOgf,EAEFh6E,GAAWg6E,EAAQjnF,SAASmB,OAAS,IAC1C8mE,EAAOo0J,EAAQ9oN,EAAM0zE,EAAQjnF,YAGrC,OAAOioE,GAgBXztE,EAAQoiO,UARR,SAASA,EAAUrpN,EAAMmiG,GACrB,OAAOA,EAAM9wF,MAAK,SAAUqiE,GACxB,OAAO,EAAI2zI,EAAalE,OAAOzvI,KAC1B1zE,EAAK0zE,IACDA,EAAQjnF,SAASmB,OAAS,GACvBy7N,EAAUrpN,EAAM0zE,EAAQjnF,eA4B5CxF,EAAQmiO,QAfR,SAAiBppN,EAAMmiG,GAKnB,IAJA,IAAIr5F,EAGA4rD,EAFAvlE,EAAS,GACTy/E,EAAQuzB,EAAMhtG,OAAOkyN,EAAalE,OAE9BzuJ,EAAOka,EAAM5sC,SAAU,CAC3B,IAAIv1C,EAAoC,QAAxBqc,EAAK4rD,EAAKjoE,gBAA6B,IAAPqc,OAAgB,EAASA,EAAG3T,OAAOkyN,EAAalE,OAC5F12N,GAAYA,EAASmB,OAAS,GAC9BghF,EAAMvtC,QAAQn5B,MAAM0mE,EAAOniF,GAE3BuT,EAAK00D,IACLvlE,EAAO7B,KAAKonE,GAEpB,OAAOvlE,uCC1HX,IAAIiwE,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQuiO,UAAYviO,EAAQggO,YAAchgO,EAAQwiO,QAAUxiO,EAAQyiO,aAAeziO,EAAQ0iO,kBAAe,EAC1G,IAAItC,EAAe,EAAQ,OACvBuC,EAAmBxqJ,EAAgB,EAAQ,QAC3CikJ,EAAmB,EAAQ,OAO/B,SAASsG,EAAa78N,EAAMoM,GACxB,OAAO,EAAI0wN,EAAiBxqM,SAAStyB,EAAMoM,GAE/CjS,EAAQ0iO,aAAeA,EAYvB1iO,EAAQyiO,aALR,SAAsB58N,EAAMoM,GACxB,OAAO,EAAImuN,EAAa7C,aAAa13N,GAC/BA,EAAKL,SAASoB,KAAI,SAAUf,GAAQ,OAAO68N,EAAa78N,EAAMoM,MAAamP,KAAK,IAChF,IAqBVphB,EAAQwiO,QAXR,SAASA,EAAQ38N,GACb,OAAI6W,MAAMC,QAAQ9W,GACPA,EAAKe,IAAI47N,GAASphN,KAAK,KAC9B,EAAIg/M,EAAalE,OAAOr2N,GACH,OAAdA,EAAK/B,KAAgB,KAAO0+N,EAAQ38N,EAAKL,WAChD,EAAI46N,EAAaxC,SAAS/3N,GACnB28N,EAAQ38N,EAAKL,WACpB,EAAI46N,EAAazC,QAAQ93N,GAClBA,EAAKiE,KACT,IAoBX9J,EAAQggO,YAVR,SAASA,EAAYn6N,GACjB,OAAI6W,MAAMC,QAAQ9W,GACPA,EAAKe,IAAIo5N,GAAa5+M,KAAK,KAClC,EAAIg/M,EAAa7C,aAAa13N,MAAU,EAAIu6N,EAAa1C,WAAW73N,GAC7Dm6N,EAAYn6N,EAAKL,WAExB,EAAI46N,EAAazC,QAAQ93N,GAClBA,EAAKiE,KACT,IAoBX9J,EAAQuiO,UAVR,SAASA,EAAU18N,GACf,OAAI6W,MAAMC,QAAQ9W,GACPA,EAAKe,IAAI27N,GAAWnhN,KAAK,KAChC,EAAIg/M,EAAa7C,aAAa13N,KAAUA,EAAKkB,OAASq1N,EAAiB3B,YAAYe,MAAO,EAAI4E,EAAaxC,SAAS/3N,IAC7G08N,EAAU18N,EAAKL,WAEtB,EAAI46N,EAAazC,QAAQ93N,GAClBA,EAAKiE,KACT,kCClFXhK,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4iO,mBAAqB5iO,EAAQ6iO,mBAAqB7iO,EAAQ+sD,QAAU/sD,EAAQ8iO,UAAY9iO,EAAQ+iO,kBAAoB/iO,EAAQgjO,YAAchjO,EAAQijO,UAAYjjO,EAAQkjO,iBAAc,EAC5L,IAAI9C,EAAe,EAAQ,OACvB+C,EAAa,GAOjB,SAASD,EAAYz1J,GACjB,IAAI5rD,EACJ,OAAgC,QAAxBA,EAAK4rD,EAAKjoE,gBAA6B,IAAPqc,EAAgBA,EAAKshN,EASjE,SAASF,EAAUx1J,GACf,OAAOA,EAAKtC,QAAU,KAR1BnrE,EAAQkjO,YAAcA,EAUtBljO,EAAQijO,UAAYA,EA4BpBjjO,EAAQgjO,YAjBR,SAAqBv1J,GACjB,IACItC,EAAS83J,EAAUx1J,GACvB,GAAc,MAAVtC,EACA,OAAO+3J,EAAY/3J,GAGvB,IAFA,IAAIw1J,EAAW,CAAClzJ,GACZgwC,EAAOhwC,EAAKgwC,KAAMpmE,EAAOo2B,EAAKp2B,KACnB,MAARomE,GACHkjH,EAASvmL,QAAQqjE,GACLA,EAANA,EAAgBA,KAE1B,KAAe,MAARpmE,GACHspL,EAASt6N,KAAKgxC,GACFA,EAANA,EAAgBA,KAE1B,OAAOspL,GAcX3gO,EAAQ+iO,kBAJR,SAA2Bt1J,EAAM3pE,GAC7B,IAAI+d,EACJ,OAA+B,QAAvBA,EAAK4rD,EAAKm5H,eAA4B,IAAP/kL,OAAgB,EAASA,EAAG/d,IAevE9D,EAAQ8iO,UALR,SAAmBr1J,EAAM3pE,GACrB,OAAwB,MAAhB2pE,EAAKm5H,SACT9mM,OAAOsD,UAAUC,eAAeC,KAAKmqE,EAAKm5H,QAAS9iM,IAC7B,MAAtB2pE,EAAKm5H,QAAQ9iM,IAYrB9D,EAAQ+sD,QAHR,SAAiB0gB,GACb,OAAOA,EAAK3pE,MAgBhB9D,EAAQ6iO,mBAPR,SAA4Bp1J,GAGxB,IAFA,IACIp2B,EAAOo2B,EAAKp2B,KACA,OAATA,KAAkB,EAAI+oL,EAAalE,OAAO7kL,IACjCA,EAANA,EAAgBA,KAC1B,OAAOA,GAgBXr3C,EAAQ4iO,mBAPR,SAA4Bn1J,GAGxB,IAFA,IACIgwC,EAAOhwC,EAAKgwC,KACA,OAATA,KAAkB,EAAI2iH,EAAalE,OAAOz+G,IACjCA,EAANA,EAAgBA,KAC1B,OAAOA,uCCjHX,IAAItlC,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8jM,WAAa9jM,EAAQ6jM,iBAAmB7jM,EAAQ4jM,eAAY,EACpE,IAAIw/B,EAAkBjrJ,EAAgB,EAAQ,QAC1CkrJ,EAAgBlrJ,EAAgB,EAAQ,QACxCmrJ,EAAanrJ,EAAgB,EAAQ,QACrCmsH,EAAqBnsH,EAAgB,EAAQ,QAC7CorJ,EAAiB,4CAGrB,SAASC,EAAiB58N,GACtB,IAAIya,EAAUoiN,EAAY78N,GAC1B,OAAO,SAAUstB,GAAO,OAAOnT,OAAOmT,GAAK7S,QAAQkiN,EAAgBliN,IAJvErhB,EAAQ4jM,UAAY4/B,EAAiBF,EAAWnrM,SAChDn4B,EAAQ6jM,iBAAmB2/B,EAAiBJ,EAAgBjrM,SAK5D,IAAIurM,EAAS,SAAUt/M,EAAGC,GAAK,OAAQD,EAAIC,EAAI,GAAK,GAuBpD,SAASo/M,EAAY78N,GACjB,OAAO,SAAiBstB,GACpB,GAAsB,MAAlBA,EAAI+c,OAAO,GAAY,CACvB,IAAI0yL,EAAazvM,EAAI+c,OAAO,GAC5B,MAAmB,MAAf0yL,GAAqC,MAAfA,EACfr/B,EAAmBnsK,QAAQvV,SAASsR,EAAIrR,OAAO,GAAI,KAEvDyhL,EAAmBnsK,QAAQvV,SAASsR,EAAIrR,OAAO,GAAI,KAG9D,OAAOjc,EAAIstB,EAAIjQ,MAAM,GAAI,KAAOiQ,GAhCxCl0B,EAAQ8jM,WAAa,WAGjB,IAFA,IAAI8/B,EAAS9jO,OAAO0N,KAAK61N,EAAclrM,SAAS4oB,KAAK2iL,GACjDl2N,EAAO1N,OAAO0N,KAAK41N,EAAgBjrM,SAAS4oB,KAAK2iL,GAC5ClqN,EAAI,EAAGkkB,EAAI,EAAGlkB,EAAIhM,EAAK7G,OAAQ6S,IAChCoqN,EAAOlmM,KAAOlwB,EAAKgM,IACnBhM,EAAKgM,IAAM,KACXkkB,KAGAlwB,EAAKgM,IAAM,IAGnB,IAAIyoJ,EAAK,IAAInnH,OAAO,OAASttC,EAAK4T,KAAK,KAAO,gCAAiC,KAC3EC,EAAUoiN,EAAYL,EAAgBjrM,SAC1C,SAAS0rM,EAAS3vM,GAGd,MAFuB,MAAnBA,EAAIrR,QAAQ,KACZqR,GAAO,KACJ7S,EAAQ6S,GAGnB,OAAO,SAAUA,GAAO,OAAOnT,OAAOmT,GAAK7S,QAAQ4gJ,EAAI4hE,IApBtC,uCCjBrB,IAAI1rJ,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtD,IAAI6jO,EAAgB3rJ,EAAgB,EAAQ,QAExCstH,EAEJ1kL,OAAO0kL,eACH,SAAUt2G,GACN,IAAI7qF,EAAS,GAOb,OANI6qF,EAAY,QACZA,GAAa,MACb7qF,GAAUyc,OAAOC,aAAemuE,IAAc,GAAM,KAAS,OAC7DA,EAAY,MAAsB,KAAZA,GAE1B7qF,EAAUyc,OAAOC,aAAamuE,IAYtCnvF,EAAA,QATA,SAAyBmvF,GACrB,OAAKA,GAAa,OAAUA,GAAa,OAAWA,EAAY,QACrD,KAEPA,KAAa20I,EAAc3rM,UAC3Bg3D,EAAY20I,EAAc3rM,QAAQg3D,IAE/Bs2G,EAAct2G,yCC1BzB,IAAIhX,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+jO,WAAa/jO,EAAQuvC,OAASvvC,EAAQgkO,mBAAqBhkO,EAAQikO,WAAajkO,EAAQ47N,eAAY,EAC5G,IACIsI,EAAaC,EADAhsJ,EAAgB,EAAQ,QACChgD,SACtCisM,EAAcC,EAAmBH,GAQrClkO,EAAQ47N,UAAY0I,EAAgBJ,GACpC,IAiFoB36D,EAAStH,EAhFzBsiE,EAAcJ,EADIhsJ,EAAgB,EAAQ,QACEhgD,SAC5CqsM,EAAeH,EAAmBE,GAoBtC,SAASJ,EAAcrnL,GACnB,OAAOh9C,OAAO0N,KAAKsvC,GACdiE,OACA5mC,QAAO,SAAUovJ,EAASzlK,GAE3B,OADAylK,EAAQzsH,EAAIh5C,IAAS,IAAMA,EAAO,IAC3BylK,IACR,IAEP,SAAS86D,EAAmB96D,GAGxB,IAFA,IAAI8e,EAAS,GACTo8C,EAAW,GACNx+D,EAAK,EAAGpkJ,EAAK/hB,OAAO0N,KAAK+7J,GAAUtD,EAAKpkJ,EAAGlb,OAAQs/J,IAAM,CAC9D,IAAIzjK,EAAIqf,EAAGokJ,GACM,IAAbzjK,EAAEmE,OAEF0hL,EAAOhiL,KAAK,KAAO7D,GAInBiiO,EAASp+N,KAAK7D,GAItB6lL,EAAOtnI,OACP,IAAK,IAAIzX,EAAQ,EAAGA,EAAQ++I,EAAO1hL,OAAS,EAAG2iC,IAAS,CAGpD,IADA,IAAIkiD,EAAMliD,EACHkiD,EAAM68F,EAAO1hL,OAAS,GACzB0hL,EAAO78F,GAAK5pE,WAAW,GAAK,IAAMymK,EAAO78F,EAAM,GAAG5pE,WAAW,IAC7D4pE,GAAO,EAEX,IAAImP,EAAQ,EAAInP,EAAMliD,EAElBqxD,EAAQ,GAEZ0tF,EAAO1vK,OAAO2wB,EAAOqxD,EAAO0tF,EAAO/+I,GAAS,IAAM++I,EAAO78F,IAG7D,OADAi5I,EAASrqL,QAAQ,IAAMiuI,EAAOjnK,KAAK,IAAM,KAClC,IAAI05B,OAAO2pL,EAASrjN,KAAK,KAAM,KA/C1CphB,EAAQikO,YAoEY16D,EApEYg7D,EAoEHtiE,EApEgBuiE,EAqElC,SAAU16N,GACb,OAAOA,EACFuX,QAAQ4gJ,GAAI,SAAUn+J,GAAQ,OAAOylK,EAAQzlK,MAC7Cud,QAAQqjN,EAAYC,KAhEjC3kO,EAAQgkO,mBAAqBM,EAAgBC,GA0C7C,IAAIG,EAAa,0IACbE,EAE4B,MAAhC7jN,OAAO3d,UAAUyhO,YAET,SAAU3wM,GAAO,OAAOA,EAAI2wM,YAAY,IAExC,SAAUljN,GACN,OAAoC,MAA5BA,EAAEC,WAAW,GAAK,OACtBD,EAAEC,WAAW,GACb,MACA,OAEhB,SAAS+iN,EAAmBhjN,GACxB,MAAO,OAASA,EAAEhb,OAAS,EAAIi+N,EAAajjN,GAAKA,EAAEC,WAAW,IACzDnT,SAAS,IACT8M,cAAgB,IASzB,IAAIupN,EAAgB,IAAIhqL,OAAOspL,EAAYtuN,OAAS,IAAM4uN,EAAW5uN,OAAQ,KA0B7E,SAASwuN,EAAgBxnL,GACrB,OAAO,SAAUhzC,GACb,OAAOA,EAAKuX,QAAQyjN,GAAe,SAAUnjN,GAAK,OAAOm7B,EAAIn7B,IAAMgjN,EAAmBhjN,OAf9F3hB,EAAQuvC,OAHR,SAAgBzlC,GACZ,OAAOA,EAAKuX,QAAQyjN,EAAeH,IAcvC3kO,EAAQ+jO,WAHR,SAAoBj6N,GAChB,OAAOA,EAAKuX,QAAQ+iN,EAAaO,kCC/HrC7kO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+kO,gBAAkB/kO,EAAQglO,kBAAoBhlO,EAAQilO,kBAAoBjlO,EAAQklO,YAAcllO,EAAQmlO,YAAcnlO,EAAQ6jM,iBAAmB7jM,EAAQ8jM,WAAa9jM,EAAQ4jM,UAAY5jM,EAAQolO,YAAcplO,EAAQqlO,YAAcrlO,EAAQ+jO,WAAa/jO,EAAQuvC,OAASvvC,EAAQgkO,mBAAqBhkO,EAAQikO,WAAajkO,EAAQ47N,UAAY57N,EAAQ6f,OAAS7f,EAAQslO,aAAetlO,EAAQwhB,YAAS,EACnZ,IAAI+nL,EAAW,EAAQ,OACnBg8B,EAAW,EAAQ,OAWvBvlO,EAAQwhB,OAHR,SAAgB1X,EAAMyQ,GAClB,QAASA,GAASA,GAAS,EAAIgvL,EAAS3F,UAAY2F,EAASzF,YAAYh6L,IAa7E9J,EAAQslO,aAHR,SAAsBx7N,EAAMyQ,GACxB,QAASA,GAASA,GAAS,EAAIgvL,EAAS3F,UAAY2F,EAAS1F,kBAAkB/5L,IAanF9J,EAAQ6f,OAHR,SAAgB/V,EAAMyQ,GAClB,QAASA,GAASA,GAAS,EAAIgrN,EAAS3J,UAAY2J,EAAStB,YAAYn6N,IAG7E,IAAI07N,EAAW,EAAQ,OACvB1lO,OAAOC,eAAeC,EAAS,YAAa,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOuiO,EAAS5J,aACnG97N,OAAOC,eAAeC,EAAS,aAAc,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOuiO,EAASvB,cACpGnkO,OAAOC,eAAeC,EAAS,qBAAsB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOuiO,EAASxB,sBAC5GlkO,OAAOC,eAAeC,EAAS,SAAU,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOuiO,EAASj2L,UAChGzvC,OAAOC,eAAeC,EAAS,aAAc,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOuiO,EAASzB,cAEpGjkO,OAAOC,eAAeC,EAAS,cAAe,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOuiO,EAASvB,cACrGnkO,OAAOC,eAAeC,EAAS,cAAe,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOuiO,EAASvB,cACrG,IAAIwB,EAAW,EAAQ,OACvB3lO,OAAOC,eAAeC,EAAS,YAAa,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOwiO,EAAS7hC,aACnG9jM,OAAOC,eAAeC,EAAS,aAAc,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOwiO,EAAS3hC,cACpGhkM,OAAOC,eAAeC,EAAS,mBAAoB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOwiO,EAAS5hC,oBAE1G/jM,OAAOC,eAAeC,EAAS,cAAe,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOwiO,EAAS3hC,cACrGhkM,OAAOC,eAAeC,EAAS,cAAe,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOwiO,EAAS3hC,cACrGhkM,OAAOC,eAAeC,EAAS,oBAAqB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOwiO,EAAS5hC,oBAC3G/jM,OAAOC,eAAeC,EAAS,oBAAqB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOwiO,EAAS5hC,oBAC3G/jM,OAAOC,eAAeC,EAAS,kBAAmB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOwiO,EAAS7hC,yCCvDzG9jM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQq7M,2BAAwB,EAOhCr7M,EAAQq7M,sBANR,SAA+B70E,EAAOt+H,GAClC,OAAO,IAAI0D,SAAQ,CAACC,EAASC,KACzB06H,EAAMp6H,GAAG,OAAO,IAAMP,EAAQ3D,KAC9Bs+H,EAAMp6H,GAAG,QAASN,+BCE1B8gE,EAAO5sE,QAAU,SAASq8F,EAAMj4E,EAAGC,GACjC,GAAID,IAAMC,EAAG,OAAO,EAEpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,GAAID,EAAE/jB,cAAgBgkB,EAAEhkB,YAAa,OAAO,EAE5C,IAAIsG,EAAQ6S,EAAGhM,EACf,GAAIkP,MAAMC,QAAQyH,GAAI,CAEpB,IADAzd,EAASyd,EAAEzd,SACG0d,EAAE1d,OAAQ,OAAO,EAC/B,IAAK6S,EAAI7S,EAAgB,GAAR6S,KACf,IAAK6iF,EAAMj4E,EAAE5K,GAAI6K,EAAE7K,IAAK,OAAO,EACjC,OAAO,EAIT,GAAK4K,aAAa3e,KAAS4e,aAAa5e,IAAM,CAC5C,GAAI2e,EAAEvW,OAASwW,EAAExW,KAAM,OAAO,EAC9B,IAAK2L,KAAK4K,EAAEviB,UACV,IAAKwiB,EAAEvb,IAAI0Q,EAAE,IAAK,OAAO,EAC3B,IAAKA,KAAK4K,EAAEviB,UACV,IAAKw6F,EAAM7iF,EAAE,GAAI6K,EAAEphB,IAAIuW,EAAE,KAAM,OAAO,EACxC,OAAO,EAGT,GAAK4K,aAAahW,KAASiW,aAAajW,IAAM,CAC5C,GAAIgW,EAAEvW,OAASwW,EAAExW,KAAM,OAAO,EAC9B,IAAK2L,KAAK4K,EAAEviB,UACV,IAAKwiB,EAAEvb,IAAI0Q,EAAE,IAAK,OAAO,EAC3B,OAAO,EAGT,GAAI+lD,YAAYgC,OAAOn9C,IAAMm7C,YAAYgC,OAAOl9C,GAAI,CAElD,IADA1d,EAASyd,EAAEzd,SACG0d,EAAE1d,OAAQ,OAAO,EAC/B,IAAK6S,EAAI7S,EAAgB,GAAR6S,KACf,GAAI4K,EAAE5K,KAAO6K,EAAE7K,GAAI,OAAO,EAC5B,OAAO,EAIT,GAAI4K,EAAE/jB,cAAgBy6C,OAAQ,OAAO12B,EAAEtO,SAAWuO,EAAEvO,QAAUsO,EAAEw1E,QAAUv1E,EAAEu1E,MAC5E,GAAIx1E,EAAEq2B,UAAY36C,OAAOsD,UAAUq3C,QAAS,OAAOr2B,EAAEq2B,YAAcp2B,EAAEo2B,UACrE,GAAIr2B,EAAE3V,WAAa3O,OAAOsD,UAAUqL,SAAU,OAAO2V,EAAE3V,aAAe4V,EAAE5V,WAIxE,IADA9H,GADA6G,EAAO1N,OAAO0N,KAAK4W,IACLzd,UACC7G,OAAO0N,KAAK6W,GAAG1d,OAAQ,OAAO,EAE7C,IAAK6S,EAAI7S,EAAgB,GAAR6S,KACf,IAAK1Z,OAAOsD,UAAUC,eAAeC,KAAK+gB,EAAG7W,EAAKgM,IAAK,OAAO,EAEhE,IAAKA,EAAI7S,EAAgB,GAAR6S,KAAY,CAC3B,IAAIzX,EAAMyL,EAAKgM,GAEf,IAAK6iF,EAAMj4E,EAAEriB,GAAMsiB,EAAEtiB,IAAO,OAAO,EAGrC,OAAO,EAIT,OAAOqiB,GAAIA,GAAKC,GAAIA,uCCrEtB,IAAIjiB,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,KAAgClD,+BCXrDF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQouL,2BAAwB,EAChC,EAAQ,OACR,MAAMs3C,EAAqB,EAAQ,OAC7B70F,EAAa,EAAQ,MACrB0oB,EAAqB,EAAQ,OAC7BosE,EAAoB,EAAQ,OAC5B9lD,EAAkB,EAAQ,OAC1BvwK,EAAgC,EAAQ,OAExCs2N,EAAK,EAAQ,OACbr2N,EAAW,EAAQ,OAKzB,MAAM6+K,EACF/tL,YAAYC,GACRA,EAAOA,GAAQ,GACfM,KAAK+wB,OAASrxB,EAAKqxB,QAAU,OAC7B/wB,KAAKilO,oBAAsBvlO,EAAKulO,qBAAuB,IAAI/uI,gBAC3Dl2F,KAAKklO,QAAUxlO,EAAKwU,MACpBlU,KAAKmlO,iBAAmB,IAAIxsE,EAAmBb,iBAAiBp4J,GAChEM,KAAKolO,gBAAkB,IAAIL,EAAkBM,gBAAgB3lO,GAC7DM,KAAKslO,cAAgB,CACjB,CAAC93C,EAAsB+3C,yBAA0B,CAC7CC,mBAAqBntE,GAAyBr4J,KAAKmlO,iBAAiB1sE,uBAAuBJ,GAC3FotE,mBAAqBptE,GAAyBr4J,KAAKmlO,iBAAiB/sE,uBAAuBC,IAE/F,CAACm1B,EAAsBk4C,wBAAyB,CAC5CF,mBAAqBntE,GAAyBr4J,KAAKolO,gBAAgBO,sBAAsBttE,GACzFotE,mBAAqBptE,GAAyBr4J,KAAKolO,gBAAgBQ,sBAAsBvtE,KAYrGk2B,aAAapnL,GACT,MAAM0+N,GAAc,IAAI51F,EAAW7nD,QAASrgE,MAAM5gB,GAClD,MAA4B,UAArB0+N,EAAY1/N,KACc,aAA1B0/N,EAAYnqN,UAA2B,YAAcmqN,EAAYnqN,UAAa,UAUzF8yK,eAAernL,GACX,MAAM0+N,GAAc,IAAI51F,EAAW7nD,QAASrgE,MAAM5gB,GAClD,GAAyB,WAArB0+N,EAAY1/N,KAAmB,CAC/B,MAAMsvJ,EAAa,GACnB,IAAK,MAAMhmH,KAAUo2L,EAAYtwF,QACzB,SAAU9lG,EACVgmH,EAAWhmH,EAAOtpC,OAAQ,EAG1BsvJ,EAAWhmH,EAAO0pG,aAAc,EAGxC,OAAOsc,EAGP,MAAO,UAYf71J,oBAAoB+sL,EAAUxlL,GAC1B,MAAO2+N,EAAajlB,SAAwB7gN,KACvC+lO,eAAep5C,EAAUxlL,EAAOqmL,EAAsBw4C,oBACrDx9I,EAASxoF,KAAKslO,cAAcQ,GAClC,IAAKt9I,EACD,MAAM,IAAIhoF,MAAM,wCAA0CslO,GAE9D,OAAOt9I,EAAOi9I,mBAAmB5kB,GAQrCjhN,eAAe+sL,EAAUxlL,GACrB,MAAO2+N,EAAajlB,SAAwB7gN,KACvC+lO,eAAep5C,EAAUxlL,EAAOqmL,EAAsBw4C,oBACrDx9I,EAASxoF,KAAKslO,cAAcQ,GAClC,IAAKt9I,EACD,MAAM,IAAIhoF,MAAM,wCAA0CslO,GAE9D,OAAOt9I,EAAOg9I,mBAAmB3kB,GAQrCjhN,mBAAmB+sL,EAAUxlL,GAEzB,aADyBnH,KAAK+lO,eAAep5C,EAAUxlL,EAAOqmL,EAAsBy4C,qBAAqB,GACxFh5G,KAAK,IAAI+3G,EAAGz2B,aAAa,CAAEjmL,OAAQklK,EAAsBy4C,sBAQ9ErmO,kBAAkB+sL,EAAUxlL,GACxB,MAAM++N,EAAkB,IAAIpB,EAAmBvtM,QACzCrzB,EAAO,CACT6sB,OAAQ,OACRjtB,QAAS,CACL,eAAgB,6BAEpB+K,KAAM1H,EACNupB,OAAQw1M,EAAgBx1M,cAEtB1wB,KAAKmmO,gBAAgBx5C,EAAUzoL,EAAM,CAAEkiO,YAAY,IACzDF,EAAgB11M,QAYpB5wB,qBAAqB+sL,EAAUxlL,EAAOk/N,GAClC,IAAI5iO,EAAsB,SAAhBzD,KAAK+wB,OAAoB47J,EAAWA,EAAW,UAAY/yJ,mBAAmBzyB,GAExF,MAAMrD,EAAU,IAAIm9E,QACpB,IAAIpyE,EAcJ,OAbA/K,EAAQy8E,OAAO,SAAU8lJ,GACL,SAAhBrmO,KAAK+wB,QACLjtB,EAAQy8E,OAAO,eAAgB,qCAC/B1xE,EAAO,IAAIqnF,gBACXrnF,EAAKtJ,IAAI,QAAS4B,GAClBnH,KAAKilO,oBAAoB/jO,SAAQ,CAACC,EAAK9B,KACnCwP,EAAKtJ,IAAIpE,EAAK9B,MAElByE,EAAQy8E,OAAO,iBAAkB1xE,EAAKhB,WAAW9H,OAAO8H,aAEX,KAAxC7N,KAAKilO,oBAAoBp3N,aAC9BpK,GAAO,IAAIzD,KAAKilO,oBAAoBp3N,cAEjC7N,KAAKmmO,gBAAgB1iO,EAAK,CAAEK,QAAAA,EAASitB,OAAQ/wB,KAAK+wB,OAAQliB,KAAAA,IAUrEjP,sBAAsB6D,EAAKS,EAAMmN,EAAU,IACvC,MAAMizE,QAAsBtkF,KAAKklO,SAAWhxN,OAAOzQ,EAAKS,GACxD,IAAI28M,EAECxvM,EAAQ+0N,aAGTvlB,EAAiBlyM,EAAS21E,EAAaz1E,MACjCy1E,EAAaz1E,KAAO,IAAIH,EAA8BI,wBAAwBw1E,EAAaz1E,OAGrG,IAAIi3N,EAAcxhJ,EAAaxgF,QAAQzB,IAAI,iBAAmB,GAK9D,GAJIyjO,EAAYhuN,QAAQ,KAAO,IAC3BguN,EAAcA,EAAY7jN,OAAO,EAAG6jN,EAAYhuN,QAAQ,QAGvDwsE,EAAalW,GAAI,CAClB,MAAMk4J,EAAY,UAAU9yM,KAAK/vB,GAAK,GACtC,IAAIi8K,EAAa,iBAIjB,MAHImhC,IACAnhC,QAAmBT,EAAgB4hC,IAEjC,IAAIrgN,MAAM,yCAAyC8lO,kBAA0BhiJ,EAAatzD,aAAa0uJ,KAEjH,MAAO,CAAComD,EAAajlB,IAG7BzhN,EAAQouL,sBAAwBA,EAChCA,EAAsB+3C,wBAA0B,kCAChD/3C,EAAsBk4C,uBAAyB,iCAC/Cl4C,EAAsBw4C,mBAAqB,GAAGx4C,EAAsB+3C,iCAAiC/3C,EAAsBk4C,+BAC3Hl4C,EAAsBy4C,mBAAqB,kDC7M3C,IAAIzkO,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAkBlD,GACvCkD,EAAa,EAAQ,OAAoBlD,GACzCkD,EAAa,EAAQ,OAA0BlD,GAC/CkD,EAAa,EAAQ,OAA2BlD,GAChDkD,EAAa,EAAQ,OAAelD,uCCfpC,IAAImnO,EAAavmO,MAAQA,KAAKumO,WAAc,SAAU5vI,EAAS6vI,EAAY7qM,EAAG8qM,GAE1E,OAAO,IAAK9qM,IAAMA,EAAI3wB,WAAU,SAAUC,EAASC,GAC/C,SAASw7N,EAAUrnO,GAAS,IAAM8uG,EAAKs4H,EAAUhwL,KAAKp3C,IAAW,MAAOovB,GAAKvjB,EAAOujB,IACpF,SAAS2nE,EAAS/2F,GAAS,IAAM8uG,EAAKs4H,EAAiB,MAAEpnO,IAAW,MAAOovB,GAAKvjB,EAAOujB,IACvF,SAAS0/E,EAAK7mG,GAJlB,IAAejI,EAIaiI,EAAOytF,KAAO9pF,EAAQ3D,EAAOjI,QAJ1CA,EAIyDiI,EAAOjI,MAJhDA,aAAiBs8B,EAAIt8B,EAAQ,IAAIs8B,GAAE,SAAU1wB,GAAWA,EAAQ5L,OAIT8M,KAAKu6N,EAAWtwI,GAClG+X,GAAMs4H,EAAYA,EAAUpmN,MAAMs2E,EAAS6vI,GAAc,KAAK/vL,YAGtEv3C,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQiM,eAAY,EACpB,MAAMs7N,EAAa,EAAQ,OACrBptG,EAAY,EAAQ,OACpBqtG,EAAkB,EAAQ,OAC1BC,EAAoB,EAAQ,OAC5BC,EAAS,EAAQ,OAIvB,MAAMz7N,EACF5L,YAAY6kC,IACRA,EAAWA,GAAY,IACdyiM,kBAAoBziM,EAASyiM,mBAAqB,IAC3DziM,EAAS0iM,0BAA4B1iM,EAAS0iM,2BAA6B,EAC3EhnO,KAAK6mK,KAAO,IAAIigE,EAAOt1N,KAAK8yB,GAC5BtkC,KAAKinO,uBAAuB3iM,GAEhCl6B,4BAA4By8J,EAAMviI,GAC9BuiI,EAAKqgE,oBAAoB,IAAI3tG,EAAU4tG,oBAAoBtgE,EAAMviI,IACjEuiI,EAAKqgE,oBAAoB,IAAI3tG,EAAU6tG,+BAA+BvgE,EAAMviI,IAC5EuiI,EAAKqgE,oBAAoB,IAAI3tG,EAAU8tG,8BAA8BxgE,EAAMviI,IAC3EuiI,EAAKqgE,oBAAoB,IAAI3tG,EAAU+tG,mCAAmCzgE,EAAMviI,IAChFuiI,EAAKqgE,oBAAoB,IAAI3tG,EAAUguG,mCAAmC1gE,EAAMviI,IAChFuiI,EAAKqgE,oBAAoB,IAAI3tG,EAAUiuG,0BAA0B3gE,EAAMviI,IAE3El6B,iCAAiCy8J,EAAMviI,GACnCuiI,EAAK4gE,yBAAyB,IAAIluG,EAAUmuG,yBAAyB7gE,EAAMviI,IAC3EuiI,EAAK4gE,yBAAyB,IAAIluG,EAAUouG,oBAAoB9gE,EAAMviI,IACtEuiI,EAAK4gE,yBAAyB,IAAIluG,EAAUquG,sBAAsB/gE,EAAMviI,IACxEuiI,EAAK4gE,yBAAyB,IAAIluG,EAAUsuG,uBAAuBhhE,EAAMviI,IACzEuiI,EAAK4gE,yBAAyB,IAAIluG,EAAUuuG,wBAAwBjhE,EAAMviI,IAC1EuiI,EAAK4gE,yBAAyB,IAAIluG,EAAUwuG,qBAAqBlhE,EAAMviI,IACvEuiI,EAAK4gE,yBAAyB,IAAIluG,EAAUyuG,qBAAqBnhE,EAAMviI,IACvEuiI,EAAK4gE,yBAAyB,IAAIluG,EAAU0uG,qBAAqBphE,EAAMviI,IACvEuiI,EAAK4gE,yBAAyB,IAAIluG,EAAU2uG,uBAAuBrhE,EAAMviI,IAE7El6B,qCAAqCy8J,EAAMviI,GACvCuiI,EAAKshE,6BAA6B,IAAIvB,EAAgBwB,4BAA4BvhE,EAAMviI,IACxFuiI,EAAKshE,6BAA6B,IAAIvB,EAAgByB,6BAA6BxhE,EAAMviI,IACzFuiI,EAAKshE,6BAA6B,IAAIvB,EAAgB0B,2BAA2BzhE,EAAMviI,IACvFuiI,EAAKshE,6BAA6B,IAAIvB,EAAgB2B,2BAA2B1hE,EAAMviI,IACvFuiI,EAAKshE,6BAA6B,IAAIvB,EAAgB4B,yBAAyB3hE,EAAMviI,IASzF6sJ,uBAAuBs3C,EAActoO,EAASkR,GAC1C,OAAOk1N,EAAUvmO,UAAM,OAAQ,GAAQ,YACnC,OAAOA,KAAK0oO,iCAAiCD,QAAoBzoO,KAAK6mK,KAAK8hE,cAAc5gN,MAAM5nB,GAAUkR,MAUjHq3N,iCAAiCD,EAActoO,EAASkR,GACpDA,EAAUA,GAAW,GACrB,MAAMk4B,EAAmC,iBAAjBk/L,GAA4B,EAAI9B,EAAW5+M,OAAO0gN,GAAgBA,EAEpFG,EAAiB,CACnBzoO,QAAAA,EACA0oO,oBAHwB7oO,KAAK8oO,eAAev/L,GAI5C1iC,MAAO7G,KAAK6mK,KAAKl6J,YAAY0nH,eAC7B3iH,KAAM,GACNq3N,iBAAkBlC,EAAkBmC,iBAAiBC,OACrD19N,qBAAsB8F,EAAQ9F,sBAAwB,GACtD7E,QAAS,KACTwiO,kBAAmB,GACnBC,cAAe93N,EAAQ83N,eAAiB,GACxCC,kBAAmB,IAEvB,OAAOppO,KAAK6mK,KAAKwiE,WAAW9/L,EAAUq/L,GAU1CE,eAAev/L,GACX,MAAMs/L,EAAsB,GACtBS,EAAiB,GACvB,IAAK,MAAMC,KAAchgM,EAASigM,YACN,uBAApBD,EAAWE,KACXZ,EAAoBU,EAAWrmO,KAAK7D,OAASkqO,EAG7CD,EAAe7jO,KAAK8jO,GAI5B,OADAhgM,EAASigM,YAAcF,EAChBT,EAEX5B,uBAAuB3iM,GACnBj5B,EAAUq+N,qBAAqB1pO,KAAK6mK,KAAMviI,GAC1Cj5B,EAAUs+N,0BAA0B3pO,KAAK6mK,KAAMviI,GAC/Cj5B,EAAUu+N,8BAA8B5pO,KAAK6mK,KAAMviI,IAG3DllC,EAAQiM,UAAYA,8BChHpB,IAAW29N,EANX9pO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4pO,sBAAmB,GAKhBA,EASW5pO,EAAQ4pO,mBAAqB5pO,EAAQ4pO,iBAAmB,KALzDA,EAAyB,OAAI,GAAK,SAInDA,EAAiBA,EAAyB,OAAI,GAAK,qCCdvD9pO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,kCCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoS,UAAO,EACf,MAAMrD,EAAqB,EAAQ,OAC7B+/L,EAA0B,EAAQ,MAClCh9L,EAAoB,EAAQ,MAqPlC9R,EAAQoS,KAjPR,MACI/R,YAAY6kC,GACRtkC,KAAK6pO,aAAe,GACpB7pO,KAAK8pO,kBAAoB,GACzB9pO,KAAK+pO,sBAAwB,GAC7B/pO,KAAKskC,SAAWA,EAChBtkC,KAAK2M,YAAc23B,EAAS33B,aAAe,IAAIwB,EAAmBE,YAClErO,KAAKgqO,iBAAmB,IAAI94N,EAAkBw+H,QAAQ1vI,KAAK2M,aAC3D3M,KAAK2oO,cAAgB,IAAIz6B,EAAwB+7B,cAMrD/C,oBAAoBgD,GAChBlqO,KAAK6pO,aAAaK,EAAYC,YAAcD,EAOhDzC,yBAAyB2C,GACrBpqO,KAAK8pO,kBAAkBM,EAAiBD,YAAcC,EAM1DjC,6BAA6BkC,GACzBrqO,KAAK+pO,sBAAsBM,EAAqBF,YAAcE,EAQlEhB,WAAWpkO,EAAM2jO,GACb,MAAMsB,EAAclqO,KAAK6pO,aAAa5kO,EAAKwkO,MAC3C,IAAKS,EACD,MAAM,IAAI1pO,MAAM,6BAA6ByE,EAAKwkO,SAEtD,OAAOS,EAAYnqO,OAAOkF,EAAM2jO,GASpC0B,gBAAgBrlO,EAAMslO,EAAW3B,GAC7B,MAAMwB,EAAmBpqO,KAAK8pO,kBAAkB7kO,EAAKwkO,MACrD,IAAKW,EACD,MAAM,IAAI5pO,MAAM,mCAAmCyE,EAAKwkO,SAE5D,OAAOW,EAAiBrqO,OAAOkF,EAAMslO,EAAW3B,GAQpD4B,oBAAoBC,EAAkB7B,GAClC,MAAMyB,EAAuBrqO,KAAK+pO,sBAAsBU,EAAiBC,UAAUxnO,KAAK7D,OACxF,OAAKgrO,EAGEA,EAAqBtqO,OAAO0qO,EAAkB7B,GAF1C,KAUfvjD,eAAe5vB,GACX,GAA0B,IAAtBA,EAAW1vJ,OACX,OAAO0vJ,EAAW,GAGtB,MAAM6vB,EAAO,GACPqlD,EAAU,GAChB,IAAK,MAAMzkO,KAAauvJ,EACG,QAAnBvvJ,EAAUC,KACVm/K,EAAK7/K,KAAKS,GAGVykO,EAAQllO,KAAKS,GAGrB,GAAIo/K,EAAKv/K,SAAW0vJ,EAAW1vJ,OAE3B,OAAO/F,KAAK4qO,oBAAoBtlD,GAE/B,GAAIA,EAAKv/K,SAAW0vJ,EAAW1vJ,OAAS,GAClB,aAApB4kO,EAAQ,GAAGxkO,MACkB,QAA7BwkO,EAAQ,GAAGnnO,MAAM,GAAG2C,KAAgB,CAGvC,MAAM0kO,EAAmBF,EAAQ,GAEjC,OADArlD,EAAK7/K,KAAKolO,EAAiBrnO,MAAM,IAC1BxD,KAAKgqO,iBAAiB13F,eAAetyI,KAAK4qO,oBAAoBtlD,GAAOulD,EAAiBrnO,MAAM,IAElG,OAAImnO,EAAQ5kO,SAAW0vJ,EAAW1vJ,OAE5B/F,KAAK8qO,2BAA2BH,GAIhC3qO,KAAK8qO,2BAA2B,CACnC9qO,KAAK4qO,oBAAoBtlD,GACzBtlL,KAAK8qO,2BAA2BH,KAI5CC,oBAAoBn1E,GAChB,OAAOz1J,KAAKgqO,iBAAiBn5F,UAAU,GAAGpyH,OAAO4B,MAAM,GAAIo1I,EACtDzvJ,KAAK2L,GAAOA,EAAGm/H,aAExBg6F,2BAA2Br1E,GACvB,OAAOz1J,KAAKgqO,iBAAiB53F,WAAWqjB,GAQ5Cs1E,kBAAkBr5N,EAAMs5N,GACpB,OAAOt5N,EAAK+M,OAAO,CAACusN,IAOxBC,cAAczxN,GACV,OAAQA,EAAM4lF,MAAQ5lF,EAAM4lF,MAAQ5lF,EAAMtW,MAAM7D,MASpD6rO,eAAeF,EAAYpC,GACvB,OAAO5oO,KAAK2M,YAAYpG,UAAUqiO,EAAel3N,KAAK3L,OAChD6iO,EAAel3N,KAAK8O,KAAKxgB,KAAKskC,SAASyiM,mBAAqB/mO,KAAKskC,SAASyiM,kBAAoB,IAAMiE,GAQ9GG,iBAAiB9rO,EAAOc,GACpB,MAAMirO,EAAejrO,EAAQkrO,WAAWhsO,GAAO,GAC/C,GAAIW,KAAKskC,SAAS4sJ,iBAAmBk6C,EACjC,MAAM,IAAI5qO,MAAM,kCAAoCnB,GAExD,OAAOW,KAAK2M,YAAYmnH,UAAUs3G,GAAgB/rO,GAStDisO,YAAY5rO,EAAMwD,GACd,GAAIxD,EACA,IAAK,MAAM8+G,KAAY9+G,EACnB,GAAI8+G,EAASt7G,KAAK7D,QAAU6D,EACxB,OAAOs7G,EAYvB+sH,eAAe7kO,EAAS8kO,EAAe5C,GACnC,OAAO5oO,KAAKgqO,iBAAiBj4N,cAAcrL,EAAS1G,KAAK2M,YAAYmnH,UAAU,mDAAoD9zH,KAAKmrO,iBAAiBK,EAActoO,KAAK7D,MAAOupO,EAAezoO,SAAUyoO,EAAe/hO,OAW/N4kO,kBAAkB/kO,EAASglO,EAAe9kO,EAAQC,EAAO1G,GACrD,MAAMwG,EAAY3G,KAAKmrO,iBAAiBO,EAAcrsO,MAAOc,GAC7D,OAAIA,GAAWA,EAAQwrO,gBAAgBD,EAAcrsO,QAC9Cc,EAAQwrO,gBAAgBD,EAAcrsO,OAAO,YACzCW,KAAKgqO,iBAAiBj4N,cAAcnL,EAAQD,EAAWD,EAASG,GAEpE7G,KAAKgqO,iBAAiBj4N,cAAcrL,EAASC,EAAWC,EAAQC,GAY3E+kO,eAAellO,EAASglO,EAAeG,EAAuBjlO,EAAQC,EAAO1G,GACzE,MAAM2rO,EAAmB9rO,KAAKmrO,iBAAiBO,EAAcrsO,MAAOc,GACpE,IAAI4rO,EAAa/rO,KAAKgqO,iBAAiBx3F,WAAWs5F,GAElD,IAAK,MAAME,KAAwBH,EAAsB9+N,OAAQ,CAC7D,GAAkC,cAA9Bi/N,EAAqBvC,KACrB,MAAM,IAAIjpO,MAAM,qEACVwrO,EAAqBvC,MAE/BsC,EAAa/rO,KAAKgqO,iBAAiB55F,UAAU,CACzC27F,EACA/rO,KAAKgqO,iBAAiBx3F,WAAWxyI,KAAKmrO,iBAAiBa,EAAqB3sO,MAAOc,MAI3F,OAAIA,GAAWA,EAAQwrO,gBAAgBD,EAAcrsO,QAC9Cc,EAAQwrO,gBAAgBD,EAAcrsO,OAAO,YACzCW,KAAKgqO,iBAAiBl4N,WAAWlL,EAAQmlO,EAAYrlO,EAASG,GAElE7G,KAAKgqO,iBAAiBl4N,WAAWpL,EAASqlO,EAAYnlO,EAAQC,iCCtP7E3H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6sO,wBAAqB,EAwH7B7sO,EAAQ6sO,mBApHR,MACIxsO,YAAY0qO,EAAYtjE,EAAMviI,GAC1BtkC,KAAKmqO,WAAaA,EAClBnqO,KAAK6mK,KAAOA,EACZ7mK,KAAKskC,SAAWA,EAiBpB4nM,+BAA+BC,EAAcnB,EAAYpC,GACrD,MAAMwD,EAAkB,GACxB,GAAID,EACA,IAAK,MAAME,KAAiBF,EAAaG,WACrC,GAA2B,UAAvBD,EAAc5C,KAAkB,CAChC,MAAM8C,EAAYF,EAClBrsO,KAAKwsO,2BAA2BD,EAAW3D,EAAgBwD,EAAiB,KAAM,WAClFpsO,KAAKwsO,2BAA2BD,EAAW3D,EAAgBwD,EAAiB,QAAS,SAIjG,OAAOA,EAUXI,2BAA2BD,EAAW3D,EAAgBwD,EAAiB7B,EAAWkC,GAC9E,IAAKL,EAAgBK,IAAuBF,EAAUrpO,KAAK7D,QAAUkrO,EAAW,CAE5E,IAAK6B,EAAgBK,GAAqB,CACtC,MAAMjuH,EAAWx+G,KAAK6mK,KAAKykE,YAAYiB,EAAUxvN,UAAW,KAC5D,GAAIyhG,EAAU,CACV,MAAMkuH,EAAc1sO,KAAK6mK,KAAKyjE,gBAAgB9rH,EAASn/G,MAAOktO,EAAUrpO,KAAK7D,MAAOupO,GACpF,GAAiC,IAA7B8D,EAAYt0G,MAAMryH,OAClB,MAAM,IAAIvF,MAAM,oCAAoC+pO,cAAsBmC,EAAYt0G,MACjFryH,aAAawmO,EAAUrpO,KAAK7D,SAErC+sO,EAAgBK,GAAsBC,EAAYt0G,MAAM,GACpDs0G,EAAYC,oBACPP,EAAgBO,oBACjBP,EAAgBO,kBAAoB,IAExCP,EAAgBO,kBAAkBluN,OAAOiuN,EAAYC,qBAIjE,IAAKP,EAAgBK,GAAqB,CACtC,MAAMr7N,EAAOpR,KAAK6mK,KAAKqkE,eAAelrO,KAAK6mK,KAAKokE,cAAcsB,GAAY3D,GAC1EA,EAAeM,kBAAkBzjO,KAAK2L,GACtCg7N,EAAgBK,GAAsBr7N,IAelDw7N,oBAAoBC,EAAY7B,EAAYpC,GACxC,MAAM/kD,EAAU,GAChB,GAAIgpD,EACA,IAAK,MAAMnC,KAAamC,EAAY,CAChC,MAAMnpO,EAAS1D,KAAK6mK,KAAK2jE,oBAAoB,CAAEE,UAAAA,EAAWM,WAAAA,GAAcpC,GACxE,GAAIllO,EAAQ,CACR,GAAIA,EAAOopO,OACP,OAAO,KAEXjpD,EAAQp+K,KAAK/B,IAIzB,OAAOmgL,EAWXkpD,uBAAuBC,EAAkB9mO,GACrC,IAAK,MAAM+mO,KAAmBD,EAAkB,CAC5C,GAAIC,EAAgBH,OAChB,OAAO9sO,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU,IAE5Co8F,EAAgBC,qBAChBhnO,EAAY+mO,EAAgBC,mBAAmBhnO,IAGvD,OAAOA,kCCtHfhH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+tO,kCAA+B,EACvC,MAAMC,EAAuB,EAAQ,OAIrC,MAAMD,UAAqCC,EAAqBnB,mBAC5DxsO,YAAY0qO,EAAYtjE,EAAMviI,GAC1B3kC,MAAMwqO,EAAYtjE,EAAMviI,IAGhCllC,EAAQ+tO,6BAA+BA,gCCXvCjuO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQioO,mCAAgC,EACxC,MAAMgG,EAAiC,EAAQ,OAK/C,MAAMhG,UAAsCgG,EAA+BF,6BACvE1tO,YAAYonK,EAAMviI,GACd3kC,MAAM,qBAAsBknK,EAAMviI,GAEtCvkC,OAAOutO,EAAqB1E,GACxB,MAAM,IAAIpoO,MAAM,sFAGxBpB,EAAQioO,8BAAgCA,gCCfxCnoO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgoO,oCAAiC,EACzC,MAAMiG,EAAiC,EAAQ,OAI/C,MAAMjG,UAAuCiG,EAA+BF,6BACxE1tO,YAAYonK,EAAMviI,GACd3kC,MAAM,sBAAuBknK,EAAMviI,GAEvCvkC,OAAOutO,EAAqB1E,GACxB,GAAsC,UAAlC0E,EAAoBpnO,UACpB,MAAM,IAAI1F,MAAM,qCAAuC8sO,EAAoBpnO,WAI/E,GAAIonO,EAAoBC,oBACpB,IAAK,MAAMC,KAAsBF,EAAoBC,oBAAqB,CACtE,MAAMrqO,EAAOsqO,EAAmBjnO,SAASrD,KAAK7D,MAE1CmuO,EAAmBzqB,eACd6lB,EAAeO,cAAcjmO,KAC9B0lO,EAAeO,cAAcjmO,GAAQsqO,EAAmBzqB,eAIhE,IAAI0qB,EAAWD,EAAmBrnO,KAClC,MAAMunO,EAA8B,gBAAlBD,EAAShE,KACvBiE,IACAD,EAAWA,EAAStnO,MAExB,MAAM8oF,EAAyB,aAAlBw+I,EAAShE,KAClBx6I,IACAw+I,EAAWA,EAAStnO,MAExB,MAAMA,EAAOsnO,EAASvqO,KAAK7D,MAC3BupO,EAAeQ,kBAAkBlmO,GAAQ,CAAEwqO,UAAAA,EAAWz+I,KAAAA,EAAM9oF,KAAAA,GAIpE,MAAM6mO,EAAmBhtO,KAAK4sO,oBAAoBU,EAAoBT,WAAYS,EAAoBpqO,KAAOoqO,EAAoBpqO,KAAK7D,MAAQ,GAAIupO,GAClJ,IAAKoE,EACD,OAAOhtO,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU,IAGhD,MAAM3qI,EAAYlG,KAAK6mK,KAAKwe,eAAeioD,EAAoBnB,aAAaG,WACvEtmO,KAAKqmO,GAAkBrsO,KAAK6mK,KAAKwiE,WAAWgD,EAAezD,MAEhE,OAAO5oO,KAAK+sO,uBAAuBC,EAAkB9mO,IAG7D9G,EAAQgoO,+BAAiCA,+BCnDzCloO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+nO,yBAAsB,EAC9B,MAAMj2N,EAAoB,EAAQ,MAC5Bk8N,EAAuB,EAAQ,OAIrC,MAAMjG,UAA4BiG,EAAqBnB,mBACnDxsO,YAAYonK,EAAMviI,GACd3kC,MAAM,WAAYknK,EAAMviI,GAE5BvkC,OAAOwpC,EAAUq/L,GACb,MAAM+E,EAAuBpkM,EAASigM,YACjCxjO,KAAKujO,IACN,MAAMqE,EAAgB5tO,KAAK6tO,iCAAiCtE,EAAYrqO,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI8yN,GAAiB,CAAEkF,wBAAwB,KAC7IC,EAAoB7uO,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI8yN,GAAiB,CAAE/hO,MAAO+mO,EAAc/mO,OAAS+hO,EAAe/hO,MAAOH,QAASknO,EAAclnO,SAAW1G,KAAK6mK,KAAKl6J,YAAYqnH,cACzL,IAAIg6G,EAAsBhuO,KAAK6mK,KAAKwiE,WAAWE,EAAYwE,GAO3D,OANIH,GAAiBA,EAAcjB,oBAC/BqB,EAAsBhuO,KAAK6mK,KAAKwe,eAAe,CAC3C2oD,EACAhuO,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU+8F,EAAcjB,sBAGpDqB,KAEL9nO,EAAYlG,KAAK6mK,KAAKmjE,iBAAiBv3N,cAA8C,IAAhCk7N,EAAqB5nO,OAAe4nO,EAAqB,GAAK3tO,KAAK6mK,KAAKmjE,iBAAiB91F,YAAYy5F,GAAuB/E,EAAeM,mBAEtM,OAAOlpO,KAAK29I,+BAA+Bz3I,GAQ/C2nO,iCAAiCtE,EAAYX,GACzC,GAAwB,wBAApBW,EAAWE,KACX,OAAOzpO,KAAKksO,+BAA+B3C,EAAW4C,aAAc5C,EAAWrmO,KAAOqmO,EAAWrmO,KAAK7D,MAAQ,GAAIupO,GAEtH,MAAM,IAAIpoO,MAAM,2BAA2B+oO,EAAWE,QAO1D9rF,+BAA+Bz3I,GAC3B,MAAMiV,EAAOnb,KACP6/I,EAAyB,GACzBC,EAAehkI,MAAM4b,KAAKxxB,EAAUI,WACrCiT,QAAO,CAACqE,EAAKrX,KACdqX,EAAIrX,EAASlH,QAAS,EACfue,IACR,IACH,OAAO1M,EAAkBM,KAAKC,aAAavL,EAAW,CAClDwL,KAAM,CAACC,EAAIC,KACA,CACHC,SAAS,EACTvK,OAAQsK,EAAQE,WAAW6qI,EAAgBhrI,EAAGjL,SAAUiL,EAAGhL,UAAWg2I,EAAgBhrI,EAAG/K,QAAS+1I,EAAgBhrI,EAAG9K,UAG7HT,QAAS,CAACuL,EAAIC,KACH,CACHC,SAAS,EACTvK,OAAQsK,EAAQG,cAAc4qI,EAAgBhrI,EAAGjL,SAAUi2I,EAAgBhrI,EAAGhL,WAAYg2I,EAAgBhrI,EAAG/K,QAAS+1I,EAAgBhrI,EAAG9K,YAIrJ,SAAS81I,EAAgBvrI,GACrB,GAAsB,cAAlBA,EAAKtK,SAA0B,CAC/B,IAAIP,EAAWs5I,EAAuBzuI,EAAK/R,OAM3C,OALKkH,IACDA,EAAW2K,EAAkBM,KAAKuuI,qBAAqB3uI,EAAK/R,MAAOygJ,EAAc3kI,EAAK0rJ,KAAKl6J,aAC3FmzI,EAAav5I,EAASlH,QAAS,EAC/BwgJ,EAAuBzuI,EAAK/R,OAASkH,GAElCA,EAEX,OAAO6K,IAInBhS,EAAQ+nO,oBAAsBA,gCClF9BjoO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6uO,iCAA8B,EACtC,MAAM/8N,EAAoB,EAAQ,MAC5B21N,EAAoB,EAAQ,OAC5BuG,EAAuB,EAAQ,OAIrC,MAAMa,UAAoCb,EAAqBnB,mBAC3DxsO,YAAY0qO,EAAYtjE,EAAMviI,GAC1B3kC,MAAMwqO,EAAYtjE,EAAMviI,GAS5B4pM,4BAA4B10N,EAAOwxN,EAAYpC,GAC3C,OAAO5oO,KAAKksO,+BAA+B1yN,EAAM2yN,aAAcnB,EAAY9rO,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI8yN,GAAiB,CAAEl3N,KAAM1R,KAAK6mK,KAAKkkE,kBAAkBnC,EAAel3N,KAAMs5N,MAUzLmD,iBAAiBvF,EAAgB2D,EAAW6B,EAAuBzB,GAE/D,MAAM0B,EAAUD,EAEhB,IACI9xN,EADA6C,EAAS,EAGb,IAA6B,OAAzBotN,EAAUrpO,KAAK7D,OAA2C,UAAzBktO,EAAUrpO,KAAK7D,SAChD+uO,GAAwB,EAIpB7B,EAAUxvN,WACV,IAAK,MAAMyhG,KAAY+tH,EAAUxvN,UACD,MAAxByhG,EAASt7G,KAAK7D,OACdW,KAAK6mK,KAAKyjE,gBAAgB9rH,EAASn/G,MAAOktO,EAAUrpO,KAAK7D,MAAOupO,GAMhF,MAAMoC,EAAahrO,KAAK6mK,KAAKokE,cAAcsB,GAM3C,GAJI3D,EAAeG,mBAAqBlC,EAAkBmC,iBAAiBsF,SACvE1F,EAAer9N,qBAAqBvL,KAAK6mK,KAAKqkE,eAAeF,EAAYpC,GAAgBvpO,QAAS,GAGlG+uO,EAAuB,CACvB,MAAMG,EAAoBvuO,KAAKwuO,gBAAgB5F,EAAgBoC,EAAY2B,GAC3E,GAAI4B,EACA,OAAOA,EAGf,MAAM94E,EAAak3E,EACb,CAAC3sO,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU87F,IAAsB,GAE5DiB,EAAgB5tO,KAAKkuO,4BAA4B3B,EAAWvB,EAAYpC,GAC9E,IAAIhiO,EAASgnO,EAAclnO,SAAW1G,KAAK6mK,KAAKqkE,eAAeF,EAAYpC,GACvE/hO,EAAQ+mO,EAAc/mO,OAAS+hO,EAAe/hO,MAC9C+mO,EAAcjB,mBACdl3E,EAAWhwJ,KAAKzF,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU+8F,EAAcjB,oBAIvE,IAAIlB,GAAoB,EACpBgD,EAAsB,KAC1B,GAAIL,GAAyB7B,EAAUxvN,WAAawvN,EAAUxvN,UAAUhX,OACpE,IAAK,MAAMy4G,KAAY+tH,EAAUxvN,UAAW,CACxC,GAA4B,MAAxByhG,EAASt7G,KAAK7D,MAAe,CAE7B,MAAMqtO,EAAc1sO,KAAK6mK,KAAKyjE,gBAAgB9rH,EAASn/G,MAAOktO,EAAUrpO,KAAK7D,MAAOupO,GACpF6F,EAAsB/B,EAAYt0G,MAClCq9B,EAAWhwJ,KAAKzF,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU67F,EAAYt0G,MAAMpyH,KAAKoL,GAASpR,KAAK6mK,KAAK4kE,kBAAkB7C,EAAeliO,QAAS6lO,EAAUrpO,KAAMkO,EAAMw3N,EAAe/hO,MAAO+hO,EAAezoO,aAChMusO,EAAYC,mBACZl3E,EAAWhwJ,KAAKzF,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU67F,EAAYC,oBAErEyB,GAAwB,EACxB,MAEC,GAA4B,UAAxB5vH,EAASt7G,KAAK7D,MAAmB,CAEtC,MAAMqtO,EAAc1sO,KAAK6mK,KAAKyjE,gBAAgB9rH,EAASn/G,MAAOktO,EAAUrpO,KAAK7D,MAAOupO,GACpF,GAAiC,IAA7B8D,EAAYt0G,MAAMryH,OAClB,MAAM,IAAIvF,MAAM,mDAAmDksO,EAAYt0G,MAC1EryH,aAAawmO,EAAUrpO,KAAK7D,SAErCwH,EAAQ6lO,EAAYt0G,MAAM,GAC1BwwG,EAAiB1pO,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI8yN,GAAiB,CAAE/hO,MAAAA,IAChE6lO,EAAYC,mBACZl3E,EAAWhwJ,KAAKzF,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU67F,EAAYC,oBAErE,MAEC,GAA4B,QAAxBnuH,EAASt7G,KAAK7D,MAAiB,CAEpC,IAAIqvO,EAAYlwH,EAASn/G,MACF,cAAnBqvO,EAAUjF,OACViF,EAAY,CAAEjF,KAAM,YAAa18N,OAAQ,CAAC2hO,KAE9Cj5E,EAAWhwJ,KAAKzF,KAAK6mK,KAAK+kE,eAAehD,EAAeliO,QAAS6lO,EAAUrpO,KAAMwrO,EAAW9nO,EAAQgiO,EAAe/hO,MAAO+hO,EAAezoO,UACzIsrO,GAAoB,EACpB,OAWZ,GANI2C,GAAyB3C,GACzBh2E,EAAWhwJ,KAAKzF,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU,CACjD7wI,KAAK6mK,KAAK4kE,kBAAkB7C,EAAeliO,QAAS6lO,EAAUrpO,KAAM0D,EAAQgiO,EAAe/hO,MAAO+hO,EAAezoO,YAIrHosO,EAAUxvN,WAAawvN,EAAUxvN,UAAUhX,OAC3C,IAAK,MAAMy4G,KAAY+tH,EAAUxvN,UAC7B,GAA4B,MAAxByhG,EAASt7G,KAAK7D,OAAyC,UAAxBm/G,EAASt7G,KAAK7D,OAA6C,QAAxBm/G,EAASt7G,KAAK7D,YAG/E,GAA4B,UAAxBm/G,EAASt7G,KAAK7D,MAAmB,CACtC,GAA4B,aAAxBm/G,EAASn/G,MAAMoqO,KACf,MAAM,IAAIjpO,MAAM,4CAAgDg+G,EAASn/G,MAAMoqO,MAEnFntN,EAAQ0F,SAASw8F,EAASn/G,MAAMA,MAAO,SAEtC,GAA4B,WAAxBm/G,EAASt7G,KAAK7D,MAAoB,CACvC,GAA4B,aAAxBm/G,EAASn/G,MAAMoqO,KACf,MAAM,IAAIjpO,MAAM,6CAAiDg+G,EAASn/G,MAAMoqO,MAEpFtqN,EAAS6C,SAASw8F,EAASn/G,MAAMA,MAAO,QAEvC,CACD,MAAMqtO,EAAc1sO,KAAK6mK,KAAKyjE,gBAAgB9rH,EAASn/G,MAAOm/G,EAASt7G,KAAK7D,MAAOupO,GACnFnzE,EAAWhwJ,KAAKzF,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU67F,EAAYt0G,MAAMpyH,KAAKoL,GAASpR,KAAK6mK,KAAK4kE,kBAAkB7kO,EAAQ43G,EAASt7G,KAAMkO,EAAMw3N,EAAe/hO,MAAO+hO,EAAezoO,aAC/KusO,EAAYC,mBACZl3E,EAAWhwJ,KAAKzF,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU67F,EAAYC,oBAMjF,MAAMK,EAAmBhtO,KAAK4sO,oBAAoBL,EAAUM,WAAY7B,EAAYpC,GACpF,IAAKoE,EACD,OAAOhtO,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU,IAGhD,IAAI3qI,EAAYlG,KAAK6mK,KAAKwe,eAAe5vB,GACzC,GAAI82E,EAAUJ,cAAgBI,EAAUJ,aAAaG,WAAWvmO,OAAQ,CAEpE,GAAI0oO,EAAqB,CACrB,GAAmC,IAA/BA,EAAoB1oO,OACpB,MAAM,IAAIvF,MAAM,gDAAgDiuO,EAC3D1oO,aAAawmO,EAAUrpO,KAAK7D,SAErCuH,EAAS6nO,EAAoB,GAGjC,MAAME,EAAoBzvO,OAAO4W,OAAO5W,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI8yN,GAAiByF,EAAU,CAAE38N,KAAM1R,KAAK6mK,KAAKkkE,kBAAkBnC,EAAel3N,KAAMs5N,IAAgB,IAAK,CAAEnkO,MAAAA,EAAOH,QAAS2nO,EAAUznO,EAASgiO,EAAeliO,UAErO,IAAIkoO,GAAa,EACjB,MAAMtC,EAAaC,EAAUJ,aAAaG,WACrCh/N,QAAQuhO,GACc,UAAnBA,EAAUpF,MAA6C,eAAzBoF,EAAU3rO,KAAK7D,QAC7CuvO,GAAa,GACN,KAIf,IAAIE,EAAkB9uO,KAAK6mK,KAAKwe,eAAe5vB,EAC1Ch3I,OAAO6tN,EAAWtmO,KAAKqmO,GAAkBrsO,KAAK6mK,KAAKwiE,WAAWgD,EAAesC,OAElF,GAAIC,EAAY,CAEZ,MAAMG,EAAqB/uO,KAAK6mK,KAAKl6J,YAAYpG,SAAS,MAAQvG,KAAKskC,SAAS0iM,6BAC1EgI,EAAoBhvO,KAAK6mK,KAAKl6J,YAC/BpG,SAASK,EAAOvH,MAAQW,KAAKskC,SAASyiM,kBAAoB,cACzD7zN,EAAalT,KAAK6mK,KAAKmjE,iBAAiBv5F,qBAAqBs+F,EAAoB,QAAS/uO,KAAK6mK,KAAKmjE,iBAAiB/2N,qBAAqBrM,IAAS,GACnJqoO,EAAejvO,KAAK6mK,KAAKmjE,iBAAiBv3N,cAAczS,KAAK6mK,KAAKmjE,iBAAiBz4F,aAAavxI,KAAK6mK,KAAKmjE,iBAAiB93N,YAAYhM,EAAW,GAAI,CAACgN,IAAc87N,EAAmBhvO,KAAK6mK,KAAKmjE,iBAAiB/2N,qBAAqB87N,IAAsB,CAACC,IACrQpG,EAAeM,kBAAkBzjO,KAAKupO,GAQlCF,EAJCxC,EAAWvmO,OAIM/F,KAAK6mK,KAAKmjE,iBAAiB53F,WAAW,CACpDpyI,KAAK6mK,KAAKmjE,iBAAiBv3N,cAAcq8N,EAAiB,IAC1DG,IALcA,EAS1B/oO,EAAY4oO,OAEPV,GAA6C,aAApBxnO,EAAOE,UAGrC8hO,EAAeM,kBAAkBzjO,KAAKmB,GAO1C,OAJIuY,GAAU7C,KACVpW,EAAYlG,KAAK6mK,KAAKmjE,iBAAiBh2F,YAAYh0I,KAAK6mK,KAAKmjE,iBAAiBv3N,cAAcvM,EAAWgL,EAAkBM,KAAK6rI,iBAAiBn3I,IAAaiZ,EAAQ7C,IAGjKtc,KAAK+sO,uBAAuBC,EAAkB9mO,GAWzDsoO,gBAAgB5F,EAAgBoC,EAAY2B,GAGxC,GAAmB,eAAf3B,EAA6B,CAC7B,MAAMpkO,EAAS5G,KAAK6mK,KAAKqkE,eAAeF,EAAYpC,GAEpD,OADAA,EAAeM,kBAAkBzjO,KAAKmB,GAC/B5G,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU,CACxC7wI,KAAK6mK,KAAKmjE,iBAAiBj4N,cAAc62N,EAAeliO,QAAS1G,KAAK6mK,KAAKl6J,YAAYmnH,UAAU,mDAAoD9zH,KAAK6mK,KAAKqkE,eAAeF,EAAYpC,GAAiBA,EAAe/hO,QAC5N4X,OAAOkuN,GAAqB,OAI1CvtO,EAAQ6uO,4BAA8BA,gCC3OtC/uO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQooO,+BAA4B,EACpC,MAAM0H,EAAgC,EAAQ,OAI9C,MAAM1H,UAAkC0H,EAA8BjB,4BAClExuO,YAAYonK,EAAMviI,GACd3kC,MAAM,QAASknK,EAAMviI,GAEzBvkC,OAAOwsO,EAAW3D,GACd,OAAO5oO,KAAKmuO,iBAAiBvF,EAAgB2D,GAAW,IAGhEntO,EAAQooO,0BAA4BA,gCCdpCtoO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQkoO,wCAAqC,EAC7C,MAAM4H,EAAgC,EAAQ,OAI9C,MAAM5H,UAA2C4H,EAA8BjB,4BAC3ExuO,YAAYonK,EAAMviI,GACd3kC,MAAM,iBAAkBknK,EAAMviI,GAElCvkC,OAAOovO,EAAoBvG,GACvB,MAAMwG,EAAyBxG,EAC1BC,oBAAoBsG,EAAmBjsO,KAAK7D,OACjD,IAAK+vO,EACD,MAAM,IAAI5uO,MAAM,kCAAoC2uO,EAAmBjsO,KAAK7D,OAGhF,MAAMktO,EAAY,CACdntI,WAAOt9F,EACPib,eAAWjb,EACX+qO,WAAYuC,EAAuBvC,WACnCpD,KAAM,QACNvmO,KAAMisO,EAAmBjsO,KACzBipO,aAAciD,EAAuBjD,cAEnCQ,EAAoB,CACtB3sO,KAAK6mK,KAAK0kE,eAAe3C,EAAeliO,QAAS0oO,EAAuB5D,cAAe5C,IAE3F,OAAO5oO,KAAK6mK,KAAKmjE,iBAAiB13F,eAAetyI,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU,IAAK7wI,KAAKmuO,iBAAiBvF,EAAgB2D,GAAW,EAAOI,KAG3JvtO,EAAQkoO,mCAAqCA,gCC/B7CpoO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmoO,wCAAqC,EAC7C,MAAM2H,EAAgC,EAAQ,OAI9C,MAAM3H,UAA2C2H,EAA8BjB,4BAC3ExuO,YAAYonK,EAAMviI,GACd3kC,MAAM,iBAAkBknK,EAAMviI,GAElCvkC,OAAOsvO,EAAoBzG,GAEvB,MAAM2D,EAAY,CACdntI,WAAOt9F,EACPib,eAAWjb,EACX+qO,WAAYwC,EAAmBxC,WAC/BpD,KAAM,QACNvmO,KAAM,CAAEumO,KAAM,OAAQpqO,MAAOupO,EAAeliO,QAAQrH,OACpD8sO,aAAckD,EAAmBlD,cAE/BQ,EAAoB0C,EAAmB7D,cACvC,CAACxrO,KAAK6mK,KAAK0kE,eAAe3C,EAAeliO,QAAS2oO,EAAmB7D,cAAe5C,IAAmB,GAC7G,OAAO5oO,KAAK6mK,KAAKmjE,iBAAiB13F,eAAetyI,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU,IAAK7wI,KAAKmuO,iBAAiBvF,EAAgB2D,GAAW,EAAOI,KAG3JvtO,EAAQmoO,mCAAqCA,8BCzB7CroO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQkwO,iCAA8B,EAqCtClwO,EAAQkwO,4BAjCR,MACI7vO,YAAY0qO,EAAYtjE,EAAMviI,GAC1BtkC,KAAKmqO,WAAaA,EAClBnqO,KAAK6mK,KAAOA,EACZ7mK,KAAKskC,SAAWA,EAQpBirM,6BAA6B7E,EAAW9B,GACpC,MAAM19I,EAAMlrF,KAAK6mK,KAAKykE,YAAYZ,EAAU3tN,UAAW,MACvD,IAAKmuE,EACD,MAAM,IAAI1qF,MAAM,iBAAiBkqO,EAAUxnO,KAAK7D,oCAEpD,MAAMmwO,EAAWxvO,KAAK6mK,KAAKyjE,gBAAgBp/I,EAAI7rF,MAAO6rF,EAAIhoF,KAAK7D,MAAOupO,GACtE,GAA8B,IAA1B4G,EAASp3G,MAAMryH,OACf,MAAM,IAAIvF,MAAM,+BAA+BkqO,EAAUxnO,KAAK7D,sBAElE,OAAOmwO,EAASp3G,MAAM,GAO1Bq3G,oBAAoB/E,GAChB,MAAMgF,EAAW1vO,KAAK6mK,KAAKykE,YAAYZ,EAAU3tN,UAAW,SAC5D,OAAO2yN,GAAoC,cAAxBA,EAASrwO,MAAMoqO,MAAiD,QAAzBiG,EAASrwO,MAAMA,sCCnCjFH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgpO,iCAA8B,EACtC,MAAMuH,EAAgC,EAAQ,OAI9C,MAAMvH,UAAoCuH,EAA8BL,4BACpE7vO,YAAYonK,EAAMviI,GACd3kC,MAAM,UAAWknK,EAAMviI,GAE3BvkC,OAAO0qO,EAAkB7B,GACrB,MAAM77I,EAAM/sF,KAAKuvO,6BAA6B9E,EAAiBC,UAAW9B,GAC1E,MAAqB,YAAjB77I,EAAIjmF,UAAwC,UAAdimF,EAAI1tF,MAC3B,CAAEytO,QAAQ,GAEd,IAGf1tO,EAAQgpO,4BAA8BA,gCClBtClpO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQipO,kCAA+B,EACvC,MAAMsH,EAAgC,EAAQ,OAI9C,MAAMtH,UAAqCsH,EAA8BL,4BACrE7vO,YAAYonK,EAAMviI,GACd3kC,MAAM,WAAYknK,EAAMviI,GAE5BvkC,OAAO0qO,EAAkB7B,GACrB,MAAO,CACHsE,mBAAqBhnO,GAAclG,KAAK6mK,KAAKmjE,iBAAiB13F,eAAetyI,KAAK6mK,KAAKmjE,iBAAiBn5F,UAAU,IAAK3qI,KAInI9G,EAAQipO,6BAA+BA,gCChBvCnpO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQkpO,gCAA6B,EACrC,MAAMzB,EAAoB,EAAQ,OAC5B8I,EAAgC,EAAQ,OAI9C,MAAMrH,UAAmCqH,EAA8BL,4BACnE7vO,YAAYonK,EAAMviI,GACd3kC,MAAM,SAAUknK,EAAMviI,GAE1BvkC,OAAO0qO,EAAkB7B,GAMrB,OALI5oO,KAAKyvO,oBAAoBhF,EAAiBC,aAC1C9B,EAAeG,iBAAmBlC,EAAkBmC,iBAAiBC,eAGlEL,EAAer9N,qBAAqBvL,KAAK6mK,KAAKqkE,eAAeT,EAAiBO,WAAYpC,GAAgBvpO,OAC1G,IAGfD,EAAQkpO,2BAA6BA,gCCpBrCppO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmpO,gCAA6B,EACrC,MAAM1B,EAAoB,EAAQ,OAC5B8I,EAAgC,EAAQ,OAI9C,MAAMpH,UAAmCoH,EAA8BL,4BACnE7vO,YAAYonK,EAAMviI,GACd3kC,MAAM,SAAUknK,EAAMviI,GAE1BvkC,OAAO0qO,EAAkB7B,GAKrB,OAJI5oO,KAAKyvO,oBAAoBhF,EAAiBC,aAC1C9B,EAAeG,iBAAmBlC,EAAkBmC,iBAAiBsF,QAEzE1F,EAAer9N,qBAAqBvL,KAAK6mK,KAAKqkE,eAAeT,EAAiBO,WAAYpC,GAAgBvpO,QAAS,EAC5G,IAGfD,EAAQmpO,2BAA6BA,gCCnBrCrpO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQopO,8BAA2B,EACnC,MAAMmH,EAAgC,EAAQ,OAI9C,MAAMnH,UAAiCmH,EAA8BL,4BACjE7vO,YAAYonK,EAAMviI,GACd3kC,MAAM,OAAQknK,EAAMviI,GAExBvkC,OAAO0qO,EAAkB7B,GACrB,MAAM77I,EAAM/sF,KAAKuvO,6BAA6B9E,EAAiBC,UAAW9B,GAC1E,MAAqB,YAAjB77I,EAAIjmF,UAAwC,SAAdimF,EAAI1tF,MAC3B,CAAEytO,QAAQ,GAEd,IAGf1tO,EAAQopO,yBAA2BA,sCClBnC,IAAIhnO,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAkClD,GACvDkD,EAAa,EAAQ,OAAkClD,GACvDkD,EAAa,EAAQ,OAAmClD,GACxDkD,EAAa,EAAQ,OAAiClD,GACtDkD,EAAa,EAAQ,OAAiClD,GACtDkD,EAAa,EAAQ,OAA+BlD,uCChBpD,IAAIoC,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAoBlD,GACzCkD,EAAa,EAAQ,OAAgBlD,GACrCkD,EAAa,EAAQ,OAAyBlD,GAC9CkD,EAAa,EAAQ,OAAmClD,GACxDkD,EAAa,EAAQ,OAAoClD,GACzDkD,EAAa,EAAQ,OAAqClD,GAC1DkD,EAAa,EAAQ,MAA0BlD,GAC/CkD,EAAa,EAAQ,OAAkClD,GACvDkD,EAAa,EAAQ,OAAgClD,GACrDkD,EAAa,EAAQ,OAAyClD,GAC9DkD,EAAa,EAAQ,OAAyClD,+BCrB9DF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwwO,6BAA0B,EAWlCxwO,EAAQwwO,wBAPR,MACInwO,YAAY0qO,EAAYtjE,EAAMviI,GAC1BtkC,KAAKmqO,WAAaA,EAClBnqO,KAAK6mK,KAAOA,EACZ7mK,KAAKskC,SAAWA,kCCTxBplC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0oO,6BAA0B,EAClC,MAAM+H,EAA4B,EAAQ,OAI1C,MAAM/H,UAAgC+H,EAA0BD,wBAC5DnwO,YAAYonK,EAAMviI,GACd3kC,MAAM,eAAgBknK,EAAMviI,GAC5BtkC,KAAK20H,SAAW30H,KAAK6mK,KAAKl6J,YAAYmnH,UAAU,4CAEpD/zH,OAAO+vO,EAAWvF,EAAW3B,GACzB,MAAO,CAAExwG,MAAO,CAACp4H,KAAK6mK,KAAKl6J,YAAYsnH,QAAQ67G,EAAUzwO,MAAQ,OAAS,QAASW,KAAK20H,aAGhGv1H,EAAQ0oO,wBAA0BA,gCCflC5oO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4oO,0BAAuB,EAC/B,MAAM6H,EAA4B,EAAQ,OAI1C,MAAM7H,UAA6B6H,EAA0BD,wBACzDnwO,YAAYonK,EAAMviI,GACd3kC,MAAM,YAAaknK,EAAMviI,GAE7BvkC,OAAO+vO,EAAWvF,EAAW3B,GACzB,MAAO,CAAExwG,MAAO,CAACp4H,KAAK6mK,KAAKskE,iBAAiB2E,EAAUzwO,MAAOupO,EAAezoO,YAGpFf,EAAQ4oO,qBAAuBA,gCCd/B9oO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwoO,2BAAwB,EAChC,MAAMiI,EAA4B,EAAQ,OAI1C,MAAMjI,UAA8BiI,EAA0BD,wBAC1DnwO,YAAYonK,EAAMviI,GACd3kC,MAAM,aAAcknK,EAAMviI,GAC1BtkC,KAAK20H,SAAW30H,KAAK6mK,KAAKl6J,YAAYmnH,UAAU,0CAEpD/zH,OAAO+vO,EAAWvF,EAAW3B,GACzB,MAAO,CAAExwG,MAAO,CAACp4H,KAAK6mK,KAAKl6J,YAAYsnH,QAAQ67G,EAAUzwO,MAAOW,KAAK20H,aAG7Ev1H,EAAQwoO,sBAAwBA,gCCfhC1oO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQuoO,yBAAsB,EAC9B,MAAMkI,EAA4B,EAAQ,OAI1C,MAAMlI,UAA4BkI,EAA0BD,wBACxDnwO,YAAYonK,EAAMviI,GACd3kC,MAAM,WAAYknK,EAAMviI,GACxBtkC,KAAK20H,SAAW30H,KAAK6mK,KAAKl6J,YAAYmnH,UAAU,4CAEpD/zH,OAAO+vO,EAAWvF,EAAW3B,GACzB,MAAO,CAAExwG,MAAO,CAACp4H,KAAK6mK,KAAKl6J,YAAYsnH,QAAQ67G,EAAUzwO,MAAOW,KAAK20H,aAG7Ev1H,EAAQuoO,oBAAsBA,gCCf9BzoO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6oO,0BAAuB,EAC/B,MAAM4H,EAA4B,EAAQ,OAI1C,MAAM5H,UAA6B4H,EAA0BD,wBACzDnwO,YAAYonK,EAAMviI,GACd3kC,MAAM,YAAaknK,EAAMviI,GACzBtkC,KAAK+vO,UAAY/vO,KAAK6mK,KAAKl6J,YAAYmnH,UAAU,oDACjD9zH,KAAKgwO,SAAWhwO,KAAK6mK,KAAKl6J,YAAYmnH,UAAU,mDAChD9zH,KAAKiwO,QAAUjwO,KAAK6mK,KAAKl6J,YAAYmnH,UAAU,kDAEnD/zH,OAAO+vO,EAAWvF,EAAW3B,GACzB,MAAMsH,EAAY,GAClB,IAAIvD,EAAoB,GAExB,IAAK,MAAMhyM,KAAKm1M,EAAU/iO,OAAQ,CAC9B,MAAMyiO,EAAWxvO,KAAK6mK,KAAKyjE,gBAAgB3vM,EAAG4vM,EAAW3B,GACzD,IAAK,MAAMx3N,KAAQo+N,EAASp3G,MACxB83G,EAAUzqO,KAAK2L,GAEfo+N,EAAS7C,oBACTA,EAAoBA,EAAkBluN,OAAO+wN,EAAS7C,oBAG9D,GAAI3sO,KAAKskC,SAAS6rM,iBAAkB,CAGhC,MAAMC,EAAgBpwO,KAAK6mK,KAAKl6J,YAAYqnH,YAC5C,IAAIq8G,EAAWD,EACX5iJ,EAAY0iJ,EAAUnqO,OAC1B,IAAK,MAAMqL,KAAQ8+N,EAAW,CAC1BvD,EAAkBlnO,KAAKzF,KAAK6mK,KAAKmjE,iBAAiBj4N,cAAcs+N,EAAUrwO,KAAK+vO,UAAW3+N,EAAMw3N,EAAe/hO,QAC/G,MAAMypO,EAA+B,KAAd9iJ,EAAkBxtF,KAAKiwO,QAAUjwO,KAAK6mK,KAAKl6J,YAAYqnH,YAC9E24G,EAAkBlnO,KAAKzF,KAAK6mK,KAAKmjE,iBAAiBj4N,cAAcs+N,EAAUrwO,KAAKgwO,SAAUM,EAAc1H,EAAe/hO,QACtHwpO,EAAWC,EAEf,MAAO,CAAEl4G,MAAO,CAACg4G,GAAgBzD,kBAAAA,GAIjC,MAAO,CAAEv0G,MAAO83G,EAAWvD,kBAAAA,IAIvCvtO,EAAQ6oO,qBAAuBA,gCC9C/B/oO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2oO,0BAAuB,EAC/B,MAAM8H,EAA4B,EAAQ,OAI1C,MAAM9H,UAA6B8H,EAA0BD,wBACzDnwO,YAAYonK,EAAMviI,GACd3kC,MAAM,YAAaknK,EAAMviI,GACzBtkC,KAAKuwO,IAAMvwO,KAAK6mK,KAAKl6J,YAAYmnH,UAAU,kDAE/C/zH,OAAO+vO,EAAWvF,EAAW3B,GACzB,MAAO,CAAExwG,MAAO,CAACp4H,KAAKuwO,OAG9BnxO,EAAQ2oO,qBAAuBA,gCCf/B7oO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8oO,4BAAyB,EACjC,MAAM2H,EAA4B,EAAQ,OAI1C,MAAM3H,UAA+B2H,EAA0BD,wBAC3DnwO,YAAYonK,EAAMviI,GACd3kC,MAAM,cAAeknK,EAAMviI,GAE/BvkC,OAAO+vO,EAAWvF,EAAW3B,GAEzB,MAAMliO,EAAU1G,KAAK6mK,KAAKl6J,YAAYqnH,YACtC,IAAIw8G,EAA0B,GAC9B,IAAK,MAAMh3N,KAASs2N,EAAUW,OAAQ,CAClC,MAAMjB,EAAWxvO,KAAK6mK,KAAKyjE,gBAAgB9wN,EAAMna,MAAOkrO,EAAW3B,GACnE,IAAK,MAAMx3N,KAAQo+N,EAASp3G,MACxBo4G,EAAwB/qO,KAAKzF,KAAK6mK,KAAK4kE,kBAAkB/kO,EAAS8S,EAAMtW,KAAMkO,EAAMw3N,EAAe/hO,MAAO+hO,EAAezoO,UAEzHqvO,EAAS7C,oBACT6D,EAA0BA,EAAwB/xN,OAAO+wN,EAAS7C,oBAG1E,MAAO,CAAEv0G,MAAO,CAAC1xH,GAAUimO,kBAAmB6D,IAGtDpxO,EAAQ8oO,uBAAyBA,gCC1BjChpO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQyoO,4BAAyB,EACjC,MAAMgI,EAA4B,EAAQ,OAI1C,MAAMhI,UAA+BgI,EAA0BD,wBAC3DnwO,YAAYonK,EAAMviI,GACd3kC,MAAM,cAAeknK,EAAMviI,GAE/BvkC,OAAO+vO,EAAWvF,EAAW3B,GACzB,MAAM8H,EAAe9H,EAAezoO,QAAQwrO,gBAAgBpB,GAC5D,IAAIviO,EACA2sH,EASJ,OARI+7G,GAAwC,iBAAjBA,IACnBA,EAAa,aACb1oO,EAAW0oO,EAAa,aAEnBA,EAAa,WAClB/7G,EAAW30H,KAAK6mK,KAAKl6J,YAAYmnH,UAAU48G,EAAa,YAGzD,CAAEt4G,MAAO,CAACp4H,KAAK6mK,KAAKl6J,YAAYsnH,QAAQ67G,EAAUzwO,MAAO2I,GAAY2sH,MAGpFv1H,EAAQyoO,uBAAyBA,gCCzBjC3oO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQsoO,8BAA2B,EACnC,MAAMmI,EAA4B,EAAQ,OAI1C,MAAMnI,UAAiCmI,EAA0BD,wBAC7DnwO,YAAYonK,EAAMviI,GACd3kC,MAAM,WAAYknK,EAAMviI,GAE5BvkC,OAAO+vO,EAAWvF,EAAW3B,GACzB,MAAM/lM,EAAKitM,EAAU5sO,KAAK7D,MACpBA,EAAQupO,EAAeO,cAActmM,GACrC8/I,EAAOimD,EAAeQ,kBAAkBvmM,GAE9C,IAAKxjC,EAAO,CACR,GAAKupO,EAAekF,wBAA4BnrD,IAAQA,EAAK+qD,UAGxD,CACD,MAAMnnO,EAAWvG,KAAK6mK,KAAKl6J,YAAYpG,SAASs8B,GAIhD,OAHI+lM,EAAeM,kBAAkBljO,KAAK20B,GAAMA,EAAEt7B,QAAOyY,QAAQ+qB,GAAM,GACnE+lM,EAAeM,kBAAkBzjO,KAAKc,GAEnC,CAAE6xH,MAAO,CAAC7xH,IAPjB,MAAM,IAAI/F,MAAM,uBAAuBqiC,KAW/C,GAAmB,aAAfxjC,EAAMoqO,KACN,MAAM,IAAIjpO,MAAM,wCAAwCqiC,KAE5D,GAAI8/I,EAEA,GAAIA,EAAK1zF,KAAM,CAEX,GAAmB,cAAf5vF,EAAMoqO,KACN,MAAM,IAAIjpO,MAAM,4BAA4BnB,EAAMoqO,YAAY5mM,KAGlE,GAAI8/I,EAAKx8K,KAAM,CACX,MAAMwqO,EAAYtxO,EAClB,IAAK,MAAMs7B,KAAKg2M,EAAU5jO,OACtB,GAAI4tB,EAAE8uM,OAAS9mD,EAAKx8K,KAChB,MAAM,IAAI3F,MAAM,YAAYmiL,EAAKx8K,iBAAiBw0B,EAAE8uM,YAAY5mM,WAKvE8/I,EAAKx8K,KAOlB,OAAOnG,KAAK6mK,KAAKyjE,gBAAgBjrO,EAAOkrO,EAAW3B,IAG3DxpO,EAAQsoO,yBAA2BA,sCC1DnC,IAAIlmO,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA8BlD,GACnDkD,EAAa,EAAQ,OAA8BlD,GACnDkD,EAAa,EAAQ,OAA2BlD,GAChDkD,EAAa,EAAQ,OAA4BlD,GACjDkD,EAAa,EAAQ,OAA0BlD,GAC/CkD,EAAa,EAAQ,OAA2BlD,GAChDkD,EAAa,EAAQ,OAA2BlD,GAChDkD,EAAa,EAAQ,OAA6BlD,GAClDkD,EAAa,EAAQ,OAA6BlD,GAClDkD,EAAa,EAAQ,OAA+BlD,iCCnBpD,SAASuqK,EAAQztH,GAAmV,OAAtOytH,EAArD,mBAAXz8J,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiB+uC,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXhvC,QAAyBgvC,EAAIz8C,cAAgByN,QAAUgvC,IAAQhvC,OAAO1K,UAAY,gBAAkB05C,GAAiBytH,EAAQztH,GAEnXh9C,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQwxO,WAAaA,EACrBxxO,EAAQyxO,kBAAe,EAEvB,IAQgC30L,EAR5B40L,GAQ4B50L,EARW,EAAQ,SAQEA,EAAIj6C,WAAai6C,EAAM,CAAE3kB,QAAS2kB,GANnF60L,EAAW,EAAQ,OAEnBC,EAAY,EAAQ,OAEpBC,EAAiB,EAAQ,OAI7B,SAAS14I,EAAQ3xF,EAAQolI,GAAkB,IAAIp/H,EAAO1N,OAAO0N,KAAKhG,GAAS,GAAI1H,OAAOs5F,sBAAuB,CAAE,IAAIyzC,EAAU/sI,OAAOs5F,sBAAsB5xF,GAAaolI,IAAgBC,EAAUA,EAAQ3+H,QAAO,SAAU8kF,GAAO,OAAOlzF,OAAO8C,yBAAyB4E,EAAQwrF,GAAKhwF,eAAgBwK,EAAKnH,KAAK4a,MAAMzT,EAAMq/H,GAAY,OAAOr/H,EAI9U,SAASm+H,EAAgB7uF,EAAK/6C,EAAK9B,GAAiK,OAApJ8B,KAAO+6C,EAAOh9C,OAAOC,eAAe+8C,EAAK/6C,EAAK,CAAE9B,MAAOA,EAAO+C,YAAY,EAAMD,cAAc,EAAMD,UAAU,IAAkBg6C,EAAI/6C,GAAO9B,EAAgB68C,EAI3M,SAASgwF,EAAkBlhG,EAAQmhG,GAAS,IAAK,IAAIvzH,EAAI,EAAGA,EAAIuzH,EAAMpmI,OAAQ6S,IAAK,CAAE,IAAIonF,EAAamsC,EAAMvzH,GAAIonF,EAAW59F,WAAa49F,EAAW59F,aAAc,EAAO49F,EAAW79F,cAAe,EAAU,UAAW69F,IAAYA,EAAW99F,UAAW,GAAMhD,OAAOC,eAAe6rC,EAAQg1D,EAAW7+F,IAAK6+F,IAQ7S,SAASkxI,EAA2B/1N,EAAMzY,GAAQ,OAAIA,GAA2B,WAAlBinK,EAAQjnK,IAAsC,mBAATA,EAA8CyuO,EAAuBh2N,GAAtCzY,EAEnI,SAASyuO,EAAuBh2N,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI2pB,eAAe,6DAAgE,OAAO3pB,EAE/J,SAASi2N,EAAiBC,GAAS,IAAIxkI,EAAwB,mBAARhoG,IAAqB,IAAIA,SAAQ/C,EAA8nB,OAAnnBsvO,EAAmB,SAA0BC,GAAS,GAAc,OAAVA,IAMlIrkO,EANuKqkO,GAMjG,IAAzD/sK,SAASz2D,SAASnL,KAAKsK,GAAI8K,QAAQ,kBAN+H,OAAOu5N,EAMjN,IAA2BrkO,EAN6L,GAAqB,mBAAVqkO,EAAwB,MAAM,IAAInwN,UAAU,sDAAyD,QAAsB,IAAX2rF,EAAwB,CAAE,GAAIA,EAAO3kG,IAAImpO,GAAQ,OAAOxkI,EAAOxqG,IAAIgvO,GAAQxkI,EAAOtnG,IAAI8rO,EAAOC,GAAY,SAASA,IAAY,OAAOC,EAAWF,EAAOt0N,UAAWy0N,EAAgBxxO,MAAMP,aAAgK,OAAhJ6xO,EAAQ9uO,UAAYtD,OAAOuC,OAAO4vO,EAAM7uO,UAAW,CAAE/C,YAAa,CAAEJ,MAAOiyO,EAASlvO,YAAY,EAAOF,UAAU,EAAMC,cAAc,KAAkBsvO,EAAgBH,EAASD,IAAkBD,EAAiBC,GAE9uB,SAASE,EAAWG,EAAQhyO,EAAM2xO,GAAqV,OAAzSE,EAA/BI,IAA4Cv5I,QAAQw5I,UAAiC,SAAoBF,EAAQhyO,EAAM2xO,GAAS,IAAI7tN,EAAI,CAAC,MAAOA,EAAE/d,KAAK4a,MAAMmD,EAAG9jB,GAAO,IAAsD2sI,EAAW,IAA/C/nE,SAAS99C,KAAKnG,MAAMqxN,EAAQluN,IAA6F,OAAnD6tN,GAAOI,EAAgBplG,EAAUglG,EAAM7uO,WAAmB6pI,GAAsBklG,EAAWlxN,MAAM,KAAMtD,WAErZ,SAAS40N,IAA8B,GAAuB,oBAAZv5I,UAA4BA,QAAQw5I,UAAW,OAAO,EAAO,GAAIx5I,QAAQw5I,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAV9zI,MAAsB,OAAO,EAAM,IAAiF,OAA3Ev1F,KAAKhG,UAAUqL,SAASnL,KAAK01F,QAAQw5I,UAAUppO,KAAM,IAAI,iBAAyB,EAAQ,MAAOimB,GAAK,OAAO,GAI1T,SAASgjN,EAAgB/vO,EAAGa,GAA+G,OAA1GkvO,EAAkBvyO,OAAOgmC,gBAAkB,SAAyBxjC,EAAGa,GAAsB,OAAjBb,EAAEyjC,UAAY5iC,EAAUb,GAAa+vO,EAAgB/vO,EAAGa,GAErK,SAASivO,EAAgB9vO,GAAwJ,OAAnJ8vO,EAAkBtyO,OAAOgmC,eAAiBhmC,OAAOgf,eAAiB,SAAyBxc,GAAK,OAAOA,EAAEyjC,WAAajmC,OAAOgf,eAAexc,IAAc8vO,EAAgB9vO,GAQxM,IAAImvO,EAA4B,SAAUiB,IA1B1C,SAAmB3yG,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIl+G,UAAU,sDAAyDi+G,EAAS38H,UAAYtD,OAAOuC,OAAO29H,GAAcA,EAAW58H,UAAW,CAAE/C,YAAa,CAAEJ,MAAO8/H,EAAUj9H,UAAU,EAAMC,cAAc,KAAei9H,GAAYqyG,EAAgBtyG,EAAUC,GA2BjX2yG,CAAUlB,EAAciB,GAExB,IA3BoBE,EAAeC,EAJf3lG,EAAaE,EA+B7B+gE,GA3BgBykC,EA2BMnB,EA3BSoB,EAA4BN,IAAoC,WAAkC,IAAsCrqO,EAAlC4qO,EAAQV,EAAgBQ,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,EAAYX,EAAgBxxO,MAAMP,YAAa6H,EAAS8wF,QAAQw5I,UAAUM,EAAOn1N,UAAWo1N,QAAqB7qO,EAAS4qO,EAAM7xN,MAAMrgB,KAAM+c,WAAc,OAAOm0N,EAA2BlxO,KAAMsH,KAsE1Z,SAASupO,EAAan6N,EAAS4jG,EAAOplG,EAAQk9N,EAAW1gO,EAAM2gO,EAAe12F,GAC5E,IAAI22F,EAAgBC,EAAiBC,EAEjCzsG,GAjFR,SAAyBsG,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIprH,UAAU,qCAmF5GqrH,CAAgBvsI,KAAM6wO,IAEtB9qG,EAAQwnE,EAAO7qM,KAAK1C,KAAM0W,IACpBxT,KAAO,eACb6iI,EAAMssG,cAAgBA,MAAAA,EAAqDA,OAAgBvwO,EAE3FikI,EAAMzrB,MAAQm4H,EAAiB32N,MAAMC,QAAQu+F,GAASA,EAAQA,EAAQ,CAACA,QAASx4G,GAGhF,IAFA,IAAI4wO,EAAgB,GAEXptE,EAAM,EAAGqtE,EAAwC,QAA/BC,EAAc7sG,EAAMzrB,aAAmC,IAAhBs4H,EAAyBA,EAAc,GAAIttE,EAAMqtE,EAAM5sO,OAAQu/J,IAAO,CACtI,IAAIstE,EAGAj/E,EADQg/E,EAAMrtE,GACF3R,IAEL,MAAPA,GACF++E,EAAcjtO,KAAKkuJ,GAIvB++E,EAAgBD,EAAiBC,GAEjC3sG,EAAM7wH,OAASA,MAAAA,EAAuCA,EAA8C,QAApCo9N,EAAiBI,SAA8C,IAAnBJ,OAA4B,EAASA,EAAe,GAAGp9N,OACnK6wH,EAAMqsG,UAAYA,MAAAA,EAA6CA,EAAkD,QAArCG,EAAkBG,SAA+C,IAApBH,OAA6B,EAASA,EAAgBvsO,KAAI,SAAU2tJ,GAC3L,OAAOA,EAAIjrH,SAEbq9F,EAAM8sG,UAAYT,GAAal9N,EAASk9N,EAAUpsO,KAAI,SAAUkpF,GAC9D,OAAO,EAAI8hJ,EAAU8B,aAAa59N,EAAQg6E,MACD,QAArCsjJ,EAAkBE,SAA+C,IAApBF,OAA6B,EAASA,EAAgBxsO,KAAI,SAAU2tJ,GACrH,OAAO,EAAIq9E,EAAU8B,aAAan/E,EAAIz+I,OAAQy+I,EAAIjrH,UAEpDq9F,EAAMr0H,KAAOA,MAAAA,EAAmCA,OAAO5P,EACvD,IAAIixO,EAAqBV,MAAAA,OAAqD,EAASA,EAAc12F,WAwCrG,OAtCkB,MAAdA,IAAsB,EAAIm1F,EAAcv5M,SAASw7M,GACnDhtG,EAAM4V,WA1HZ,SAAuB3wG,GAAU,IAAK,IAAIpyB,EAAI,EAAGA,EAAImE,UAAUhX,OAAQ6S,IAAK,CAAE,IAAI1D,EAAyB,MAAhB6H,UAAUnE,GAAamE,UAAUnE,GAAK,GAAQA,EAAI,EAAK2/E,EAAQr5F,OAAOgW,IAAS,GAAMhU,SAAQ,SAAUC,GAAO4pI,EAAgB//F,EAAQ7pC,EAAK+T,EAAO/T,OAAsBjC,OAAO2tI,0BAA6B3tI,OAAO4tI,iBAAiB9hG,EAAQ9rC,OAAO2tI,0BAA0B33H,IAAmBqjF,EAAQr5F,OAAOgW,IAAShU,SAAQ,SAAUC,GAAOjC,OAAOC,eAAe6rC,EAAQ7pC,EAAKjC,OAAO8C,yBAAyBkT,EAAQ/T,OAAe,OAAO6pC,EA0Hpf+hG,CAAc,GAAIgmG,GAErChtG,EAAM4V,WAAaA,MAAAA,EAA+CA,EAAa,GAKjFz8I,OAAO4tI,iBAAiBqkG,EAAuBprG,GAAQ,CACrDrvH,QAAS,CACPtU,YAAY,GAEdywO,UAAW,CACTzwO,WAA+B,MAAnB2jI,EAAM8sG,WAEpBnhO,KAAM,CACJtP,WAA0B,MAAd2jI,EAAMr0H,MAEpBiqI,WAAY,CACVv5I,WAAgC,MAApB2jI,EAAM4V,YAAsBz8I,OAAO0N,KAAKm5H,EAAM4V,YAAY51I,OAAS,GAEjF7C,KAAM,CACJd,YAAY,GAEdk4G,MAAO,CACLl4G,YAAY,GAEd8S,OAAQ,CACN9S,YAAY,GAEdgwO,UAAW,CACThwO,YAAY,GAEdiwO,cAAe,CACbjwO,YAAY,KAIZiwO,MAAAA,GAAsDA,EAActrJ,OACtE7nF,OAAOC,eAAegyO,EAAuBprG,GAAQ,QAAS,CAC5D1mI,MAAOgzO,EAActrJ,MACrB7kF,UAAU,EACVC,cAAc,IAET+uO,EAA2BnrG,KAIhCvlI,MAAMkc,kBACRlc,MAAMkc,kBAAkBy0N,EAAuBprG,GAAQ8qG,GAEvD3xO,OAAOC,eAAegyO,EAAuBprG,GAAQ,QAAS,CAC5D1mI,MAAOmB,QAAQumF,MACf7kF,UAAU,EACVC,cAAc,IAIX4jI,GAiBT,OA5LoBuG,EA8KPukG,GA9KoBrkG,EA8KN,CAAC,CAC1BrrI,IAAK,WACL9B,MAAO,WACL,OAAOuxO,EAAW5wO,QAInB,CACDmB,IAAK4vO,EAASiC,qBACd3wO,IAAK,WACH,MAAO,cAxLiE6pI,EAAkBI,EAAY9pI,UAAWgqI,GA4L9GqkG,EAhKuB,CAiKhBO,EAAiB5wO,QAIjC,SAASiyO,EAAiBz2L,GACxB,YAAiBl6C,IAAVk6C,GAAwC,IAAjBA,EAAMj2C,YAAejE,EAAYk6C,EAQjE,SAAS40L,EAAW7kO,GAClB,IAAIrI,EAASqI,EAAM2K,QAEnB,GAAI3K,EAAMuuG,MACR,IAAK,IAAI24H,EAAM,EAAGC,EAAgBnnO,EAAMuuG,MAAO24H,EAAMC,EAAcntO,OAAQktO,IAAO,CAChF,IAAIhuO,EAAOiuO,EAAcD,GAErBhuO,EAAK0uJ,MACPjwJ,GAAU,QAAS,EAAIutO,EAAekC,eAAeluO,EAAK0uJ,WAGzD,GAAI5nJ,EAAMmJ,QAAUnJ,EAAM8mO,UAC/B,IAAK,IAAIO,EAAM,EAAGC,EAAoBtnO,EAAM8mO,UAAWO,EAAMC,EAAkBttO,OAAQqtO,IAAO,CAC5F,IAAIp7M,EAAWq7M,EAAkBD,GACjC1vO,GAAU,QAAS,EAAIutO,EAAeqC,qBAAqBvnO,EAAMmJ,OAAQ8iB,GAI7E,OAAOt0B,EA7BTtE,EAAQyxO,aAAeA,gCC3NvB3xO,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQm0O,YAQR,SAAqBr+N,EAAQy0B,EAAUtb,GACrC,OAAO,IAAImlN,EAAc3C,aAAa,iBAAiBpyN,OAAO4P,QAAcvsB,EAAWoT,EAAQ,CAACy0B,KAPlG,IAAI6pM,EAAgB,EAAQ,qCCL5Bt0O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAA,QAWA,SAAuBq0O,GACrB,IAAIzmO,EAAKymO,EAAYjxO,UAAUw/D,OACjB,mBAAPh1D,IAAqB,EAAI0mO,EAAWn8M,SAAS,GACpDk8M,EAAYjxO,UAAUoY,QAAU5N,EAE5B2mO,EAA2Bp8M,UAC7Bk8M,EAAYjxO,UAAUmxO,EAA2Bp8M,SAAWvqB,IAfhE,IAAI0mO,EAAaE,EAAuB,EAAQ,QAE5CD,EAA6BC,EAAuB,EAAQ,QAEhE,SAASA,EAAuB13L,GAAO,OAAOA,GAAOA,EAAIj6C,WAAai6C,EAAM,CAAE3kB,QAAS2kB,gCCTvFh9C,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAA,QAEA,SAAmB01G,EAAWp+F,GAG5B,IAFuBlE,QAAQsiG,GAG7B,MAAM,IAAIt0G,MAAMkW,kCCTpBxX,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAA,QAcA,SAAiBC,GACf,OAAO2gK,EAAY3gK,EAAO,KAb5B,IAEgC68C,EAF5By3L,GAE4Bz3L,EAFwB,EAAQ,SAEXA,EAAIj6C,WAAai6C,EAAM,CAAE3kB,QAAS2kB,GAEvF,SAASytH,EAAQztH,GAAmV,OAAtOytH,EAArD,mBAAXz8J,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiB+uC,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXhvC,QAAyBgvC,EAAIz8C,cAAgByN,QAAUgvC,IAAQhvC,OAAO1K,UAAY,gBAAkB05C,GAAiBytH,EAAQztH,GAYnX,SAAS8jH,EAAY3gK,EAAOw0O,GAC1B,OAAQlqE,EAAQtqK,IACd,IAAK,SACH,OAAO+M,KAAKC,UAAUhN,GAExB,IAAK,WACH,OAAOA,EAAM6D,KAAO,aAAaub,OAAOpf,EAAM6D,KAAM,KAAO,aAE7D,IAAK,SACH,OAAc,OAAV7D,EACK,OAUf,SAA2BA,EAAOy0O,GAChC,IAA6C,IAAzCA,EAAqBh8N,QAAQzY,GAC/B,MAAO,aAGT,IAAIw0O,EAAa,GAAGp1N,OAAOq1N,EAAsB,CAACz0O,IAC9C00O,EA2DN,SAAqBntO,GACnB,IAAImtO,EAAkBntO,EAAOuZ,OAAOwzN,EAA2Bp8M,UAE/D,MAA+B,mBAApBw8M,EACFA,EAGqB,mBAAnBntO,EAAOgU,QACThU,EAAOgU,aADhB,EAlEsBo5N,CAAY30O,GAElC,QAAwByC,IAApBiyO,EAA+B,CACjC,IAAIE,EAAcF,EAAgBrxO,KAAKrD,GAEvC,GAAI40O,IAAgB50O,EAClB,MAA8B,iBAAhB40O,EAA2BA,EAAcj0E,EAAYi0E,EAAaJ,QAE7E,GAAI/3N,MAAMC,QAAQ1c,GACvB,OAwBJ,SAAqB28C,EAAO63L,GAC1B,GAAqB,IAAjB73L,EAAMj2C,OACR,MAAO,KAGT,GAAI8tO,EAAW9tO,OAzES,EA0EtB,MAAO,UAOT,IAJA,IAAI2d,EAAMnE,KAAK6vB,IA9EM,GA8EgB4M,EAAMj2C,QACvCynF,EAAYxxC,EAAMj2C,OAAS2d,EAC3BoxE,EAAQ,GAEHl8E,EAAI,EAAGA,EAAI8K,IAAO9K,EACzBk8E,EAAMrvF,KAAKu6J,EAAYhkH,EAAMpjC,GAAIi7N,IASnC,OANkB,IAAdrmJ,EACFsH,EAAMrvF,KAAK,mBACF+nF,EAAY,GACrBsH,EAAMrvF,KAAK,OAAOgZ,OAAO+uE,EAAW,gBAG/B,IAAMsH,EAAMt0E,KAAK,MAAQ,IA/CvBygJ,CAAY5hK,EAAOw0O,GAG5B,OAGF,SAAsBjtO,EAAQitO,GAC5B,IAAIjnO,EAAO1N,OAAO0N,KAAKhG,GAEvB,OAAoB,IAAhBgG,EAAK7G,OACA,KAGL8tO,EAAW9tO,OAzDS,EA0Df,IAgDX,SAAsBa,GACpB,IAAI+b,EAAMzjB,OAAOsD,UAAUqL,SAASnL,KAAKkE,GAAQ6Z,QAAQ,aAAc,IAAIA,QAAQ,KAAM,IAEzF,GAAY,WAARkC,GAAkD,mBAAvB/b,EAAOnH,YAA4B,CAChE,IAAIyD,EAAO0D,EAAOnH,YAAYyD,KAE9B,GAAoB,iBAATA,GAA8B,KAATA,EAC9B,OAAOA,EAIX,OAAOyf,EA3DQuxN,CAAattO,GAAU,IAO/B,KAJUgG,EAAK5G,KAAI,SAAU7E,GAElC,OAAOA,EAAM,KADD6+J,EAAYp5J,EAAOzF,GAAM0yO,MAGdrzN,KAAK,MAAQ,KAlB/B2zN,CAAa90O,EAAOw0O,GAzBhBO,CAAkB/0O,EAAOw0O,GAElC,QACE,OAAO1zN,OAAO9gB,mCChCpB,IAEgC68C,EAPhCh9C,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAA,aAAkB,GAIc88C,EAFM,EAAQ,SAEOA,EAAIj6C,WAgCzD7C,EAAA,QAxBA,SAAoBC,EAAOI,GACzB,OAAOJ,aAAiBI,+BChB1BP,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAA,QAEA,SAAmB01G,EAAWp+F,GAG5B,IAFuBlE,QAAQsiG,GAG7B,MAAM,IAAIt0G,MAAiB,MAAXkW,EAAkBA,EAAU,gECJhD,SAASizJ,EAAQztH,GAAmV,OAAtOytH,EAArD,mBAAXz8J,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiB+uC,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXhvC,QAAyBgvC,EAAIz8C,cAAgByN,QAAUgvC,IAAQhvC,OAAO1K,UAAY,gBAAkB05C,GAAiBytH,EAAQztH,GALnXh9C,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAA,QAQA,SAAsBC,GACpB,MAAyB,UAAlBsqK,EAAQtqK,IAAgC,OAAVA,+BCZvCH,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAA,aAAkB,EAElB,IACIi1O,EAD8C,mBAAXnnO,QAA+C,mBAAfA,OAAOyI,IAAqBzI,OAAOyI,IAAI,mCAAgC7T,EAE9I1C,EAAA,QAAkBi1O,gCCPlBn1O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQk1O,OAyHR,SAAgBC,GACd,OAAoB,MAAbA,GAA+C,iBAAnBA,EAAU9K,MAzH/CrqO,EAAQo1O,MAAQp1O,EAAQq1O,cAAW,EAEnC,IAEgCv4L,EAF5Bw4L,GAE4Bx4L,EAFY,EAAQ,SAECA,EAAIj6C,WAAai6C,EAAM,CAAE3kB,QAAS2kB,GAMnFu4L,EAAwB,WAoB1B,SAASA,EAASE,EAAYC,EAAU1/N,GACtClV,KAAK0oC,MAAQisM,EAAWjsM,MACxB1oC,KAAK4qF,IAAMgqJ,EAAShqJ,IACpB5qF,KAAK20O,WAAaA,EAClB30O,KAAK40O,SAAWA,EAChB50O,KAAKkV,OAASA,EAYhB,OATau/N,EAASjyO,UAEfw/D,OAAS,WACd,MAAO,CACLt5B,MAAO1oC,KAAK0oC,MACZkiD,IAAK5qF,KAAK4qF,MAIP6pJ,EArCmB,GAyC5Br1O,EAAQq1O,SAAWA,GACnB,EAAIC,EAAen9M,SAASk9M,GAM5B,IAAID,EAAqB,WA8BvB,SAASA,EAAM/K,EAAM/gM,EAAOkiD,EAAK4M,EAAMq9I,EAAQh4H,EAAMx9G,GACnDW,KAAKypO,KAAOA,EACZzpO,KAAK0oC,MAAQA,EACb1oC,KAAK4qF,IAAMA,EACX5qF,KAAKw3F,KAAOA,EACZx3F,KAAK60O,OAASA,EACd70O,KAAKX,MAAQA,EACbW,KAAK68G,KAAOA,EACZ78G,KAAKy2C,KAAO,KAcd,OAXc+9L,EAAMhyO,UAEZw/D,OAAS,WACf,MAAO,CACLynK,KAAMzpO,KAAKypO,KACXpqO,MAAOW,KAAKX,MACZm4F,KAAMx3F,KAAKw3F,KACXq9I,OAAQ70O,KAAK60O,SAIVL,EApDgB,GAwDzBp1O,EAAQo1O,MAAQA,GAChB,EAAIE,EAAen9M,SAASi9M,+BC3E5B,SAASM,EAAQxhN,GACf,IAAK,IAAI1a,EAAI,EAAGA,EAAI0a,EAAIvtB,SAAU6S,EAChC,GAAe,MAAX0a,EAAI1a,IAAyB,OAAX0a,EAAI1a,GACxB,OAAO,EAIX,OAAO,EAOT,SAASm8N,EAA0B11O,GAQjC,IAPA,IAAI21O,EAEAC,GAAc,EACdC,GAAc,EACdzrJ,EAAS,EACT0rJ,EAAe,KAEVv8N,EAAI,EAAGA,EAAIvZ,EAAM0G,SAAU6S,EAClC,OAAQvZ,EAAM2hB,WAAWpI,IACvB,KAAK,GAE6B,KAA5BvZ,EAAM2hB,WAAWpI,EAAI,MACrBA,EAKN,KAAK,GAEHq8N,GAAc,EACdC,GAAc,EACdzrJ,EAAS,EACT,MAEF,KAAK,EAEL,KAAK,KAEDA,EACF,MAEF,QACMyrJ,IAAgBD,IAAiC,OAAjBE,GAAyB1rJ,EAAS0rJ,KACpEA,EAAe1rJ,GAGjByrJ,GAAc,EAIpB,OAA0C,QAAlCF,EAAgBG,SAA4C,IAAlBH,EAA2BA,EAAgB,EAnG/F91O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQg2O,uBAYR,SAAgCC,GAE9B,IAAIt/E,EAAQs/E,EAAUv0N,MAAM,gBAExBq0N,EAAeJ,EAA0BM,GAE7C,GAAqB,IAAjBF,EACF,IAAK,IAAIv8N,EAAI,EAAGA,EAAIm9I,EAAMhwJ,OAAQ6S,IAChCm9I,EAAMn9I,GAAKm9I,EAAMn9I,GAAGyK,MAAM8xN,GAO9B,IAFA,IAAIG,EAAY,EAETA,EAAYv/E,EAAMhwJ,QAAU+uO,EAAQ/+E,EAAMu/E,OAC7CA,EAKJ,IAFA,IAAIC,EAAUx/E,EAAMhwJ,OAEbwvO,EAAUD,GAAaR,EAAQ/+E,EAAMw/E,EAAU,OAClDA,EAIJ,OAAOx/E,EAAM1yI,MAAMiyN,EAAWC,GAAS/0N,KAAK,OArC9CphB,EAAQ21O,0BAA4BA,EACpC31O,EAAQo2O,iBAyGR,SAA0Bn2O,GACxB,IAAIo2O,EAAc14N,UAAUhX,OAAS,QAAsBjE,IAAjBib,UAAU,GAAmBA,UAAU,GAAK,GAClF24N,EAAsB34N,UAAUhX,OAAS,QAAsBjE,IAAjBib,UAAU,IAAmBA,UAAU,GACrF44N,GAAwC,IAAzBt2O,EAAMyY,QAAQ,MAC7B89N,EAA+B,MAAbv2O,EAAM,IAA2B,OAAbA,EAAM,GAC5Cw2O,EAA+C,MAA5Bx2O,EAAMA,EAAM0G,OAAS,GACxC+vO,EAA+C,OAA5Bz2O,EAAMA,EAAM0G,OAAS,GACxCgwO,GAAwBJ,GAAgBE,GAAoBC,GAAoBJ,EAChFpuO,EAAS,GAYb,OAVIyuO,GAA0BJ,GAAgBC,IAC5CtuO,GAAU,KAAOmuO,GAGnBnuO,GAAUmuO,EAAcp2O,EAAMohB,QAAQ,MAAO,KAAOg1N,GAAep2O,EAE/D02O,IACFzuO,GAAU,MAGL,MAAQA,EAAOmZ,QAAQ,OAAQ,SAAW,mCClInDvhB,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ42O,uBAAoB,EAK5B,IAAIA,EAAoB92O,OAAOmC,OAAO,CAEpC40O,MAAO,QACPC,SAAU,WACVC,aAAc,eACdC,MAAO,QACPC,oBAAqB,sBACrBC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,oBAAqB,sBAErBC,OAAQ,SACRC,OAAQ,SACRtmH,OAAQ,SACRumH,iBAAkB,mBAClBC,oBAAqB,sBACrBC,UAAW,YACX1iG,MAAO,QACP2iG,KAAM,OACNC,WAAY,aACZC,aAAc,eACdC,uBAAwB,2BAM1B73O,EAAQ42O,kBAAoBA,gCCnC5B92O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETH,OAAOC,eAAeC,EAAS,SAAU,CACvCgD,YAAY,EACZC,IAAK,WACH,OAAO60O,EAAQC,UAGnBj4O,OAAOC,eAAeC,EAAS,cAAe,CAC5CgD,YAAY,EACZC,IAAK,WACH,OAAO2uO,EAAU8B,eAGrB5zO,OAAOC,eAAeC,EAAS,gBAAiB,CAC9CgD,YAAY,EACZC,IAAK,WACH,OAAO4uO,EAAekC,iBAG1Bj0O,OAAOC,eAAeC,EAAS,sBAAuB,CACpDgD,YAAY,EACZC,IAAK,WACH,OAAO4uO,EAAeqC,uBAG1Bp0O,OAAOC,eAAeC,EAAS,OAAQ,CACrCgD,YAAY,EACZC,IAAK,WACH,OAAO+0O,EAAOC,QAGlBn4O,OAAOC,eAAeC,EAAS,YAAa,CAC1CgD,YAAY,EACZC,IAAK,WACH,OAAOi1O,EAAWC,aAGtBr4O,OAAOC,eAAeC,EAAS,QAAS,CACtCgD,YAAY,EACZC,IAAK,WACH,OAAOm1O,EAAOC,SAGlBv4O,OAAOC,eAAeC,EAAS,QAAS,CACtCgD,YAAY,EACZC,IAAK,WACH,OAAOorM,EAAQ1lL,SAGnB7oB,OAAOC,eAAeC,EAAS,aAAc,CAC3CgD,YAAY,EACZC,IAAK,WACH,OAAOorM,EAAQiqC,cAGnBx4O,OAAOC,eAAeC,EAAS,YAAa,CAC1CgD,YAAY,EACZC,IAAK,WACH,OAAOorM,EAAQkqC,aAGnBz4O,OAAOC,eAAeC,EAAS,QAAS,CACtCgD,YAAY,EACZC,IAAK,WACH,OAAOu1O,EAASC,SAGpB34O,OAAOC,eAAeC,EAAS,QAAS,CACtCgD,YAAY,EACZC,IAAK,WACH,OAAOy1O,EAASC,SAGpB74O,OAAOC,eAAeC,EAAS,kBAAmB,CAChDgD,YAAY,EACZC,IAAK,WACH,OAAOy1O,EAASE,mBAGpB94O,OAAOC,eAAeC,EAAS,aAAc,CAC3CgD,YAAY,EACZC,IAAK,WACH,OAAOy1O,EAASG,cAGpB/4O,OAAOC,eAAeC,EAAS,QAAS,CACtCgD,YAAY,EACZC,IAAK,WACH,OAAOy1O,EAASI,SAGpBh5O,OAAOC,eAAeC,EAAS,WAAY,CACzCgD,YAAY,EACZC,IAAK,WACH,OAAO81O,EAAK1D,YAGhBv1O,OAAOC,eAAeC,EAAS,QAAS,CACtCgD,YAAY,EACZC,IAAK,WACH,OAAO81O,EAAK3D,SAGhBt1O,OAAOC,eAAeC,EAAS,mBAAoB,CACjDgD,YAAY,EACZC,IAAK,WACH,OAAO+1O,EAAYC,oBAGvBn5O,OAAOC,eAAeC,EAAS,6BAA8B,CAC3DgD,YAAY,EACZC,IAAK,WACH,OAAO+1O,EAAYE,8BAGvBp5O,OAAOC,eAAeC,EAAS,kBAAmB,CAChDgD,YAAY,EACZC,IAAK,WACH,OAAO+1O,EAAYG,mBAGvBr5O,OAAOC,eAAeC,EAAS,cAAe,CAC5CgD,YAAY,EACZC,IAAK,WACH,OAAO+1O,EAAYI,eAGvBt5O,OAAOC,eAAeC,EAAS,aAAc,CAC3CgD,YAAY,EACZC,IAAK,WACH,OAAO+1O,EAAYK,cAGvBv5O,OAAOC,eAAeC,EAAS,6BAA8B,CAC3DgD,YAAY,EACZC,IAAK,WACH,OAAO+1O,EAAYM,8BAGvBx5O,OAAOC,eAAeC,EAAS,uBAAwB,CACrDgD,YAAY,EACZC,IAAK,WACH,OAAO+1O,EAAYO,wBAGvBz5O,OAAOC,eAAeC,EAAS,4BAA6B,CAC1DgD,YAAY,EACZC,IAAK,WACH,OAAO+1O,EAAYQ,6BAGvB15O,OAAOC,eAAeC,EAAS,sBAAuB,CACpDgD,YAAY,EACZC,IAAK,WACH,OAAO+1O,EAAYS,uBAGvB35O,OAAOC,eAAeC,EAAS,oBAAqB,CAClDgD,YAAY,EACZC,IAAK,WACH,OAAOy2O,EAAmB9C,qBAI9B,IAAIkB,EAAU,EAAQ,MAElBlG,EAAY,EAAQ,OAEpBC,EAAiB,EAAQ,OAEzBmG,EAAS,EAAQ,OAEjBE,EAAa,EAAQ,OAErBE,EAAS,EAAQ,MAEjB/pC,EAAU,EAAQ,OAElBmqC,EAAW,EAAQ,OAEnBE,EAAW,EAAQ,OAEnBK,EAAO,EAAQ,OAEfC,EAAc,EAAQ,OAEtBU,EAAqB,EAAQ,mCC5LjC55O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQi4O,UAAO,EAKf,IAAIA,EAAOn4O,OAAOmC,OAAO,CAEvB03O,KAAM,OAENC,SAAU,WACVC,qBAAsB,sBACtBzC,oBAAqB,qBACrB0C,cAAe,eACf9C,MAAO,QACP+C,SAAU,WAEV7C,gBAAiB,iBACjBC,gBAAiB,iBACjBF,oBAAqB,qBAErB+C,SAAU,WACVC,IAAK,WACLC,MAAO,aACP1qH,OAAQ,cACR2qH,QAAS,eACT5qH,KAAM,YACNmoH,KAAM,YACN0C,KAAM,YACNppH,OAAQ,cACRqpH,aAAc,cAEdC,UAAW,YAEXC,WAAY,YACZC,UAAW,WACXC,cAAe,cAEfC,kBAAmB,mBACnBC,0BAA2B,0BAE3BC,uBAAwB,uBACxBC,uBAAwB,uBACxBtD,iBAAkB,kBAClBuD,uBAAwB,uBACxBC,0BAA2B,0BAC3BC,sBAAuB,sBACvBC,qBAAsB,qBACtBC,sBAAuB,sBACvBC,6BAA8B,4BAE9BC,qBAAsB,sBAEtBC,iBAAkB,kBAElBC,sBAAuB,sBACvBC,sBAAuB,sBACvBC,yBAA0B,yBAC1BC,qBAAsB,qBACtBC,oBAAqB,oBACrBC,4BAA6B,6BAM/B37O,EAAQi4O,KAAOA,+BCpEfn4O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ47O,sBAqFR,SAA+BvR,GAC7B,OAAOA,IAAS6N,EAAWC,UAAU0D,MAAQxR,IAAS6N,EAAWC,UAAU2D,QAAUzR,IAAS6N,EAAWC,UAAU4D,KAAO1R,IAAS6N,EAAWC,UAAU6D,SAAW3R,IAAS6N,EAAWC,UAAU8D,SAAW5R,IAAS6N,EAAWC,UAAU+D,QAAU7R,IAAS6N,EAAWC,UAAUhpH,OAASk7G,IAAS6N,EAAWC,UAAUgE,QAAU9R,IAAS6N,EAAWC,UAAUiE,IAAM/R,IAAS6N,EAAWC,UAAUkE,WAAahS,IAAS6N,EAAWC,UAAUmE,WAAajS,IAAS6N,EAAWC,UAAUoE,SAAWlS,IAAS6N,EAAWC,UAAUqE,MAAQnS,IAAS6N,EAAWC,UAAUsE,SArF5iBz8O,EAAQq4O,WAAQ,EAEhB,IAAIqE,EAAe,EAAQ,OAEvB3D,EAAO,EAAQ,OAEfb,EAAa,EAAQ,OAErByE,EAAe,EAAQ,OAUvBtE,EAAqB,WAgBvB,SAASA,EAAMviO,GACb,IAAI8mO,EAAmB,IAAI7D,EAAK3D,MAAM8C,EAAWC,UAAU0E,IAAK,EAAG,EAAG,EAAG,EAAG,MAC5Ej8O,KAAKkV,OAASA,EACdlV,KAAKk8O,UAAYF,EACjBh8O,KAAKmuB,MAAQ6tN,EACbh8O,KAAKw3F,KAAO,EACZx3F,KAAKm8O,UAAY,EAOnB,IAAIC,EAAS3E,EAAMj1O,UA4BnB,OA1BA45O,EAAOC,QAAU,WAGf,OAFAr8O,KAAKk8O,UAAYl8O,KAAKmuB,MACVnuB,KAAKmuB,MAAQnuB,KAAKs8O,aAShCF,EAAOE,UAAY,WACjB,IAAInuN,EAAQnuB,KAAKmuB,MAEjB,GAAIA,EAAMs7M,OAAS6N,EAAWC,UAAU1kF,IACtC,EAAG,CACD,IAAI0pF,EAGJpuN,EAAuC,QAA9BouN,EAAcpuN,EAAMsoB,YAAkC,IAAhB8lM,EAAyBA,EAAcpuN,EAAMsoB,KAAO+lM,EAAUx8O,KAAMmuB,SAC5GA,EAAMs7M,OAAS6N,EAAWC,UAAUkF,SAG/C,OAAOtuN,GAGFspN,EAzDgB,GAsEzB,SAASiF,EAAcjgO,GACrB,OACEmkD,MAAMnkD,GAAQ66N,EAAWC,UAAU1kF,IACnCp2I,EAAO,IAASrQ,KAAKC,UAAU8T,OAAOC,aAAa3D,IACnD,OAAQgC,QAAQ,KAAOhC,EAAK5O,SAAS,IAAI8M,eAAe0I,OAAO,GAAI,KAYvE,SAASm5N,EAAU1pF,EAAOj2C,GAMxB,IALA,IAAI3nG,EAAS49I,EAAM59I,OACfrG,EAAOqG,EAAOrG,KACd8tO,EAAa9tO,EAAK9I,OAClBmpF,EAAM2tB,EAAKjyB,IAERsE,EAAMytJ,GAAY,CACvB,IAAIlgO,EAAO5N,EAAKmS,WAAWkuE,GACvB0tJ,EAAQ9pF,EAAMt7D,KAEdqlJ,EAAO,EAAI3tJ,EAAM4jE,EAAMqpF,UAG3B,OAAQ1/N,GACN,KAAK,MAEL,KAAK,EAEL,KAAK,GAEL,KAAK,KAEDyyE,EACF,SAEF,KAAK,KAEDA,IACA4jE,EAAMt7D,KACRs7D,EAAMqpF,UAAYjtJ,EAClB,SAEF,KAAK,GAE8B,KAA7BrgF,EAAKmS,WAAWkuE,EAAM,GACxBA,GAAO,IAELA,IAGF4jE,EAAMt7D,KACRs7D,EAAMqpF,UAAYjtJ,EAClB,SAEF,KAAK,GAEH,OAAO,IAAIipJ,EAAK3D,MAAM8C,EAAWC,UAAU0D,KAAM/rJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAE9E,KAAK,GAEH,OAAOigI,EAAY5nO,EAAQg6E,EAAK0tJ,EAAOC,EAAMhgI,GAE/C,KAAK,GAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAU2D,OAAQhsJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAEhF,KAAK,GAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAU4D,IAAKjsJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAE7E,KAAK,GAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAU6D,QAASlsJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAEjF,KAAK,GAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAU8D,QAASnsJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAEjF,KAAK,GAEH,GAAiC,KAA7BhuG,EAAKmS,WAAWkuE,EAAM,IAA0C,KAA7BrgF,EAAKmS,WAAWkuE,EAAM,GAC3D,OAAO,IAAIipJ,EAAK3D,MAAM8C,EAAWC,UAAU+D,OAAQpsJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAGhF,MAEF,KAAK,GAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAUhpH,MAAOr/B,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAE/E,KAAK,GAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAUgE,OAAQrsJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAEhF,KAAK,GAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAUiE,GAAItsJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAE5E,KAAK,GAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAUkE,UAAWvsJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAEnF,KAAK,GAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAUmE,UAAWxsJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAEnF,KAAK,IAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAUoE,QAASzsJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAEjF,KAAK,IAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAUqE,KAAM1sJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAE9E,KAAK,IAEH,OAAO,IAAIs7H,EAAK3D,MAAM8C,EAAWC,UAAUsE,QAAS3sJ,EAAKA,EAAM,EAAG0tJ,EAAOC,EAAMhgI,GAEjF,KAAK,GAEH,OAAiC,KAA7BhuG,EAAKmS,WAAWkuE,EAAM,IAA0C,KAA7BrgF,EAAKmS,WAAWkuE,EAAM,GACpD6tJ,EAAgB7nO,EAAQg6E,EAAK0tJ,EAAOC,EAAMhgI,EAAMi2C,GAGlDkqF,EAAW9nO,EAAQg6E,EAAK0tJ,EAAOC,EAAMhgI,GAE9C,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEH,OAAOogI,EAAW/nO,EAAQg6E,EAAKzyE,EAAMmgO,EAAOC,EAAMhgI,GAEpD,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEH,OAAOqgI,EAAShoO,EAAQg6E,EAAK0tJ,EAAOC,EAAMhgI,GAG9C,MAAM,EAAIi/H,EAAavI,aAAar+N,EAAQg6E,EAAKiuJ,EAA2B1gO,IAG9E,IAAI+6E,EAAOs7D,EAAMt7D,KACb4lJ,EAAM,EAAIluJ,EAAM4jE,EAAMqpF,UAC1B,OAAO,IAAIhE,EAAK3D,MAAM8C,EAAWC,UAAU1kF,IAAK8pF,EAAYA,EAAYnlJ,EAAM4lJ,EAAKvgI,GAOrF,SAASsgI,EAA2B1gO,GAClC,OAAIA,EAAO,IAAmB,IAATA,GAA4B,KAATA,GAA4B,KAATA,EAClD,wCAAwCgC,OAAOi+N,EAAcjgO,GAAO,KAGhE,KAATA,EAEK,kFAGF,yCAAyCgC,OAAOi+N,EAAcjgO,GAAO,KAS9E,SAASqgO,EAAY5nO,EAAQwzB,EAAO8uD,EAAM4lJ,EAAKvgI,GAC7C,IACIpgG,EADA5N,EAAOqG,EAAOrG,KAEd86B,EAAWjB,EAEf,GACEjsB,EAAO5N,EAAKmS,aAAa2oB,UACjBi3B,MAAMnkD,KAChBA,EAAO,IAAmB,IAATA,IAEjB,OAAO,IAAI07N,EAAK3D,MAAM8C,EAAWC,UAAUkF,QAAS/zM,EAAOiB,EAAU6tD,EAAM4lJ,EAAKvgI,EAAMhuG,EAAKwU,MAAMqlB,EAAQ,EAAGiB,IAW9G,SAASszM,EAAW/nO,EAAQwzB,EAAO20M,EAAW7lJ,EAAM4lJ,EAAKvgI,GACvD,IAAIhuG,EAAOqG,EAAOrG,KACd4N,EAAO4gO,EACP1zM,EAAWjB,EACX40M,GAAU,EAOd,GALa,KAAT7gO,IAEFA,EAAO5N,EAAKmS,aAAa2oB,IAGd,KAATltB,GAIF,IAFAA,EAAO5N,EAAKmS,aAAa2oB,KAEb,IAAMltB,GAAQ,GACxB,MAAM,EAAIq/N,EAAavI,aAAar+N,EAAQy0B,EAAU,6CAA6ClrB,OAAOi+N,EAAcjgO,GAAO,WAGjIktB,EAAW4zM,EAAWroO,EAAQy0B,EAAUltB,GACxCA,EAAO5N,EAAKmS,WAAW2oB,GA0BzB,GAvBa,KAATltB,IAEF6gO,GAAU,EACV7gO,EAAO5N,EAAKmS,aAAa2oB,GACzBA,EAAW4zM,EAAWroO,EAAQy0B,EAAUltB,GACxCA,EAAO5N,EAAKmS,WAAW2oB,IAGZ,KAATltB,GAAwB,MAATA,IAEjB6gO,GAAU,EAGG,MAFb7gO,EAAO5N,EAAKmS,aAAa2oB,KAEG,KAATltB,IAEjBA,EAAO5N,EAAKmS,aAAa2oB,IAG3BA,EAAW4zM,EAAWroO,EAAQy0B,EAAUltB,GACxCA,EAAO5N,EAAKmS,WAAW2oB,IAIZ,KAATltB,GAsON,SAAqBA,GACnB,OAAgB,KAATA,GAAeA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAvOrD+gO,CAAY/gO,GAC7B,MAAM,EAAIq/N,EAAavI,aAAar+N,EAAQy0B,EAAU,2CAA2ClrB,OAAOi+N,EAAcjgO,GAAO,MAG/H,OAAO,IAAI07N,EAAK3D,MAAM8I,EAAUhG,EAAWC,UAAU+B,MAAQhC,EAAWC,UAAU8B,IAAK3wM,EAAOiB,EAAU6tD,EAAM4lJ,EAAKvgI,EAAMhuG,EAAKwU,MAAMqlB,EAAOiB,IAO7I,SAAS4zM,EAAWroO,EAAQwzB,EAAO20M,GACjC,IAAIxuO,EAAOqG,EAAOrG,KACd86B,EAAWjB,EACXjsB,EAAO4gO,EAEX,GAAI5gO,GAAQ,IAAMA,GAAQ,GAAI,CAE5B,GACEA,EAAO5N,EAAKmS,aAAa2oB,SAClBltB,GAAQ,IAAMA,GAAQ,IAG/B,OAAOktB,EAGT,MAAM,EAAImyM,EAAavI,aAAar+N,EAAQy0B,EAAU,2CAA2ClrB,OAAOi+N,EAAcjgO,GAAO,MAS/H,SAASugO,EAAW9nO,EAAQwzB,EAAO8uD,EAAM4lJ,EAAKvgI,GAO5C,IANA,IAsJmBr5F,EAAGC,EAAG1C,EAAGoH,EAtJxBtZ,EAAOqG,EAAOrG,KACd86B,EAAWjB,EAAQ,EACnB+0M,EAAa9zM,EACbltB,EAAO,EACPpd,EAAQ,GAELsqC,EAAW96B,EAAK9I,SAAW66D,MAAMnkD,EAAO5N,EAAKmS,WAAW2oB,KACtD,KAATltB,GAA4B,KAATA,GAAiB,CAElC,GAAa,KAATA,EAEF,OADApd,GAASwP,EAAKwU,MAAMo6N,EAAY9zM,GACzB,IAAIwuM,EAAK3D,MAAM8C,EAAWC,UAAU3oH,OAAQlmF,EAAOiB,EAAW,EAAG6tD,EAAM4lJ,EAAKvgI,EAAMx9G,GAI3F,GAAIod,EAAO,IAAmB,IAATA,EACnB,MAAM,EAAIq/N,EAAavI,aAAar+N,EAAQy0B,EAAU,oCAAoClrB,OAAOi+N,EAAcjgO,GAAO,MAKxH,KAFEktB,EAEW,KAATltB,EAAa,CAKf,OAHApd,GAASwP,EAAKwU,MAAMo6N,EAAY9zM,EAAW,GAC3CltB,EAAO5N,EAAKmS,WAAW2oB,IAGrB,KAAK,GACHtqC,GAAS,IACT,MAEF,KAAK,GACHA,GAAS,IACT,MAEF,KAAK,GACHA,GAAS,KACT,MAEF,KAAK,GACHA,GAAS,KACT,MAEF,KAAK,IACHA,GAAS,KACT,MAEF,KAAK,IACHA,GAAS,KACT,MAEF,KAAK,IACHA,GAAS,KACT,MAEF,KAAK,IACHA,GAAS,KACT,MAEF,KAAK,IAGD,IAAI+1J,GAwFK5xI,EAxFkB3U,EAAKmS,WAAW2oB,EAAW,GAwF1ClmB,EAxF8C5U,EAAKmS,WAAW2oB,EAAW,GAwFtE5oB,EAxF0ElS,EAAKmS,WAAW2oB,EAAW,GAwFlGxhB,EAxFsGtZ,EAAKmS,WAAW2oB,EAAW,GAyFtJ+zM,EAASl6N,IAAM,GAAKk6N,EAASj6N,IAAM,EAAIi6N,EAAS38N,IAAM,EAAI28N,EAASv1N,IAvFhE,GAAIitI,EAAW,EAAG,CAChB,IAAIuoF,EAAkB9uO,EAAKwU,MAAMsmB,EAAW,EAAGA,EAAW,GAC1D,MAAM,EAAImyM,EAAavI,aAAar+N,EAAQy0B,EAAU,yCAAyClrB,OAAOk/N,EAAiB,MAGzHt+O,GAAS8gB,OAAOC,aAAag1I,GAC7BzrH,GAAY,EACZ,MAGJ,QACE,MAAM,EAAImyM,EAAavI,aAAar+N,EAAQy0B,EAAU,wCAAwClrB,OAAO0B,OAAOC,aAAa3D,GAAO,MAIpIghO,IADE9zM,GAKN,MAAM,EAAImyM,EAAavI,aAAar+N,EAAQy0B,EAAU,wBASxD,SAASozM,EAAgB7nO,EAAQwzB,EAAO8uD,EAAM4lJ,EAAKvgI,EAAMi2C,GAOvD,IANA,IAAIjkJ,EAAOqG,EAAOrG,KACd86B,EAAWjB,EAAQ,EACnB+0M,EAAa9zM,EACbltB,EAAO,EACP67I,EAAW,GAER3uH,EAAW96B,EAAK9I,SAAW66D,MAAMnkD,EAAO5N,EAAKmS,WAAW2oB,KAAY,CAEzE,GAAa,KAATltB,GAAiD,KAAlC5N,EAAKmS,WAAW2oB,EAAW,IAA+C,KAAlC96B,EAAKmS,WAAW2oB,EAAW,GAEpF,OADA2uH,GAAYzpJ,EAAKwU,MAAMo6N,EAAY9zM,GAC5B,IAAIwuM,EAAK3D,MAAM8C,EAAWC,UAAUqG,aAAcl1M,EAAOiB,EAAW,EAAG6tD,EAAM4lJ,EAAKvgI,GAAM,EAAIk/H,EAAa3G,wBAAwB98E,IAI1I,GAAI77I,EAAO,IAAmB,IAATA,GAA4B,KAATA,GAA4B,KAATA,EACzD,MAAM,EAAIq/N,EAAavI,aAAar+N,EAAQy0B,EAAU,oCAAoClrB,OAAOi+N,EAAcjgO,GAAO,MAG3G,KAATA,KAEAktB,IACAmpH,EAAMt7D,KACRs7D,EAAMqpF,UAAYxyM,GACA,KAATltB,GAE6B,KAAlC5N,EAAKmS,WAAW2oB,EAAW,GAC7BA,GAAY,IAEVA,IAGFmpH,EAAMt7D,KACRs7D,EAAMqpF,UAAYxyM,GAEX,KAATltB,GAAiD,KAAlC5N,EAAKmS,WAAW2oB,EAAW,IAA+C,KAAlC96B,EAAKmS,WAAW2oB,EAAW,IAA+C,KAAlC96B,EAAKmS,WAAW2oB,EAAW,IACxH2uH,GAAYzpJ,EAAKwU,MAAMo6N,EAAY9zM,GAAY,MAE/C8zM,EADA9zM,GAAY,KAGVA,EAIN,MAAM,EAAImyM,EAAavI,aAAar+N,EAAQy0B,EAAU,wBA2BxD,SAAS+zM,EAASl6N,GAChB,OAAOA,GAAK,IAAMA,GAAK,GAAKA,EAAI,GAC9BA,GAAK,IAAMA,GAAK,GAAKA,EAAI,GACzBA,GAAK,IAAMA,GAAK,IAAMA,EAAI,IACzB,EASL,SAAS05N,EAAShoO,EAAQwzB,EAAO8uD,EAAM4lJ,EAAKvgI,GAM1C,IALA,IAAIhuG,EAAOqG,EAAOrG,KACd8tO,EAAa9tO,EAAK9I,OAClB4jC,EAAWjB,EAAQ,EACnBjsB,EAAO,EAEJktB,IAAagzM,IAAe/7K,MAAMnkD,EAAO5N,EAAKmS,WAAW2oB,MAAwB,KAATltB,GAC/EA,GAAQ,IAAMA,GAAQ,IACtBA,GAAQ,IAAMA,GAAQ,IACtBA,GAAQ,IAAMA,GAAQ,QAElBktB,EAGJ,OAAO,IAAIwuM,EAAK3D,MAAM8C,EAAWC,UAAUwB,KAAMrwM,EAAOiB,EAAU6tD,EAAM4lJ,EAAKvgI,EAAMhuG,EAAKwU,MAAMqlB,EAAOiB,IAnlBvGvqC,EAAQq4O,MAAQA,8BCtFhBv4O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ0zO,YAUR,SAAqB59N,EAAQy0B,GAM3B,IALA,IAGI7gB,EAHA+0N,EAAa,eACbrmJ,EAAO,EACPq9I,EAASlrM,EAAW,GAGhB7gB,EAAQ+0N,EAAWrqN,KAAKte,EAAOrG,QAAUia,EAAM1nB,MAAQuoC,GAC7D6tD,GAAQ,EACRq9I,EAASlrM,EAAW,GAAK7gB,EAAM1nB,MAAQ0nB,EAAM,GAAG/iB,QAGlD,MAAO,CACLyxF,KAAMA,EACNq9I,OAAQA,kCC1BZ31O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ2oB,MAuBR,SAAe7S,EAAQ7D,GAErB,OADa,IAAI+2E,EAAOlzE,EAAQ7D,GAClBysO,iBAxBhB1+O,EAAQs4O,WAsCR,SAAoBxiO,EAAQ7D,GAC1B,IAAIm3E,EAAS,IAAIJ,EAAOlzE,EAAQ7D,GAChCm3E,EAAOu1J,YAAYzG,EAAWC,UAAU0E,KACxC,IAAI58O,EAAQmpF,EAAOw1J,mBAAkB,GAErC,OADAx1J,EAAOu1J,YAAYzG,EAAWC,UAAU1kF,KACjCxzJ,GA1CTD,EAAQu4O,UAwDR,SAAmBziO,EAAQ7D,GACzB,IAAIm3E,EAAS,IAAIJ,EAAOlzE,EAAQ7D,GAChCm3E,EAAOu1J,YAAYzG,EAAWC,UAAU0E,KACxC,IAAI91O,EAAOqiF,EAAOy1J,qBAElB,OADAz1J,EAAOu1J,YAAYzG,EAAWC,UAAU1kF,KACjC1sJ,GA5DT/G,EAAQgpF,YAAS,EAEjB,IAAI0zJ,EAAe,EAAQ,OAEvB1E,EAAS,EAAQ,OAEjBe,EAAO,EAAQ,OAEfb,EAAa,EAAQ,OAErBJ,EAAU,EAAQ,MAElB4B,EAAqB,EAAQ,OAE7BtB,EAAS,EAAQ,MA6DjBpvJ,EAAsB,WACxB,SAASA,EAAOlzE,EAAQ7D,GACtB,IAAI6sO,GAAY,EAAIhH,EAAQiH,UAAUjpO,GAAUA,EAAS,IAAIgiO,EAAQC,OAAOjiO,GAC5ElV,KAAKw3O,OAAS,IAAIA,EAAOC,MAAMyG,GAC/Bl+O,KAAKkvB,SAAW7d,EAOlB,IAAI+qO,EAASh0J,EAAO5lF,UA26CpB,OAz6CA45O,EAAOgC,UAAY,WACjB,IAAIjwN,EAAQnuB,KAAK+9O,YAAYzG,EAAWC,UAAUwB,MAClD,MAAO,CACLtP,KAAM2N,EAAOC,KAAK0B,KAClB15O,MAAO8uB,EAAM9uB,MACbs0J,IAAK3zJ,KAAK2zJ,IAAIxlI,KASlBiuN,EAAO0B,cAAgB,WACrB,IAAIp1M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxB,MAAO,CACLs7M,KAAM2N,EAAOC,KAAK2B,SAClBxP,YAAaxpO,KAAKq+O,KAAK/G,EAAWC,UAAU0E,IAAKj8O,KAAKs+O,gBAAiBhH,EAAWC,UAAU1kF,KAC5Fc,IAAK3zJ,KAAK2zJ,IAAIjrH,KAelB0zM,EAAOkC,gBAAkB,WACvB,GAAIt+O,KAAK4hH,KAAK01H,EAAWC,UAAUwB,MACjC,OAAQ/4O,KAAKw3O,OAAOrpN,MAAM9uB,OACxB,IAAK,QACL,IAAK,WACL,IAAK,eACH,OAAOW,KAAKu+O,2BAEd,IAAK,WACH,OAAOv+O,KAAKw+O,0BAEd,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,YACH,OAAOx+O,KAAKy+O,4BAEd,IAAK,SACH,OAAOz+O,KAAK0+O,+BAEX,IAAI1+O,KAAK4hH,KAAK01H,EAAWC,UAAUoE,SACxC,OAAO37O,KAAKu+O,2BACP,GAAIv+O,KAAK2+O,kBACd,OAAO3+O,KAAKy+O,4BAGd,MAAMz+O,KAAK4+O,cAUbxC,EAAOmC,yBAA2B,WAChC,IAAI71M,EAAQ1oC,KAAKw3O,OAAOrpN,MAExB,GAAInuB,KAAK4hH,KAAK01H,EAAWC,UAAUoE,SACjC,MAAO,CACLlS,KAAM2N,EAAOC,KAAK4B,qBAClB/yO,UAAW,QACXhD,UAAMpB,EACNyrO,oBAAqB,GACrBV,WAAY,GACZV,aAAcnsO,KAAK6+O,oBACnBlrF,IAAK3zJ,KAAK2zJ,IAAIjrH,IAIlB,IACIxlC,EADAgD,EAAYlG,KAAK8+O,qBAOrB,OAJI9+O,KAAK4hH,KAAK01H,EAAWC,UAAUwB,QACjC71O,EAAOlD,KAAKo+O,aAGP,CACL3U,KAAM2N,EAAOC,KAAK4B,qBAClB/yO,UAAWA,EACXhD,KAAMA,EACNqqO,oBAAqBvtO,KAAK++O,2BAC1BlS,WAAY7sO,KAAKg/O,iBAAgB,GACjC7S,aAAcnsO,KAAK6+O,oBACnBlrF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAQlB0zM,EAAO0C,mBAAqB,WAC1B,IAAIG,EAAiBj/O,KAAK+9O,YAAYzG,EAAWC,UAAUwB,MAE3D,OAAQkG,EAAe5/O,OACrB,IAAK,QACH,MAAO,QAET,IAAK,WACH,MAAO,WAET,IAAK,eACH,MAAO,eAGX,MAAMW,KAAK4+O,WAAWK,IAOxB7C,EAAO2C,yBAA2B,WAChC,OAAO/+O,KAAKk/O,aAAa5H,EAAWC,UAAU6D,QAASp7O,KAAKm/O,wBAAyB7H,EAAWC,UAAU8D,UAO5Ge,EAAO+C,wBAA0B,WAC/B,IAAIz2M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxB,MAAO,CACLs7M,KAAM2N,EAAOC,KAAKb,oBAClBjwO,SAAUvG,KAAKo/O,gBACfj5O,MAAOnG,KAAK+9O,YAAYzG,EAAWC,UAAUhpH,OAAQvuH,KAAKi+O,sBAC1Dl7B,aAAc/iN,KAAKq/O,oBAAoB/H,EAAWC,UAAUgE,QAAUv7O,KAAKg+O,mBAAkB,QAAQl8O,EACrG+qO,WAAY7sO,KAAKg/O,iBAAgB,GACjCrrF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAQlB0zM,EAAOgD,cAAgB,WACrB,IAAI12M,EAAQ1oC,KAAKw3O,OAAOrpN,MAExB,OADAnuB,KAAK+9O,YAAYzG,EAAWC,UAAU2D,QAC/B,CACLzR,KAAM2N,EAAOC,KAAK+B,SAClBl2O,KAAMlD,KAAKo+O,YACXzqF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAQlB0zM,EAAOyC,kBAAoB,WACzB,IAAIn2M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxB,MAAO,CACLs7M,KAAM2N,EAAOC,KAAK6B,cAClB5M,WAAYtsO,KAAKq+O,KAAK/G,EAAWC,UAAUoE,QAAS37O,KAAKs/O,eAAgBhI,EAAWC,UAAUsE,SAC9FloF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAWlB0zM,EAAOkD,eAAiB,WACtB,OAAOt/O,KAAK4hH,KAAK01H,EAAWC,UAAU+D,QAAUt7O,KAAKu/O,gBAAkBv/O,KAAKw/O,cAS9EpD,EAAOoD,WAAa,WAClB,IAEIpgJ,EACAl8F,EAHAwlC,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBsxN,EAAcz/O,KAAKo+O,YAWvB,OAPIp+O,KAAKq/O,oBAAoB/H,EAAWC,UAAUhpH,QAChDnvB,EAAQqgJ,EACRv8O,EAAOlD,KAAKo+O,aAEZl7O,EAAOu8O,EAGF,CACLhW,KAAM2N,EAAOC,KAAKjB,MAClBh3I,MAAOA,EACPl8F,KAAMA,EACN6Z,UAAW/c,KAAK0/O,gBAAe,GAC/B7S,WAAY7sO,KAAKg/O,iBAAgB,GACjC7S,aAAcnsO,KAAK4hH,KAAK01H,EAAWC,UAAUoE,SAAW37O,KAAK6+O,yBAAsB/8O,EACnF6xJ,IAAK3zJ,KAAK2zJ,IAAIjrH,KAQlB0zM,EAAOsD,eAAiB,SAAwBC,GAC9C,IAAIlhG,EAAOkhG,EAAU3/O,KAAK4/O,mBAAqB5/O,KAAK6/O,cACpD,OAAO7/O,KAAKk/O,aAAa5H,EAAWC,UAAU6D,QAAS38F,EAAM64F,EAAWC,UAAU8D,UAOpFe,EAAOyD,cAAgB,WACrB,IAAIn3M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBjrB,EAAOlD,KAAKo+O,YAEhB,OADAp+O,KAAK+9O,YAAYzG,EAAWC,UAAUhpH,OAC/B,CACLk7G,KAAM2N,EAAOC,KAAK8B,SAClBj2O,KAAMA,EACN7D,MAAOW,KAAKg+O,mBAAkB,GAC9BrqF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAIlB0zM,EAAOwD,mBAAqB,WAC1B,IAAIl3M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxB,MAAO,CACLs7M,KAAM2N,EAAOC,KAAK8B,SAClBj2O,KAAMlD,KAAKo+O,YACX/+O,OAAQW,KAAK+9O,YAAYzG,EAAWC,UAAUhpH,OAAQvuH,KAAKg+O,mBAAkB,IAC7ErqF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAalB0zM,EAAOmD,cAAgB,WACrB,IAAI72M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxBnuB,KAAK+9O,YAAYzG,EAAWC,UAAU+D,QACtC,IAAIwE,EAAmB9/O,KAAK+/O,sBAAsB,MAElD,OAAKD,GAAoB9/O,KAAK4hH,KAAK01H,EAAWC,UAAUwB,MAC/C,CACLtP,KAAM2N,EAAOC,KAAKf,gBAClBpzO,KAAMlD,KAAKggP,oBACXnT,WAAY7sO,KAAKg/O,iBAAgB,GACjCrrF,IAAK3zJ,KAAK2zJ,IAAIjrH,IAIX,CACL+gM,KAAM2N,EAAOC,KAAKd,gBAClB/K,cAAesU,EAAmB9/O,KAAKigP,sBAAmBn+O,EAC1D+qO,WAAY7sO,KAAKg/O,iBAAgB,GACjC7S,aAAcnsO,KAAK6+O,oBACnBlrF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAWlB0zM,EAAOoC,wBAA0B,WAC/B,IAAI0B,EAEAx3M,EAAQ1oC,KAAKw3O,OAAOrpN,MAKxB,OAJAnuB,KAAKmgP,cAAc,aAIsH,KAA/F,QAApCD,EAAiBlgP,KAAKkvB,gBAAyC,IAAnBgxN,OAA4B,EAASA,EAAeE,+BAC7F,CACL3W,KAAM2N,EAAOC,KAAKhB,oBAClBnzO,KAAMlD,KAAKggP,oBACXzS,oBAAqBvtO,KAAK++O,2BAC1BvT,eAAgBxrO,KAAKmgP,cAAc,MAAOngP,KAAKigP,kBAC/CpT,WAAY7sO,KAAKg/O,iBAAgB,GACjC7S,aAAcnsO,KAAK6+O,oBACnBlrF,IAAK3zJ,KAAK2zJ,IAAIjrH,IAIX,CACL+gM,KAAM2N,EAAOC,KAAKhB,oBAClBnzO,KAAMlD,KAAKggP,oBACXxU,eAAgBxrO,KAAKmgP,cAAc,MAAOngP,KAAKigP,kBAC/CpT,WAAY7sO,KAAKg/O,iBAAgB,GACjC7S,aAAcnsO,KAAK6+O,oBACnBlrF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAQlB0zM,EAAO4D,kBAAoB,WACzB,GAAgC,OAA5BhgP,KAAKw3O,OAAOrpN,MAAM9uB,MACpB,MAAMW,KAAK4+O,aAGb,OAAO5+O,KAAKo+O,aAuBdhC,EAAO4B,kBAAoB,SAA2B2B,GACpD,IAAIxxN,EAAQnuB,KAAKw3O,OAAOrpN,MAExB,OAAQA,EAAMs7M,MACZ,KAAK6N,EAAWC,UAAUkE,UACxB,OAAOz7O,KAAKqgP,UAAUV,GAExB,KAAKrI,EAAWC,UAAUoE,QACxB,OAAO37O,KAAKsgP,YAAYX,GAE1B,KAAKrI,EAAWC,UAAU8B,IAGxB,OAFAr5O,KAAKw3O,OAAO6E,UAEL,CACL5S,KAAM2N,EAAOC,KAAKgC,IAClBh6O,MAAO8uB,EAAM9uB,MACbs0J,IAAK3zJ,KAAK2zJ,IAAIxlI,IAGlB,KAAKmpN,EAAWC,UAAU+B,MAGxB,OAFAt5O,KAAKw3O,OAAO6E,UAEL,CACL5S,KAAM2N,EAAOC,KAAKiC,MAClBj6O,MAAO8uB,EAAM9uB,MACbs0J,IAAK3zJ,KAAK2zJ,IAAIxlI,IAGlB,KAAKmpN,EAAWC,UAAU3oH,OAC1B,KAAK0oH,EAAWC,UAAUqG,aACxB,OAAO59O,KAAKugP,qBAEd,KAAKjJ,EAAWC,UAAUwB,KAGxB,OAFA/4O,KAAKw3O,OAAO6E,UAEJluN,EAAM9uB,OACZ,IAAK,OACH,MAAO,CACLoqO,KAAM2N,EAAOC,KAAKkC,QAClBl6O,OAAO,EACPs0J,IAAK3zJ,KAAK2zJ,IAAIxlI,IAGlB,IAAK,QACH,MAAO,CACLs7M,KAAM2N,EAAOC,KAAKkC,QAClBl6O,OAAO,EACPs0J,IAAK3zJ,KAAK2zJ,IAAIxlI,IAGlB,IAAK,OACH,MAAO,CACLs7M,KAAM2N,EAAOC,KAAK1oH,KAClBglC,IAAK3zJ,KAAK2zJ,IAAIxlI,IAGlB,QACE,MAAO,CACLs7M,KAAM2N,EAAOC,KAAKP,KAClBz3O,MAAO8uB,EAAM9uB,MACbs0J,IAAK3zJ,KAAK2zJ,IAAIxlI,IAItB,KAAKmpN,EAAWC,UAAU2D,OACxB,IAAKyE,EACH,OAAO3/O,KAAKo/O,gBAMlB,MAAMp/O,KAAK4+O,cAGbxC,EAAOmE,mBAAqB,WAC1B,IAAIpyN,EAAQnuB,KAAKw3O,OAAOrpN,MAIxB,OAFAnuB,KAAKw3O,OAAO6E,UAEL,CACL5S,KAAM2N,EAAOC,KAAKzoH,OAClBvvH,MAAO8uB,EAAM9uB,MACbmhP,MAAOryN,EAAMs7M,OAAS6N,EAAWC,UAAUqG,aAC3CjqF,IAAK3zJ,KAAK2zJ,IAAIxlI,KAUlBiuN,EAAOiE,UAAY,SAAmBV,GACpC,IAAI55G,EAAQ/lI,KAER0oC,EAAQ1oC,KAAKw3O,OAAOrpN,MAMxB,MAAO,CACLs7M,KAAM2N,EAAOC,KAAKmC,KAClBzsO,OAAQ/M,KAAKygP,IAAInJ,EAAWC,UAAUkE,WAN7B,WACT,OAAO11G,EAAMi4G,kBAAkB2B,KAKwBrI,EAAWC,UAAUmE,WAC5E/nF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAUlB0zM,EAAOkE,YAAc,SAAqBX,GACxC,IAAI7zG,EAAS9rI,KAET0oC,EAAQ1oC,KAAKw3O,OAAOrpN,MAMxB,MAAO,CACLs7M,KAAM2N,EAAOC,KAAKjnH,OAClBqgH,OAAQzwO,KAAKygP,IAAInJ,EAAWC,UAAUoE,SAN7B,WACT,OAAO7vG,EAAO40G,iBAAiBf,KAKsBrI,EAAWC,UAAUsE,SAC1EloF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAQlB0zM,EAAOsE,iBAAmB,SAA0Bf,GAClD,IAAIj3M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBjrB,EAAOlD,KAAKo+O,YAEhB,OADAp+O,KAAK+9O,YAAYzG,EAAWC,UAAUhpH,OAC/B,CACLk7G,KAAM2N,EAAOC,KAAKoC,aAClBv2O,KAAMA,EACN7D,MAAOW,KAAKg+O,kBAAkB2B,GAC9BhsF,IAAK3zJ,KAAK2zJ,IAAIjrH,KASlB0zM,EAAO4C,gBAAkB,SAAyBW,GAGhD,IAFA,IAAI9S,EAAa,GAEV7sO,KAAK4hH,KAAK01H,EAAWC,UAAUiE,KACpC3O,EAAWpnO,KAAKzF,KAAK2gP,eAAehB,IAGtC,OAAO9S,GAOTuP,EAAOuE,eAAiB,SAAwBhB,GAC9C,IAAIj3M,EAAQ1oC,KAAKw3O,OAAOrpN,MAExB,OADAnuB,KAAK+9O,YAAYzG,EAAWC,UAAUiE,IAC/B,CACL/R,KAAM2N,EAAOC,KAAKqC,UAClBx2O,KAAMlD,KAAKo+O,YACXrhO,UAAW/c,KAAK0/O,eAAeC,GAC/BhsF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAYlB0zM,EAAO6B,mBAAqB,WAC1B,IACI93O,EADAuiC,EAAQ1oC,KAAKw3O,OAAOrpN,MAexB,OAZInuB,KAAKq/O,oBAAoB/H,EAAWC,UAAUkE,YAChDt1O,EAAOnG,KAAKi+O,qBACZj+O,KAAK+9O,YAAYzG,EAAWC,UAAUmE,WACtCv1O,EAAO,CACLsjO,KAAM2N,EAAOC,KAAKuC,UAClBzzO,KAAMA,EACNwtJ,IAAK3zJ,KAAK2zJ,IAAIjrH,KAGhBviC,EAAOnG,KAAKigP,iBAGVjgP,KAAKq/O,oBAAoB/H,EAAWC,UAAU0D,MACzC,CACLxR,KAAM2N,EAAOC,KAAKwC,cAClB1zO,KAAMA,EACNwtJ,IAAK3zJ,KAAK2zJ,IAAIjrH,IAIXviC,GAOTi2O,EAAO6D,eAAiB,WACtB,IAAIv3M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxB,MAAO,CACLs7M,KAAM2N,EAAOC,KAAKsC,WAClBz2O,KAAMlD,KAAKo+O,YACXzqF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAoBlB0zM,EAAOqC,0BAA4B,WAEjC,IAAImC,EAAe5gP,KAAK2+O,kBAAoB3+O,KAAKw3O,OAAO8E,YAAct8O,KAAKw3O,OAAOrpN,MAElF,GAAIyyN,EAAanX,OAAS6N,EAAWC,UAAUwB,KAC7C,OAAQ6H,EAAavhP,OACnB,IAAK,SACH,OAAOW,KAAK6gP,wBAEd,IAAK,SACH,OAAO7gP,KAAK8gP,4BAEd,IAAK,OACH,OAAO9gP,KAAK+gP,4BAEd,IAAK,YACH,OAAO/gP,KAAKghP,+BAEd,IAAK,QACH,OAAOhhP,KAAKihP,2BAEd,IAAK,OACH,OAAOjhP,KAAKkhP,0BAEd,IAAK,QACH,OAAOlhP,KAAKmhP,iCAEd,IAAK,YACH,OAAOnhP,KAAKohP,2BAIlB,MAAMphP,KAAK4+O,WAAWgC,IAGxBxE,EAAOuC,gBAAkB,WACvB,OAAO3+O,KAAK4hH,KAAK01H,EAAWC,UAAU3oH,SAAW5uH,KAAK4hH,KAAK01H,EAAWC,UAAUqG,eAOlFxB,EAAOiF,iBAAmB,WACxB,GAAIrhP,KAAK2+O,kBACP,OAAO3+O,KAAKugP,sBAQhBnE,EAAOyE,sBAAwB,WAC7B,IAAIn4M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBE,EAAcruB,KAAKqhP,mBACvBrhP,KAAKmgP,cAAc,UACnB,IAAItT,EAAa7sO,KAAKg/O,iBAAgB,GAClCsC,EAAiBthP,KAAKq+O,KAAK/G,EAAWC,UAAUoE,QAAS37O,KAAKuhP,6BAA8BjK,EAAWC,UAAUsE,SACrH,MAAO,CACLpS,KAAM2N,EAAOC,KAAKyC,kBAClBzrN,YAAaA,EACbw+M,WAAYA,EACZyU,eAAgBA,EAChB3tF,IAAK3zJ,KAAK2zJ,IAAIjrH,KAQlB0zM,EAAOmF,6BAA+B,WACpC,IAAI74M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBjoB,EAAYlG,KAAK8+O,qBACrB9+O,KAAK+9O,YAAYzG,EAAWC,UAAUhpH,OACtC,IAAIpoH,EAAOnG,KAAKigP,iBAChB,MAAO,CACLxW,KAAM2N,EAAOC,KAAK0C,0BAClB7zO,UAAWA,EACXC,KAAMA,EACNwtJ,IAAK3zJ,KAAK2zJ,IAAIjrH,KAQlB0zM,EAAO0E,0BAA4B,WACjC,IAAIp4M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBE,EAAcruB,KAAKqhP,mBACvBrhP,KAAKmgP,cAAc,UACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZvR,EAAa7sO,KAAKg/O,iBAAgB,GACtC,MAAO,CACLvV,KAAM2N,EAAOC,KAAK2C,uBAClB3rN,YAAaA,EACbnrB,KAAMA,EACN2pO,WAAYA,EACZl5E,IAAK3zJ,KAAK2zJ,IAAIjrH,KAUlB0zM,EAAO2E,0BAA4B,WACjC,IAAIr4M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBE,EAAcruB,KAAKqhP,mBACvBrhP,KAAKmgP,cAAc,QACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZz3E,EAAa3mK,KAAKwhP,4BAClB3U,EAAa7sO,KAAKg/O,iBAAgB,GAClCvO,EAASzwO,KAAKyhP,wBAClB,MAAO,CACLhY,KAAM2N,EAAOC,KAAK4C,uBAClB5rN,YAAaA,EACbnrB,KAAMA,EACNyjK,WAAYA,EACZkmE,WAAYA,EACZ4D,OAAQA,EACR98E,IAAK3zJ,KAAK2zJ,IAAIjrH,KAUlB0zM,EAAOoF,0BAA4B,WACjC,IAAIE,EAEJ,IAAK1hP,KAAK+/O,sBAAsB,cAC9B,MAAO,GAGT,IAAiJ,KAAtG,QAArC2B,EAAkB1hP,KAAKkvB,gBAA0C,IAApBwyN,OAA6B,EAASA,EAAgBC,oCAA8C,CACrJ,IAAIt/N,EAAQ,GAEZriB,KAAKq/O,oBAAoB/H,EAAWC,UAAU4D,KAE9C,GACE94N,EAAM5c,KAAKzF,KAAKigP,wBACTjgP,KAAKq/O,oBAAoB/H,EAAWC,UAAU4D,MAAQn7O,KAAK4hH,KAAK01H,EAAWC,UAAUwB,OAE9F,OAAO12N,EAGT,OAAOriB,KAAK4hP,cAActK,EAAWC,UAAU4D,IAAKn7O,KAAKigP,iBAO3D7D,EAAOqF,sBAAwB,WAC7B,IAAII,EAGJ,OAAwI,KAA7F,QAArCA,EAAkB7hP,KAAKkvB,gBAA0C,IAApB2yN,OAA6B,EAASA,EAAgBC,4BAAuC9hP,KAAK4hH,KAAK01H,EAAWC,UAAUoE,UAAY37O,KAAKw3O,OAAO8E,YAAY7S,OAAS6N,EAAWC,UAAUsE,SAC/O77O,KAAKw3O,OAAO6E,UAEZr8O,KAAKw3O,OAAO6E,UAEL,IAGFr8O,KAAKk/O,aAAa5H,EAAWC,UAAUoE,QAAS37O,KAAK+hP,qBAAsBzK,EAAWC,UAAUsE,UAQzGO,EAAO2F,qBAAuB,WAC5B,IAAIr5M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBE,EAAcruB,KAAKqhP,mBACnBn+O,EAAOlD,KAAKo+O,YACZ1+O,EAAOM,KAAKgiP,oBAChBhiP,KAAK+9O,YAAYzG,EAAWC,UAAUhpH,OACtC,IAAIpoH,EAAOnG,KAAKi+O,qBACZpR,EAAa7sO,KAAKg/O,iBAAgB,GACtC,MAAO,CACLvV,KAAM2N,EAAOC,KAAKV,iBAClBtoN,YAAaA,EACbnrB,KAAMA,EACN6Z,UAAWrd,EACXyG,KAAMA,EACN0mO,WAAYA,EACZl5E,IAAK3zJ,KAAK2zJ,IAAIjrH,KAQlB0zM,EAAO4F,kBAAoB,WACzB,OAAOhiP,KAAKk/O,aAAa5H,EAAWC,UAAU6D,QAASp7O,KAAKiiP,mBAAoB3K,EAAWC,UAAU8D,UAQvGe,EAAO6F,mBAAqB,WAC1B,IAAIv5M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBE,EAAcruB,KAAKqhP,mBACnBn+O,EAAOlD,KAAKo+O,YAChBp+O,KAAK+9O,YAAYzG,EAAWC,UAAUhpH,OACtC,IACIw0F,EADA58M,EAAOnG,KAAKi+O,qBAGZj+O,KAAKq/O,oBAAoB/H,EAAWC,UAAUgE,UAChDx4B,EAAe/iN,KAAKg+O,mBAAkB,IAGxC,IAAInR,EAAa7sO,KAAKg/O,iBAAgB,GACtC,MAAO,CACLvV,KAAM2N,EAAOC,KAAK6C,uBAClB7rN,YAAaA,EACbnrB,KAAMA,EACNiD,KAAMA,EACN48M,aAAcA,EACd8pB,WAAYA,EACZl5E,IAAK3zJ,KAAK2zJ,IAAIjrH,KASlB0zM,EAAO4E,6BAA+B,WACpC,IAAIt4M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBE,EAAcruB,KAAKqhP,mBACvBrhP,KAAKmgP,cAAc,aACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZz3E,EAAa3mK,KAAKwhP,4BAClB3U,EAAa7sO,KAAKg/O,iBAAgB,GAClCvO,EAASzwO,KAAKyhP,wBAClB,MAAO,CACLhY,KAAM2N,EAAOC,KAAK8C,0BAClB9rN,YAAaA,EACbnrB,KAAMA,EACNyjK,WAAYA,EACZkmE,WAAYA,EACZ4D,OAAQA,EACR98E,IAAK3zJ,KAAK2zJ,IAAIjrH,KASlB0zM,EAAO6E,yBAA2B,WAChC,IAAIv4M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBE,EAAcruB,KAAKqhP,mBACvBrhP,KAAKmgP,cAAc,SACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZvR,EAAa7sO,KAAKg/O,iBAAgB,GAClC38N,EAAQriB,KAAKkiP,wBACjB,MAAO,CACLzY,KAAM2N,EAAOC,KAAK+C,sBAClB/rN,YAAaA,EACbnrB,KAAMA,EACN2pO,WAAYA,EACZxqN,MAAOA,EACPsxI,IAAK3zJ,KAAK2zJ,IAAIjrH,KAUlB0zM,EAAO8F,sBAAwB,WAC7B,OAAOliP,KAAKq/O,oBAAoB/H,EAAWC,UAAUgE,QAAUv7O,KAAK4hP,cAActK,EAAWC,UAAUqE,KAAM57O,KAAKigP,gBAAkB,IAQtI7D,EAAO8E,wBAA0B,WAC/B,IAAIx4M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBE,EAAcruB,KAAKqhP,mBACvBrhP,KAAKmgP,cAAc,QACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZvR,EAAa7sO,KAAKg/O,iBAAgB,GAClCjyO,EAAS/M,KAAKmiP,4BAClB,MAAO,CACL1Y,KAAM2N,EAAOC,KAAKgD,qBAClBhsN,YAAaA,EACbnrB,KAAMA,EACN2pO,WAAYA,EACZ9/N,OAAQA,EACR4mJ,IAAK3zJ,KAAK2zJ,IAAIjrH,KAQlB0zM,EAAO+F,0BAA4B,WACjC,OAAOniP,KAAKk/O,aAAa5H,EAAWC,UAAUoE,QAAS37O,KAAKoiP,yBAA0B9K,EAAWC,UAAUsE,UAS7GO,EAAOgG,yBAA2B,WAChC,IAAI15M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBE,EAAcruB,KAAKqhP,mBACnBn+O,EAAOlD,KAAKo+O,YACZvR,EAAa7sO,KAAKg/O,iBAAgB,GACtC,MAAO,CACLvV,KAAM2N,EAAOC,KAAKiD,sBAClBjsN,YAAaA,EACbnrB,KAAMA,EACN2pO,WAAYA,EACZl5E,IAAK3zJ,KAAK2zJ,IAAIjrH,KASlB0zM,EAAO+E,+BAAiC,WACtC,IAAIz4M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBE,EAAcruB,KAAKqhP,mBACvBrhP,KAAKmgP,cAAc,SACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZvR,EAAa7sO,KAAKg/O,iBAAgB,GAClCvO,EAASzwO,KAAKqiP,6BAClB,MAAO,CACL5Y,KAAM2N,EAAOC,KAAKkD,6BAClBlsN,YAAaA,EACbnrB,KAAMA,EACN2pO,WAAYA,EACZ4D,OAAQA,EACR98E,IAAK3zJ,KAAK2zJ,IAAIjrH,KAQlB0zM,EAAOiG,2BAA6B,WAClC,OAAOriP,KAAKk/O,aAAa5H,EAAWC,UAAUoE,QAAS37O,KAAKiiP,mBAAoB3K,EAAWC,UAAUsE,UAiBvGO,EAAOsC,yBAA2B,WAChC,IAAIkC,EAAe5gP,KAAKw3O,OAAO8E,YAE/B,GAAIsE,EAAanX,OAAS6N,EAAWC,UAAUwB,KAC7C,OAAQ6H,EAAavhP,OACnB,IAAK,SACH,OAAOW,KAAKsiP,uBAEd,IAAK,SACH,OAAOtiP,KAAKuiP,2BAEd,IAAK,OACH,OAAOviP,KAAKwiP,2BAEd,IAAK,YACH,OAAOxiP,KAAKyiP,8BAEd,IAAK,QACH,OAAOziP,KAAK0iP,0BAEd,IAAK,OACH,OAAO1iP,KAAK2iP,yBAEd,IAAK,QACH,OAAO3iP,KAAK4iP,gCAIlB,MAAM5iP,KAAK4+O,WAAWgC,IASxBxE,EAAOkG,qBAAuB,WAC5B,IAAI55M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxBnuB,KAAKmgP,cAAc,UACnBngP,KAAKmgP,cAAc,UACnB,IAAItT,EAAa7sO,KAAKg/O,iBAAgB,GAClCsC,EAAiBthP,KAAKk/O,aAAa5H,EAAWC,UAAUoE,QAAS37O,KAAKuhP,6BAA8BjK,EAAWC,UAAUsE,SAE7H,GAA0B,IAAtBhP,EAAW9mO,QAA0C,IAA1Bu7O,EAAev7O,OAC5C,MAAM/F,KAAK4+O,aAGb,MAAO,CACLnV,KAAM2N,EAAOC,KAAKoD,iBAClB5N,WAAYA,EACZyU,eAAgBA,EAChB3tF,IAAK3zJ,KAAK2zJ,IAAIjrH,KASlB0zM,EAAOmG,yBAA2B,WAChC,IAAI75M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxBnuB,KAAKmgP,cAAc,UACnBngP,KAAKmgP,cAAc,UACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZvR,EAAa7sO,KAAKg/O,iBAAgB,GAEtC,GAA0B,IAAtBnS,EAAW9mO,OACb,MAAM/F,KAAK4+O,aAGb,MAAO,CACLnV,KAAM2N,EAAOC,KAAKqD,sBAClBx3O,KAAMA,EACN2pO,WAAYA,EACZl5E,IAAK3zJ,KAAK2zJ,IAAIjrH,KAWlB0zM,EAAOoG,yBAA2B,WAChC,IAAI95M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxBnuB,KAAKmgP,cAAc,UACnBngP,KAAKmgP,cAAc,QACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZz3E,EAAa3mK,KAAKwhP,4BAClB3U,EAAa7sO,KAAKg/O,iBAAgB,GAClCvO,EAASzwO,KAAKyhP,wBAElB,GAA0B,IAAtB96E,EAAW5gK,QAAsC,IAAtB8mO,EAAW9mO,QAAkC,IAAlB0qO,EAAO1qO,OAC/D,MAAM/F,KAAK4+O,aAGb,MAAO,CACLnV,KAAM2N,EAAOC,KAAKsD,sBAClBz3O,KAAMA,EACNyjK,WAAYA,EACZkmE,WAAYA,EACZ4D,OAAQA,EACR98E,IAAK3zJ,KAAK2zJ,IAAIjrH,KAWlB0zM,EAAOqG,4BAA8B,WACnC,IAAI/5M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxBnuB,KAAKmgP,cAAc,UACnBngP,KAAKmgP,cAAc,aACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZz3E,EAAa3mK,KAAKwhP,4BAClB3U,EAAa7sO,KAAKg/O,iBAAgB,GAClCvO,EAASzwO,KAAKyhP,wBAElB,GAA0B,IAAtB96E,EAAW5gK,QAAsC,IAAtB8mO,EAAW9mO,QAAkC,IAAlB0qO,EAAO1qO,OAC/D,MAAM/F,KAAK4+O,aAGb,MAAO,CACLnV,KAAM2N,EAAOC,KAAKuD,yBAClB13O,KAAMA,EACNyjK,WAAYA,EACZkmE,WAAYA,EACZ4D,OAAQA,EACR98E,IAAK3zJ,KAAK2zJ,IAAIjrH,KAUlB0zM,EAAOsG,wBAA0B,WAC/B,IAAIh6M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxBnuB,KAAKmgP,cAAc,UACnBngP,KAAKmgP,cAAc,SACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZvR,EAAa7sO,KAAKg/O,iBAAgB,GAClC38N,EAAQriB,KAAKkiP,wBAEjB,GAA0B,IAAtBrV,EAAW9mO,QAAiC,IAAjBsc,EAAMtc,OACnC,MAAM/F,KAAK4+O,aAGb,MAAO,CACLnV,KAAM2N,EAAOC,KAAKwD,qBAClB33O,KAAMA,EACN2pO,WAAYA,EACZxqN,MAAOA,EACPsxI,IAAK3zJ,KAAK2zJ,IAAIjrH,KAUlB0zM,EAAOuG,uBAAyB,WAC9B,IAAIj6M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxBnuB,KAAKmgP,cAAc,UACnBngP,KAAKmgP,cAAc,QACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZvR,EAAa7sO,KAAKg/O,iBAAgB,GAClCjyO,EAAS/M,KAAKmiP,4BAElB,GAA0B,IAAtBtV,EAAW9mO,QAAkC,IAAlBgH,EAAOhH,OACpC,MAAM/F,KAAK4+O,aAGb,MAAO,CACLnV,KAAM2N,EAAOC,KAAKyD,oBAClB53O,KAAMA,EACN2pO,WAAYA,EACZ9/N,OAAQA,EACR4mJ,IAAK3zJ,KAAK2zJ,IAAIjrH,KAUlB0zM,EAAOwG,8BAAgC,WACrC,IAAIl6M,EAAQ1oC,KAAKw3O,OAAOrpN,MACxBnuB,KAAKmgP,cAAc,UACnBngP,KAAKmgP,cAAc,SACnB,IAAIj9O,EAAOlD,KAAKo+O,YACZvR,EAAa7sO,KAAKg/O,iBAAgB,GAClCvO,EAASzwO,KAAKqiP,6BAElB,GAA0B,IAAtBxV,EAAW9mO,QAAkC,IAAlB0qO,EAAO1qO,OACpC,MAAM/F,KAAK4+O,aAGb,MAAO,CACLnV,KAAM2N,EAAOC,KAAK0D,4BAClB73O,KAAMA,EACN2pO,WAAYA,EACZ4D,OAAQA,EACR98E,IAAK3zJ,KAAK2zJ,IAAIjrH,KASlB0zM,EAAOgF,yBAA2B,WAChC,IAAI14M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBE,EAAcruB,KAAKqhP,mBACvBrhP,KAAKmgP,cAAc,aACnBngP,KAAK+9O,YAAYzG,EAAWC,UAAUiE,IACtC,IAAIt4O,EAAOlD,KAAKo+O,YACZ1+O,EAAOM,KAAKgiP,oBACZa,EAAa7iP,KAAK+/O,sBAAsB,cAC5C//O,KAAKmgP,cAAc,MACnB,IAAItN,EAAY7yO,KAAK8iP,0BACrB,MAAO,CACLrZ,KAAM2N,EAAOC,KAAKmD,qBAClBnsN,YAAaA,EACbnrB,KAAMA,EACN6Z,UAAWrd,EACXmjP,WAAYA,EACZhQ,UAAWA,EACXl/E,IAAK3zJ,KAAK2zJ,IAAIjrH,KAUlB0zM,EAAO0G,wBAA0B,WAC/B,OAAO9iP,KAAK4hP,cAActK,EAAWC,UAAUqE,KAAM57O,KAAK+iP,yBA+B5D3G,EAAO2G,uBAAyB,WAC9B,IAAIr6M,EAAQ1oC,KAAKw3O,OAAOrpN,MACpBjrB,EAAOlD,KAAKo+O,YAEhB,QAAyDt8O,IAArDg3O,EAAmB9C,kBAAkB9yO,EAAK7D,OAC5C,OAAO6D,EAGT,MAAMlD,KAAK4+O,WAAWl2M,IAQxB0zM,EAAOzoF,IAAM,SAAaghF,GACxB,IAAIqO,EAEJ,IAAyH,KAA9E,QAArCA,EAAkBhjP,KAAKkvB,gBAA0C,IAApB8zN,OAA6B,EAASA,EAAgBC,YACvG,OAAO,IAAI9K,EAAK1D,SAASE,EAAY30O,KAAKw3O,OAAO0E,UAAWl8O,KAAKw3O,OAAOtiO,SAQ5EknO,EAAOx6H,KAAO,SAAc6nH,GAC1B,OAAOzpO,KAAKw3O,OAAOrpN,MAAMs7M,OAASA,GAQpC2S,EAAO2B,YAAc,SAAqBtU,GACxC,IAAIt7M,EAAQnuB,KAAKw3O,OAAOrpN,MAExB,GAAIA,EAAMs7M,OAASA,EAGjB,OAFAzpO,KAAKw3O,OAAO6E,UAELluN,EAGT,MAAM,EAAI2tN,EAAavI,aAAavzO,KAAKw3O,OAAOtiO,OAAQiZ,EAAMua,MAAO,YAAYjqB,OAAOykO,EAAiBzZ,GAAO,YAAYhrN,OAAO0kO,EAAah1N,GAAQ,OAQ1JiuN,EAAOiD,oBAAsB,SAA6B5V,GACxD,IAAIt7M,EAAQnuB,KAAKw3O,OAAOrpN,MAExB,GAAIA,EAAMs7M,OAASA,EAGjB,OAFAzpO,KAAKw3O,OAAO6E,UAELluN,GAWXiuN,EAAO+D,cAAgB,SAAuB9gP,GAC5C,IAAI8uB,EAAQnuB,KAAKw3O,OAAOrpN,MAExB,GAAIA,EAAMs7M,OAAS6N,EAAWC,UAAUwB,MAAQ5qN,EAAM9uB,QAAUA,EAG9D,MAAM,EAAIy8O,EAAavI,aAAavzO,KAAKw3O,OAAOtiO,OAAQiZ,EAAMua,MAAO,aAAcjqB,OAAOpf,EAAO,aAAcof,OAAO0kO,EAAah1N,GAAQ,MAF3InuB,KAAKw3O,OAAO6E,WAWhBD,EAAO2D,sBAAwB,SAA+B1gP,GAC5D,IAAI8uB,EAAQnuB,KAAKw3O,OAAOrpN,MAExB,OAAIA,EAAMs7M,OAAS6N,EAAWC,UAAUwB,MAAQ5qN,EAAM9uB,QAAUA,IAC9DW,KAAKw3O,OAAO6E,WAEL,IAUXD,EAAOwC,WAAa,SAAoBwE,GACtC,IAAIj1N,EAAQi1N,MAAAA,EAAyCA,EAAUpjP,KAAKw3O,OAAOrpN,MAC3E,OAAO,EAAI2tN,EAAavI,aAAavzO,KAAKw3O,OAAOtiO,OAAQiZ,EAAMua,MAAO,cAAcjqB,OAAO0kO,EAAah1N,GAAQ,OASlHiuN,EAAOqE,IAAM,SAAa4C,EAAUC,EAASC,GAC3CvjP,KAAK+9O,YAAYsF,GAGjB,IAFA,IAAI/oI,EAAQ,IAEJt6G,KAAKq/O,oBAAoBkE,IAC/BjpI,EAAM70G,KAAK69O,EAAQ5gP,KAAK1C,OAG1B,OAAOs6G,GAUT8hI,EAAO8C,aAAe,SAAsBmE,EAAUC,EAASC,GAC7D,GAAIvjP,KAAKq/O,oBAAoBgE,GAAW,CACtC,IAAI/oI,EAAQ,GAEZ,GACEA,EAAM70G,KAAK69O,EAAQ5gP,KAAK1C,cAChBA,KAAKq/O,oBAAoBkE,IAEnC,OAAOjpI,EAGT,MAAO,IAST8hI,EAAOiC,KAAO,SAAcgF,EAAUC,EAASC,GAC7CvjP,KAAK+9O,YAAYsF,GACjB,IAAI/oI,EAAQ,GAEZ,GACEA,EAAM70G,KAAK69O,EAAQ5gP,KAAK1C,cAChBA,KAAKq/O,oBAAoBkE,IAEnC,OAAOjpI,GAST8hI,EAAOwF,cAAgB,SAAuB4B,EAAeF,GAC3DtjP,KAAKq/O,oBAAoBmE,GACzB,IAAIlpI,EAAQ,GAEZ,GACEA,EAAM70G,KAAK69O,EAAQ5gP,KAAK1C,aACjBA,KAAKq/O,oBAAoBmE,IAElC,OAAOlpI,GAGFlyB,EAt7CiB,GA+7C1B,SAAS+6J,EAAah1N,GACpB,IAAI9uB,EAAQ8uB,EAAM9uB,MAClB,OAAO6jP,EAAiB/0N,EAAMs7M,OAAkB,MAATpqO,EAAgB,KAAMof,OAAOpf,EAAO,KAAQ,IAOrF,SAAS6jP,EAAiBzZ,GACxB,OAAO,EAAI+N,EAAOwD,uBAAuBvR,GAAQ,IAAKhrN,OAAOgrN,EAAM,KAAQA,EAZ7ErqO,EAAQgpF,OAASA,gCC9gDjBlpF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQi5O,iBAYR,SAA0BpzO,GACxB,OAAOqzO,EAA2BrzO,IAASyzO,EAA2BzzO,IAAS2zO,EAA0B3zO,IAZ3G7F,EAAQk5O,2BAA6BA,EACrCl5O,EAAQm5O,gBAkBR,SAAyBtzO,GACvB,OAAOA,EAAKwkO,OAAS2N,EAAOC,KAAKjB,OAASnxO,EAAKwkO,OAAS2N,EAAOC,KAAKf,iBAAmBrxO,EAAKwkO,OAAS2N,EAAOC,KAAKd,iBAlBnHn3O,EAAQo5O,YAqBR,SAAqBvzO,GACnB,OAAOA,EAAKwkO,OAAS2N,EAAOC,KAAK+B,UAAYn0O,EAAKwkO,OAAS2N,EAAOC,KAAKgC,KAAOp0O,EAAKwkO,OAAS2N,EAAOC,KAAKiC,OAASr0O,EAAKwkO,OAAS2N,EAAOC,KAAKzoH,QAAU3pH,EAAKwkO,OAAS2N,EAAOC,KAAKkC,SAAWt0O,EAAKwkO,OAAS2N,EAAOC,KAAK1oH,MAAQ1pH,EAAKwkO,OAAS2N,EAAOC,KAAKP,MAAQ7xO,EAAKwkO,OAAS2N,EAAOC,KAAKmC,MAAQv0O,EAAKwkO,OAAS2N,EAAOC,KAAKjnH,QArB5ThxH,EAAQq5O,WAwBR,SAAoBxzO,GAClB,OAAOA,EAAKwkO,OAAS2N,EAAOC,KAAKsC,YAAc10O,EAAKwkO,OAAS2N,EAAOC,KAAKuC,WAAa30O,EAAKwkO,OAAS2N,EAAOC,KAAKwC,eAxBlHz6O,EAAQs5O,2BAA6BA,EACrCt5O,EAAQu5O,qBAAuBA,EAC/Bv5O,EAAQw5O,0BAA4BA,EACpCx5O,EAAQy5O,oBAAsBA,EAE9B,IAAIzB,EAAS,EAAQ,OAMrB,SAASkB,EAA2BrzO,GAClC,OAAOA,EAAKwkO,OAAS2N,EAAOC,KAAK4B,sBAAwBh0O,EAAKwkO,OAAS2N,EAAOC,KAAKhB,oBAerF,SAASqC,EAA2BzzO,GAClC,OAAOA,EAAKwkO,OAAS2N,EAAOC,KAAKyC,mBAAqBnB,EAAqB1zO,IAASA,EAAKwkO,OAAS2N,EAAOC,KAAKmD,qBAGhH,SAAS7B,EAAqB1zO,GAC5B,OAAOA,EAAKwkO,OAAS2N,EAAOC,KAAK2C,wBAA0B/0O,EAAKwkO,OAAS2N,EAAOC,KAAK4C,wBAA0Bh1O,EAAKwkO,OAAS2N,EAAOC,KAAK8C,2BAA6Bl1O,EAAKwkO,OAAS2N,EAAOC,KAAK+C,uBAAyBn1O,EAAKwkO,OAAS2N,EAAOC,KAAKgD,sBAAwBp1O,EAAKwkO,OAAS2N,EAAOC,KAAKkD,6BAGvS,SAAS3B,EAA0B3zO,GACjC,OAAOA,EAAKwkO,OAAS2N,EAAOC,KAAKoD,kBAAoB5B,EAAoB5zO,GAG3E,SAAS4zO,EAAoB5zO,GAC3B,OAAOA,EAAKwkO,OAAS2N,EAAOC,KAAKqD,uBAAyBz1O,EAAKwkO,OAAS2N,EAAOC,KAAKsD,uBAAyB11O,EAAKwkO,OAAS2N,EAAOC,KAAKuD,0BAA4B31O,EAAKwkO,OAAS2N,EAAOC,KAAKwD,sBAAwB51O,EAAKwkO,OAAS2N,EAAOC,KAAKyD,qBAAuB71O,EAAKwkO,OAAS2N,EAAOC,KAAK0D,2DChDlS77O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ+zO,cAQR,SAAuBn7M,GACrB,OAAOs7M,EAAoBt7M,EAAS9iB,QAAQ,EAAI87N,EAAU8B,aAAa96M,EAAS9iB,OAAQ8iB,EAAS0Q,SARnGtpC,EAAQk0O,oBAAsBA,EAE9B,IAAItC,EAAY,EAAQ,OAaxB,SAASsC,EAAoBp+N,EAAQuuO,GACnC,IAAIC,EAAwBxuO,EAAOyuO,eAAe9O,OAAS,EACvDhmO,EAAO09D,EAAWm3K,GAAyBxuO,EAAOrG,KAClD+0O,EAAYH,EAAejsJ,KAAO,EAClCqsJ,EAAa3uO,EAAOyuO,eAAensJ,KAAO,EAC1CssJ,EAAUL,EAAejsJ,KAAOqsJ,EAChCE,EAAuC,IAAxBN,EAAejsJ,KAAaksJ,EAAwB,EACnEM,EAAYP,EAAe5O,OAASkP,EACpCE,EAAc,GAAGxlO,OAAOvJ,EAAOhS,KAAM,KAAKub,OAAOqlO,EAAS,KAAKrlO,OAAOulO,EAAW,MACjFjuF,EAAQlnJ,EAAKiS,MAAM,gBACnBojO,EAAenuF,EAAM6tF,GAEzB,GAAIM,EAAan+O,OAAS,IAAK,CAK7B,IAJA,IAAIo+O,EAAe5kO,KAAKC,MAAMwkO,EAAY,IACtCI,EAAmBJ,EAAY,GAC/BK,EAAW,GAENzrO,EAAI,EAAGA,EAAIsrO,EAAan+O,OAAQ6S,GAAK,GAC5CyrO,EAAS5+O,KAAKy+O,EAAa7gO,MAAMzK,EAAGA,EAAI,KAG1C,OAAOqrO,EAAcK,EAAmB,CAAC,CAAC,GAAG7lO,OAAOqlO,GAAUO,EAAS,KAAK5lO,OAAO4lO,EAAShhO,MAAM,EAAG8gO,EAAe,GAAGn+O,KAAI,SAAUu+O,GACnI,MAAO,CAAC,GAAIA,MACV,CAAC,CAAC,IAAKh4K,EAAW63K,EAAmB,GAAK,KAAM,CAAC,GAAIC,EAASF,EAAe,OAGnF,OAAOF,EAAcK,EAAmB,CACxC,CAAC,GAAG7lO,OAAOqlO,EAAU,GAAI/tF,EAAM6tF,EAAY,IAAK,CAAC,GAAGnlO,OAAOqlO,GAAUI,GAAe,CAAC,GAAI33K,EAAWy3K,EAAY,GAAK,KAAM,CAAC,GAAGvlO,OAAOqlO,EAAU,GAAI/tF,EAAM6tF,EAAY,MAGxK,SAASU,EAAmBvuF,GAC1B,IAAIyuF,EAAgBzuF,EAAMzoJ,QAAO,SAAUm3O,GAGzC,OAFQA,EAAK,QAEG3iP,IADL2iP,EAAK,MAGdC,EAASnlO,KAAK2vB,IAAI7uB,MAAMd,KAAMilO,EAAcx+O,KAAI,SAAU2+O,GAE5D,OADaA,EAAM,GACL5+O,WAEhB,OAAOy+O,EAAcx+O,KAAI,SAAU2sO,GACjC,IAUkBr/M,EAVdqN,EAASgyM,EAAM,GACfn7I,EAAOm7I,EAAM,GACjB,OASKpmK,EATUm4K,GAQGpxN,EARKqN,GASG56B,QAAUutB,GATFkkE,EAAO,MAAQA,EAAO,SACvDh3E,KAAK,MAGV,SAAS+rD,EAAW7oD,GAClB,OAAO5H,MAAM4H,EAAM,GAAGlD,KAAK,oCCnE7BthB,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQy4O,MAUR,SAAe+M,GACb,OAAO,EAAI9M,EAASC,OAAO6M,EAAK,CAC9BC,MAAOC,KAVX,IAAIhN,EAAW,EAAQ,OAEnBiE,EAAe,EAAQ,OAcvB+I,EAAqB,CACvBC,KAAM,SAAc9/O,GAClB,OAAOA,EAAK5F,OAEd+0H,SAAU,SAAkBnvH,GAC1B,MAAO,IAAMA,EAAK/B,MAGpB+4N,SAAU,SAAkBh3N,GAC1B,OAAOub,EAAKvb,EAAKukO,YAAa,QAAU,MAE1Cwb,oBAAqB,SAA6B//O,GAChD,IAAI0M,EAAK1M,EAAKiB,UACVhD,EAAO+B,EAAK/B,KACZ+hP,EAAUz3N,EAAK,IAAKhN,EAAKvb,EAAKsoO,oBAAqB,MAAO,KAC1DV,EAAarsN,EAAKvb,EAAK4nO,WAAY,KACnCV,EAAelnO,EAAKknO,aAGxB,OAAQjpO,GAAS2pO,GAAeoY,GAAkB,UAAPtzO,EAAgC6O,EAAK,CAAC7O,EAAI6O,EAAK,CAACtd,EAAM+hP,IAAWpY,EAAYV,GAAe,KAA3EA,GAE9D+Y,mBAAoB,SAA4BT,GAC9C,IAAIl+O,EAAWk+O,EAAKl+O,SAChBJ,EAAOs+O,EAAKt+O,KACZ48M,EAAe0hC,EAAK1hC,aACpB8pB,EAAa4X,EAAK5X,WACtB,OAAOtmO,EAAW,KAAOJ,EAAOqnB,EAAK,MAAOu1L,GAAgBv1L,EAAK,IAAKhN,EAAKqsN,EAAY,OAEzFsY,aAAc,SAAsBR,GAElC,OAAOnE,EADUmE,EAAMrY,aAGzB8Y,MAAO,SAAezS,GACpB,IAAIvzI,EAAQuzI,EAAMvzI,MACdl8F,EAAOyvO,EAAMzvO,KACbxD,EAAOizO,EAAM51N,UACb8vN,EAAa8F,EAAM9F,WACnBV,EAAewG,EAAMxG,aACrBxrM,EAASnT,EAAK,GAAI4xE,EAAO,MAAQl8F,EACjCmiP,EAAW1kN,EAASnT,EAAK,IAAKhN,EAAK9gB,EAAM,MAAO,KAMpD,OAJI2lP,EAASt/O,OA3CK,KA4ChBs/O,EAAW1kN,EAASnT,EAAK,MAAOi8D,EAAOjpE,EAAK9gB,EAAM,OAAQ,QAGrD8gB,EAAK,CAAC6kO,EAAU7kO,EAAKqsN,EAAY,KAAMV,GAAe,MAE/DmZ,SAAU,SAAkBC,GAG1B,OAFWA,EAAMriP,KAEH,KADFqiP,EAAMlmP,OAIpBmmP,eAAgB,SAAwBC,GAGtC,MAAO,MAFIA,EAAMviP,KAEKsqB,EAAK,IAAKhN,EADfilO,EAAM5Y,WAC0B,OAEnD6Y,eAAgB,SAAwBC,GACtC,IAAIna,EAAgBma,EAAMna,cACtBqB,EAAa8Y,EAAM9Y,WACnBV,EAAewZ,EAAMxZ,aACzB,OAAO3rN,EAAK,CAAC,MAAOgN,EAAK,MAAOg+M,GAAgBhrN,EAAKqsN,EAAY,KAAMV,GAAe,MAExFyZ,mBAAoB,SAA4BC,GAC9C,IAAI3iP,EAAO2iP,EAAM3iP,KACbsoO,EAAgBqa,EAAMra,cACtB+B,EAAsBsY,EAAMtY,oBAC5BV,EAAagZ,EAAMhZ,WACnBV,EAAe0Z,EAAM1Z,aACzB,MAEE,YAAY1tN,OAAOvb,GAAMub,OAAO+O,EAAK,IAAKhN,EAAK+sN,EAAqB,MAAO,KAAM,KAAO,MAAM9uN,OAAO+sN,EAAe,KAAK/sN,OAAO+O,EAAK,GAAIhN,EAAKqsN,EAAY,KAAM,MAAQV,GAI5K2Z,SAAU,SAAkBC,GAE1B,OADYA,EAAM1mP,OAGpB2mP,WAAY,SAAoBC,GAE9B,OADYA,EAAM5mP,OAGpB6mP,YAAa,SAAqBC,EAAQhlP,GACxC,IAAI9B,EAAQ8mP,EAAO9mP,MAEnB,OADoB8mP,EAAO3F,OACJ,EAAIzE,EAAavG,kBAAkBn2O,EAAe,gBAAR8B,EAAwB,GAAK,MAAQiL,KAAKC,UAAUhN,IAEvH+mP,aAAc,SAAsBC,GAElC,OADYA,EAAOhnP,MACJ,OAAS,SAE1BinP,UAAW,WACT,MAAO,QAETC,UAAW,SAAmBC,GAE5B,OADYA,EAAOnnP,OAGrBonP,UAAW,SAAmBC,GAE5B,MAAO,IAAMlmO,EADAkmO,EAAO35O,OACM,MAAQ,KAEpC45O,YAAa,SAAqBC,GAEhC,MAAO,IAAMpmO,EADAomO,EAAOnW,OACM,MAAQ,KAEpCoW,YAAa,SAAqBC,GAGhC,OAFWA,EAAO5jP,KAEJ,KADF4jP,EAAOznP,OAIrBg7N,UAAW,SAAmB0sB,GAG5B,MAAO,IAFIA,EAAO7jP,KAEEsqB,EAAK,IAAKhN,EADnBumO,EAAOhqO,UACuB,MAAO,MAGlDiqO,UAAW,SAAmBC,GAE5B,OADWA,EAAO/jP,MAGpBgkP,SAAU,SAAkBC,GAE1B,MAAO,IADIA,EAAOhhP,KACE,KAEtBihP,YAAa,SAAqBC,GAEhC,OADWA,EAAOlhP,KACJ,KAGhBmhP,iBAAkBC,GAAe,SAAUC,GACzC,IAAI3a,EAAa2a,EAAO3a,WACpByU,EAAiBkG,EAAOlG,eAC5B,OAAO9gO,EAAK,CAAC,SAAUA,EAAKqsN,EAAY,KAAM2T,EAAMc,IAAkB,QAExEmG,wBAAyB,SAAiCC,GAGxD,OAFgBA,EAAOxhP,UAEJ,KADRwhP,EAAOvhP,MAGpBwhP,qBAAsBJ,GAAe,SAAUK,GAG7C,OAAOpnO,EAAK,CAAC,SAFFonO,EAAO1kP,KAEWsd,EADZonO,EAAO/a,WACsB,MAAO,QAEvDgb,qBAAsBN,GAAe,SAAUO,GAC7C,IAAI5kP,EAAO4kP,EAAO5kP,KACdyjK,EAAamhF,EAAOnhF,WACpBkmE,EAAaib,EAAOjb,WACpB4D,EAASqX,EAAOrX,OACpB,OAAOjwN,EAAK,CAAC,OAAQtd,EAAMsqB,EAAK,cAAehN,EAAKmmJ,EAAY,QAASnmJ,EAAKqsN,EAAY,KAAM2T,EAAM/P,IAAU,QAElHsX,gBAAiBR,GAAe,SAAUS,GACxC,IAAI9kP,EAAO8kP,EAAO9kP,KACdxD,EAAOsoP,EAAOjrO,UACd5W,EAAO6hP,EAAO7hP,KACd0mO,EAAamb,EAAOnb,WACxB,OAAO3pO,GAAQ+kP,EAAkBvoP,GAAQ8tB,EAAK,MAAOi8D,EAAOjpE,EAAK9gB,EAAM,OAAQ,OAAS8tB,EAAK,IAAKhN,EAAK9gB,EAAM,MAAO,MAAQ,KAAOyG,EAAOqnB,EAAK,IAAKhN,EAAKqsN,EAAY,SAEvKqb,qBAAsBX,GAAe,SAAUY,GAC7C,IAAIjlP,EAAOilP,EAAOjlP,KACdiD,EAAOgiP,EAAOhiP,KACd48M,EAAeolC,EAAOplC,aACtB8pB,EAAasb,EAAOtb,WACxB,OAAOrsN,EAAK,CAACtd,EAAO,KAAOiD,EAAMqnB,EAAK,KAAMu1L,GAAeviM,EAAKqsN,EAAY,MAAO,QAErFub,wBAAyBb,GAAe,SAAUc,GAChD,IAAInlP,EAAOmlP,EAAOnlP,KACdyjK,EAAa0hF,EAAO1hF,WACpBkmE,EAAawb,EAAOxb,WACpB4D,EAAS4X,EAAO5X,OACpB,OAAOjwN,EAAK,CAAC,YAAatd,EAAMsqB,EAAK,cAAehN,EAAKmmJ,EAAY,QAASnmJ,EAAKqsN,EAAY,KAAM2T,EAAM/P,IAAU,QAEvH6X,oBAAqBf,GAAe,SAAUgB,GAC5C,IAAIrlP,EAAOqlP,EAAOrlP,KACd2pO,EAAa0b,EAAO1b,WACpBxqN,EAAQkmO,EAAOlmO,MACnB,OAAO7B,EAAK,CAAC,QAAStd,EAAMsd,EAAKqsN,EAAY,KAAMxqN,GAA0B,IAAjBA,EAAMtc,OAAe,KAAOya,EAAK6B,EAAO,OAAS,IAAK,QAEpHmmO,mBAAoBjB,GAAe,SAAUkB,GAC3C,IAAIvlP,EAAOulP,EAAOvlP,KACd2pO,EAAa4b,EAAO5b,WACpB9/N,EAAS07O,EAAO17O,OACpB,OAAOyT,EAAK,CAAC,OAAQtd,EAAMsd,EAAKqsN,EAAY,KAAM2T,EAAMzzO,IAAU,QAEpE27O,oBAAqBnB,GAAe,SAAUoB,GAG5C,OAAOnoO,EAAK,CAFDmoO,EAAOzlP,KAECsd,EADFmoO,EAAO9b,WACY,MAAO,QAE7C+b,0BAA2BrB,GAAe,SAAUsB,GAClD,IAAI3lP,EAAO2lP,EAAO3lP,KACd2pO,EAAagc,EAAOhc,WACpB4D,EAASoY,EAAOpY,OACpB,OAAOjwN,EAAK,CAAC,QAAStd,EAAMsd,EAAKqsN,EAAY,KAAM2T,EAAM/P,IAAU,QAErEqY,oBAAqBvB,GAAe,SAAUwB,GAC5C,IAAI7lP,EAAO6lP,EAAO7lP,KACdxD,EAAOqpP,EAAOhsO,UACd8lO,EAAakG,EAAOlG,WACpBhQ,EAAYkW,EAAOlW,UACvB,MAAO,cAAgB3vO,GAAQ+kP,EAAkBvoP,GAAQ8tB,EAAK,MAAOi8D,EAAOjpE,EAAK9gB,EAAM,OAAQ,OAAS8tB,EAAK,IAAKhN,EAAK9gB,EAAM,MAAO,OAASmjP,EAAa,cAAgB,IAAM,OAASriO,EAAKqyN,EAAW,UAE3MmW,gBAAiB,SAAyBC,GACxC,IAAIpc,EAAaoc,EAAOpc,WACpByU,EAAiB2H,EAAO3H,eAC5B,OAAO9gO,EAAK,CAAC,gBAAiBA,EAAKqsN,EAAY,KAAM2T,EAAMc,IAAkB,MAE/E4H,oBAAqB,SAA6BC,GAGhD,OAAO3oO,EAAK,CAAC,gBAFF2oO,EAAOjmP,KAEkBsd,EADnB2oO,EAAOtc,WAC6B,MAAO,MAE9Duc,oBAAqB,SAA6BC,GAChD,IAAInmP,EAAOmmP,EAAOnmP,KACdyjK,EAAa0iF,EAAO1iF,WACpBkmE,EAAawc,EAAOxc,WACpB4D,EAAS4Y,EAAO5Y,OACpB,OAAOjwN,EAAK,CAAC,cAAetd,EAAMsqB,EAAK,cAAehN,EAAKmmJ,EAAY,QAASnmJ,EAAKqsN,EAAY,KAAM2T,EAAM/P,IAAU,MAEzH6Y,uBAAwB,SAAgCC,GACtD,IAAIrmP,EAAOqmP,EAAOrmP,KACdyjK,EAAa4iF,EAAO5iF,WACpBkmE,EAAa0c,EAAO1c,WACpB4D,EAAS8Y,EAAO9Y,OACpB,OAAOjwN,EAAK,CAAC,mBAAoBtd,EAAMsqB,EAAK,cAAehN,EAAKmmJ,EAAY,QAASnmJ,EAAKqsN,EAAY,KAAM2T,EAAM/P,IAAU,MAE9H+Y,mBAAoB,SAA4BC,GAC9C,IAAIvmP,EAAOumP,EAAOvmP,KACd2pO,EAAa4c,EAAO5c,WACpBxqN,EAAQonO,EAAOpnO,MACnB,OAAO7B,EAAK,CAAC,eAAgBtd,EAAMsd,EAAKqsN,EAAY,KAAMxqN,GAA0B,IAAjBA,EAAMtc,OAAe,KAAOya,EAAK6B,EAAO,OAAS,IAAK,MAE3HqnO,kBAAmB,SAA2BC,GAC5C,IAAIzmP,EAAOymP,EAAOzmP,KACd2pO,EAAa8c,EAAO9c,WACpB9/N,EAAS48O,EAAO58O,OACpB,OAAOyT,EAAK,CAAC,cAAetd,EAAMsd,EAAKqsN,EAAY,KAAM2T,EAAMzzO,IAAU,MAE3E68O,yBAA0B,SAAkCC,GAC1D,IAAI3mP,EAAO2mP,EAAO3mP,KACd2pO,EAAagd,EAAOhd,WACpB4D,EAASoZ,EAAOpZ,OACpB,OAAOjwN,EAAK,CAAC,eAAgBtd,EAAMsd,EAAKqsN,EAAY,KAAM2T,EAAM/P,IAAU,OAI9E,SAAS8W,EAAexpH,GACtB,OAAO,SAAU94H,GACf,OAAOub,EAAK,CAACvb,EAAKopB,YAAa0vG,EAAG94H,IAAQ,OAS9C,SAASub,EAAKspO,GACZ,IAAIC,EAEAxkI,EAAYxoG,UAAUhX,OAAS,QAAsBjE,IAAjBib,UAAU,GAAmBA,UAAU,GAAK,GACpF,OAEwB,QAFhBgtO,EAAwBD,MAAAA,OAA+C,EAASA,EAAWx8O,QAAO,SAAUW,GAClH,OAAOA,KACNuS,KAAK+kG,UAAkD,IAA1BwkI,EAAmCA,EAAwB,GAQ7F,SAASvJ,EAAMxkM,GACb,OAAOxuB,EAAK,MAAOi8D,EAAOjpE,EAAKw7B,EAAO,OAAQ,OAOhD,SAASxuB,EAAKkb,EAAOshN,GACnB,IAAIp/J,EAAM7tE,UAAUhX,OAAS,QAAsBjE,IAAjBib,UAAU,GAAmBA,UAAU,GAAK,GAC9E,OAAsB,MAAfitO,GAAuC,KAAhBA,EAAqBthN,EAAQshN,EAAcp/J,EAAM,GAGjF,SAASnB,EAAOn2D,GACd,OAAO9F,EAAK,KAAM8F,EAAI7S,QAAQ,MAAO,SAGvC,SAASwpO,EAAY32N,GACnB,OAA8B,IAAvBA,EAAIxb,QAAQ,MAGrB,SAASmwO,EAAkB6B,GACzB,OAAqB,MAAdA,GAAsBA,EAAWtgO,KAAKygO,iCC9T/C/qP,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ++O,SA2DR,SAAkBjpO,GAChB,OAAO,EAAIg1O,EAAY3yN,SAASriB,EAAQiiO,IA3D1C/3O,EAAQ+3O,YAAS,EAEjB,IAAIpG,EAAW,EAAQ,OAEnBoZ,EAAWvW,EAAuB,EAAQ,QAE1CwW,EAAaxW,EAAuB,EAAQ,QAE5CsW,EAActW,EAAuB,EAAQ,QAEjD,SAASA,EAAuB13L,GAAO,OAAOA,GAAOA,EAAIj6C,WAAai6C,EAAM,CAAE3kB,QAAS2kB,GAEvF,SAASgwF,EAAkBlhG,EAAQmhG,GAAS,IAAK,IAAIvzH,EAAI,EAAGA,EAAIuzH,EAAMpmI,OAAQ6S,IAAK,CAAE,IAAIonF,EAAamsC,EAAMvzH,GAAIonF,EAAW59F,WAAa49F,EAAW59F,aAAc,EAAO49F,EAAW79F,cAAe,EAAU,UAAW69F,IAAYA,EAAW99F,UAAW,GAAMhD,OAAOC,eAAe6rC,EAAQg1D,EAAW7+F,IAAK6+F,IAW7S,IAAIm3I,EAAsB,WACxB,SAASA,EAAOtoO,GACd,IAAI3L,EAAO6Z,UAAUhX,OAAS,QAAsBjE,IAAjBib,UAAU,GAAmBA,UAAU,GAAK,kBAC3E4mO,EAAiB5mO,UAAUhX,OAAS,QAAsBjE,IAAjBib,UAAU,GAAmBA,UAAU,GAAK,CACvFy6E,KAAM,EACNq9I,OAAQ,GAEM,iBAAThmO,IAAqB,EAAIu7O,EAAW7yN,SAAS,EAAG,oCAAoC9Y,QAAO,EAAI0rO,EAAS5yN,SAAS1oB,GAAO,MAC/H7O,KAAK6O,KAAOA,EACZ7O,KAAKkD,KAAOA,EACZlD,KAAK2jP,eAAiBA,EACtB3jP,KAAK2jP,eAAensJ,KAAO,IAAK,EAAI4yJ,EAAW7yN,SAAS,EAAG,6DAC3Dv3B,KAAK2jP,eAAe9O,OAAS,IAAK,EAAIuV,EAAW7yN,SAAS,EAAG,+DArBjE,IAAsB+0G,EAAaE,EAgCjC,OAhCoBF,EAyBP6qG,GAzBoB3qG,EAyBZ,CAAC,CACpBrrI,IAAK4vO,EAASiC,qBACd3wO,IAAK,WACH,MAAO,cA5BiE6pI,EAAkBI,EAAY9pI,UAAWgqI,GAgC9G2qG,EAvBiB,GAgC1B/3O,EAAQ+3O,OAASA,8BC3DjBj4O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQm4O,eAAY,EAMpB,IAAIA,EAAYr4O,OAAOmC,OAAO,CAC5B46O,IAAK,QACLppF,IAAK,QACLooF,KAAM,IACNC,OAAQ,IACRC,IAAK,IACLC,QAAS,IACTC,QAAS,IACTC,OAAQ,MACR/sH,MAAO,IACPgtH,OAAQ,IACRC,GAAI,IACJC,UAAW,IACXC,UAAW,IACXC,QAAS,IACTC,KAAM,IACNC,QAAS,IACT9C,KAAM,OACNM,IAAK,MACLC,MAAO,QACP1qH,OAAQ,SACRgvH,aAAc,cACdnB,QAAS,YAMXr9O,EAAQm4O,UAAYA,gCCrCpBr4O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ24O,MAqJR,SAAejvJ,EAAMuhK,GACnB,IAAIC,EAAcvtO,UAAUhX,OAAS,QAAsBjE,IAAjBib,UAAU,GAAmBA,UAAU,GAAKwtO,EAGlFxjK,OAAQjlF,EACR24D,EAAU3+C,MAAMC,QAAQ+sE,GACxBl8E,EAAO,CAACk8E,GACR1nF,GAAS,EACTopP,EAAQ,GACRvlP,OAAOnD,EACPX,OAAMW,EACNyoE,OAASzoE,EACT4P,EAAO,GACP+4O,EAAY,GACZ3tI,EAAUh0B,EAGd,EAAG,CAED,IAAI4hK,IADJtpP,IAC0BwL,EAAK7G,OAC3B4kP,EAAWD,GAA8B,IAAjBF,EAAMzkP,OAElC,GAAI2kP,EAAW,CAKb,GAJAvpP,EAA2B,IAArBspP,EAAU1kP,YAAejE,EAAY4P,EAAKA,EAAK3L,OAAS,GAC9Dd,EAAOslE,EACPA,EAASkgL,EAAUjoO,MAEfmoO,EAAU,CACZ,GAAIlwL,EACFx1D,EAAOA,EAAKoe,YACP,CAGL,IAFA,IAAI8qB,EAAQ,GAEHm3H,EAAM,EAAGslF,EAAgB1rP,OAAO0N,KAAK3H,GAAOqgK,EAAMslF,EAAc7kP,OAAQu/J,IAAO,CACtF,IAAI1jK,EAAIgpP,EAActlF,GACtBn3H,EAAMvsC,GAAKqD,EAAKrD,GAGlBqD,EAAOkpC,EAKT,IAFA,IAAI08M,EAAa,EAERj9I,EAAK,EAAGA,EAAK48I,EAAMzkP,OAAQ6nG,IAAM,CACxC,IAAIk9I,EAAUN,EAAM58I,GAAI,GACpBm9I,EAAYP,EAAM58I,GAAI,GAEtBnzC,IACFqwL,GAAWD,GAGTpwL,GAAyB,OAAdswL,GACb9lP,EAAK8S,OAAO+yO,EAAS,GACrBD,KAEA5lP,EAAK6lP,GAAWC,GAKtB3pP,EAAQ2lF,EAAM3lF,MACdwL,EAAOm6E,EAAMn6E,KACb49O,EAAQzjK,EAAMyjK,MACd/vL,EAAUssB,EAAMtsB,QAChBssB,EAAQA,EAAM81B,SACT,CAIL,GAHA17G,EAAMopE,EAAS9P,EAAUr5D,EAAQwL,EAAKxL,QAASU,EAG3CmD,OAFJA,EAAOslE,EAASA,EAAOppE,GAAO27G,GAG5B,SAGEvyC,GACF74D,EAAKjM,KAAKtE,GAId,IA2CM6pP,EA3CF1jP,OAAS,EAEb,IAAKwU,MAAMC,QAAQ9W,GAAO,CACxB,KAAK,EAAIkzO,EAAK7D,QAAQrvO,GACpB,MAAM,IAAIzE,MAAM,qBAAqBie,QAAO,EAAI0rO,EAAS5yN,SAAStyB,GAAO,MAG3E,IAAIgmP,EAAUhT,EAAWoS,EAASplP,EAAKwkO,KAAMihB,GAE7C,GAAIO,EAAS,CAGX,IAFA3jP,EAAS2jP,EAAQvoP,KAAK2nP,EAASplP,EAAM9D,EAAKopE,EAAQ74D,EAAM+4O,MAEzCvS,EACb,MAGF,IAAe,IAAX5wO,GACF,IAAKojP,EAAW,CACdh5O,EAAK8Q,MACL,eAEG,QAAe1gB,IAAXwF,IACTkjP,EAAM/kP,KAAK,CAACtE,EAAKmG,KAEZojP,GAAW,CACd,KAAI,EAAIvS,EAAK7D,QAAQhtO,GAEd,CACLoK,EAAK8Q,MACL,SAHAvd,EAAOqC,SAUFxF,IAAXwF,GAAwBqjP,GAC1BH,EAAM/kP,KAAK,CAACtE,EAAK8D,IAGfylP,EACFh5O,EAAK8Q,OAILukE,EAAQ,CACNtsB,QAASA,EACTr5D,MAAOA,EACPwL,KAAMA,EACN49O,MAAOA,EACP3tI,KAAM91B,GAGRn6E,GADA6tD,EAAU3+C,MAAMC,QAAQ9W,IACPA,EAA4D,QAApD+lP,EAAwBV,EAAYrlP,EAAKwkO,aAA6C,IAA1BuhB,EAAmCA,EAAwB,GAChJ5pP,GAAS,EACTopP,EAAQ,GAEJjgL,GACFkgL,EAAUhlP,KAAK8kE,GAGjBA,EAAStlE,cAEMnD,IAAVilF,GAMT,OAJqB,IAAjByjK,EAAMzkP,SACR+2G,EAAU0tI,EAAMA,EAAMzkP,OAAS,GAAG,IAG7B+2G,GAvST19G,EAAQ44O,gBAiTR,SAAyBkT,GACvB,IAAIt4I,EAAW,IAAI92F,MAAMovO,EAASnlP,QAClC,MAAO,CACLolP,MAAO,SAAelmP,GACpB,IAAK,IAAI2T,EAAI,EAAGA,EAAIsyO,EAASnlP,OAAQ6S,IACnC,GAAmB,MAAfg6F,EAASh6F,GAAY,CACvB,IAAI5L,EAAKirO,EAAWiT,EAAStyO,GAAI3T,EAAKwkO,MAEtC,GAEA,GAAIz8N,EAAI,CACN,IAAI1F,EAAS0F,EAAGqT,MAAM6qO,EAAStyO,GAAImE,WAEnC,IAAe,IAAXzV,EACFsrG,EAASh6F,GAAK3T,OACT,GAAIqC,IAAW4wO,EACpBtlI,EAASh6F,GAAKs/N,OACT,QAAep2O,IAAXwF,EACT,OAAOA,KAMjBu9O,MAAO,SAAe5/O,GACpB,IAAK,IAAI2T,EAAI,EAAGA,EAAIsyO,EAASnlP,OAAQ6S,IACnC,GAAmB,MAAfg6F,EAASh6F,GAAY,CACvB,IAAI5L,EAAKirO,EAAWiT,EAAStyO,GAAI3T,EAAKwkO,MAEtC,GAEA,GAAIz8N,EAAI,CACN,IAAI1F,EAAS0F,EAAGqT,MAAM6qO,EAAStyO,GAAImE,WAEnC,GAAIzV,IAAW4wO,EACbtlI,EAASh6F,GAAKs/N,OACT,QAAep2O,IAAXwF,IAAmC,IAAXA,EACjC,OAAOA,QAGFsrG,EAASh6F,KAAO3T,IACzB2tG,EAASh6F,GAAK,SAzVxBxZ,EAAQ64O,WAAaA,EACrB74O,EAAQ84O,MAAQ94O,EAAQmrP,uBAAoB,EAE5C,IAIgCruM,EAJ5BiuM,GAI4BjuM,EAJM,EAAQ,SAIOA,EAAIj6C,WAAai6C,EAAM,CAAE3kB,QAAS2kB,GAFnFi8L,EAAO,EAAQ,OAIfoS,EAAoB,CACtBxF,KAAM,GACN9oB,SAAU,CAAC,eACX+oB,oBAAqB,CAAC,OAAQ,sBAAuB,aAAc,gBACnEE,mBAAoB,CAAC,WAAY,OAAQ,eAAgB,cACzD9wH,SAAU,CAAC,QACX+wH,aAAc,CAAC,cACfC,MAAO,CAAC,QAAS,OAAQ,YAAa,aAAc,gBACpDE,SAAU,CAAC,OAAQ,SACnBE,eAAgB,CAAC,OAAQ,cACzBE,eAAgB,CAAC,gBAAiB,aAAc,gBAChDE,mBAAoB,CAAC,OAErB,sBAAuB,gBAAiB,aAAc,gBACtDE,SAAU,GACVE,WAAY,GACZE,YAAa,GACbE,aAAc,GACdE,UAAW,GACXC,UAAW,GACXE,UAAW,CAAC,UACZE,YAAa,CAAC,UACdE,YAAa,CAAC,OAAQ,SACtBxsB,UAAW,CAAC,OAAQ,aACpB2sB,UAAW,CAAC,QACZE,SAAU,CAAC,QACXE,YAAa,CAAC,QACdE,iBAAkB,CAAC,cAAe,aAAc,kBAChDG,wBAAyB,CAAC,QAC1BE,qBAAsB,CAAC,cAAe,OAAQ,cAC9CE,qBAAsB,CAAC,cAAe,OAAQ,aAAc,aAAc,UAC1EE,gBAAiB,CAAC,cAAe,OAAQ,YAAa,OAAQ,cAC9DG,qBAAsB,CAAC,cAAe,OAAQ,OAAQ,eAAgB,cACtEE,wBAAyB,CAAC,cAAe,OAAQ,aAAc,aAAc,UAC7EE,oBAAqB,CAAC,cAAe,OAAQ,aAAc,SAC3DE,mBAAoB,CAAC,cAAe,OAAQ,aAAc,UAC1DE,oBAAqB,CAAC,cAAe,OAAQ,cAC7CE,0BAA2B,CAAC,cAAe,OAAQ,aAAc,UACjEE,oBAAqB,CAAC,cAAe,OAAQ,YAAa,aAC1DE,gBAAiB,CAAC,aAAc,kBAChCE,oBAAqB,CAAC,OAAQ,cAC9BE,oBAAqB,CAAC,OAAQ,aAAc,aAAc,UAC1DE,uBAAwB,CAAC,OAAQ,aAAc,aAAc,UAC7DE,mBAAoB,CAAC,OAAQ,aAAc,SAC3CE,kBAAmB,CAAC,OAAQ,aAAc,UAC1CE,yBAA0B,CAAC,OAAQ,aAAc,WAEnDxqP,EAAQmrP,kBAAoBA,EAC5B,IAAIrS,EAAQh5O,OAAOmC,OAAO,IA4S1B,SAAS42O,EAAWoS,EAAS5gB,EAAMihB,GACjC,IAAIU,EAAcf,EAAQ5gB,GAE1B,GAAI2hB,EAAa,CACf,IAAKV,GAAoC,mBAAhBU,EAEvB,OAAOA,EAGT,IAAIC,EAAsBX,EAAYU,EAAYvG,MAAQuG,EAAYD,MAEtE,GAAmC,mBAAxBE,EAET,OAAOA,MAEJ,CACL,IAAIC,EAAkBZ,EAAYL,EAAQxF,MAAQwF,EAAQc,MAE1D,GAAIG,EAAiB,CACnB,GAA+B,mBAApBA,EAET,OAAOA,EAGT,IAAIC,EAAsBD,EAAgB7hB,GAE1C,GAAmC,mBAAxB8hB,EAET,OAAOA,IAhPfnsP,EAAQ84O,MAAQA,8BCtJhBh5O,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4zO,qBAAuB5zO,EAAQosP,sBAAwBpsP,EAAQqsP,qBAAkB,EAGzF,IAAIA,EAAoC,mBAAXv+O,QAA4C,MAAnBA,OAAOC,SAAmBD,OAAOC,SAAW,aAGlG/N,EAAQqsP,gBAAkBA,EAC1B,IAAID,EAA0C,mBAAXt+O,QAAiD,MAAxBA,OAAO84H,cAAwB94H,OAAO84H,cAAgB,kBAElH5mI,EAAQosP,sBAAwBA,EAChC,IAAIxY,EAAyC,mBAAX9lO,QAA+C,MAAtBA,OAAOoqB,YAAsBpqB,OAAOoqB,YAAc,gBAC7Gl4B,EAAQ4zO,qBAAuBA,mBChB/B,IAAIjkO,EAAO3P,EAEX2P,EAAKkxF,MAAQ,EAAQ,OACrBlxF,EAAKmxF,OAAS,EAAQ,OACtBnxF,EAAKoxF,IAAM,EAAQ,OACnBpxF,EAAKqxF,OAAS,EAAQ,OACtBrxF,EAAKsxF,KAAO,EAAQ,OAGpBtxF,EAAK+1C,KAAO/1C,EAAKoxF,IAAIr7C,KACrB/1C,EAAKi2C,OAASj2C,EAAKoxF,IAAIn7C,OACvBj2C,EAAKg2C,OAASh2C,EAAKoxF,IAAIp7C,OACvBh2C,EAAKk2C,OAASl2C,EAAKoxF,IAAIl7C,OACvBl2C,EAAKm2C,OAASn2C,EAAKoxF,IAAIj7C,OACvBn2C,EAAKs2C,UAAYt2C,EAAKqxF,OAAO/6C,wCCZ7B,IAAI46C,EAAQ,EAAQ,OAChBK,EAAS,EAAQ,OAErB,SAASC,IACPvgG,KAAKwgG,QAAU,KACfxgG,KAAKygG,aAAe,EACpBzgG,KAAKivC,UAAYjvC,KAAKP,YAAYwvC,UAClCjvC,KAAK0gG,QAAU1gG,KAAKP,YAAYihG,QAChC1gG,KAAK2gG,aAAe3gG,KAAKP,YAAYkhG,aACrC3gG,KAAK4gG,UAAY5gG,KAAKP,YAAYmhG,UAAY,EAC9C5gG,KAAK6gG,OAAS,MAEd7gG,KAAK8gG,QAAU9gG,KAAKivC,UAAY,EAChCjvC,KAAK+gG,SAAW/gG,KAAKivC,UAAY,GAEnC7vC,EAAQmhG,UAAYA,EAEpBA,EAAU/9F,UAAUitC,OAAS,SAAgBntB,EAAKd,GAUhD,GARAc,EAAM29E,EAAMt2F,QAAQ2Y,EAAKd,GACpBxhB,KAAKwgG,QAGRxgG,KAAKwgG,QAAUxgG,KAAKwgG,QAAQ/hF,OAAO6D,GAFnCtiB,KAAKwgG,QAAUl+E,EAGjBtiB,KAAKygG,cAAgBn+E,EAAIvc,OAGrB/F,KAAKwgG,QAAQz6F,QAAU/F,KAAK8gG,QAAS,CAIvC,IAAI3pE,GAHJ7U,EAAMtiB,KAAKwgG,SAGCz6F,OAAS/F,KAAK8gG,QAC1B9gG,KAAKwgG,QAAUl+E,EAAIe,MAAMf,EAAIvc,OAASoxB,EAAG7U,EAAIvc,QACjB,IAAxB/F,KAAKwgG,QAAQz6F,SACf/F,KAAKwgG,QAAU,MAEjBl+E,EAAM29E,EAAMe,OAAO1+E,EAAK,EAAGA,EAAIvc,OAASoxB,EAAGn3B,KAAK6gG,QAChD,IAAK,IAAIjoF,EAAI,EAAGA,EAAI0J,EAAIvc,OAAQ6S,GAAK5Y,KAAK+gG,SACxC/gG,KAAKihG,QAAQ3+E,EAAK1J,EAAGA,EAAI5Y,KAAK+gG,UAGlC,OAAO/gG,MAGTugG,EAAU/9F,UAAUyiB,OAAS,SAAgBzD,GAI3C,OAHAxhB,KAAKyvC,OAAOzvC,KAAKkhG,QACjBZ,EAAwB,OAAjBtgG,KAAKwgG,SAELxgG,KAAKmhG,QAAQ3/E,IAGtB++E,EAAU/9F,UAAU0+F,KAAO,WACzB,IAAIx9E,EAAM1jB,KAAKygG,aACX/Q,EAAQ1vF,KAAK8gG,QACbl/F,EAAI8tF,GAAUhsE,EAAM1jB,KAAK4gG,WAAalR,EACtCxpE,EAAM,IAAIpK,MAAMla,EAAI5B,KAAK4gG,WAC7B16E,EAAI,GAAK,IACT,IAAK,IAAItN,EAAI,EAAGA,EAAIhX,EAAGgX,IACrBsN,EAAItN,GAAK,EAIX,GADA8K,IAAQ,EACY,QAAhB1jB,KAAK6gG,OAAkB,CACzB,IAAK,IAAIzpE,EAAI,EAAGA,EAAIp3B,KAAK4gG,UAAWxpE,IAClClR,EAAItN,KAAO,EAEbsN,EAAItN,KAAO,EACXsN,EAAItN,KAAO,EACXsN,EAAItN,KAAO,EACXsN,EAAItN,KAAO,EACXsN,EAAItN,KAAQ8K,IAAQ,GAAM,IAC1BwC,EAAItN,KAAQ8K,IAAQ,GAAM,IAC1BwC,EAAItN,KAAQ8K,IAAQ,EAAK,IACzBwC,EAAItN,KAAa,IAAN8K,OAWX,IATAwC,EAAItN,KAAa,IAAN8K,EACXwC,EAAItN,KAAQ8K,IAAQ,EAAK,IACzBwC,EAAItN,KAAQ8K,IAAQ,GAAM,IAC1BwC,EAAItN,KAAQ8K,IAAQ,GAAM,IAC1BwC,EAAItN,KAAO,EACXsN,EAAItN,KAAO,EACXsN,EAAItN,KAAO,EACXsN,EAAItN,KAAO,EAENwe,EAAI,EAAGA,EAAIp3B,KAAK4gG,UAAWxpE,IAC9BlR,EAAItN,KAAO,EAGf,OAAOsN,iCCxFT,IAAI+5E,EAAQ,EAAQ,OAChBK,EAAS,EAAQ,OAErB,SAASc,EAAKryF,EAAM5N,EAAKqgB,GACvB,KAAMxhB,gBAAgBohG,GACpB,OAAO,IAAIA,EAAKryF,EAAM5N,EAAKqgB,GAC7BxhB,KAAKqhG,KAAOtyF,EACZ/O,KAAKivC,UAAYlgC,EAAKkgC,UAAY,EAClCjvC,KAAK0gG,QAAU3xF,EAAK2xF,QAAU,EAC9B1gG,KAAKshG,MAAQ,KACbthG,KAAKuhG,MAAQ,KAEbvhG,KAAKwhG,MAAMvB,EAAMt2F,QAAQxI,EAAKqgB,IAEhCwqD,EAAO5sE,QAAUgiG,EAEjBA,EAAK5+F,UAAUg/F,MAAQ,SAAcrgG,GAE/BA,EAAI4E,OAAS/F,KAAKivC,YACpB9tC,GAAM,IAAInB,KAAKqhG,MAAO5xD,OAAOtuC,GAAK8jB,UACpCq7E,EAAOn/F,EAAI4E,QAAU/F,KAAKivC,WAG1B,IAAK,IAAIr2B,EAAIzX,EAAI4E,OAAQ6S,EAAI5Y,KAAKivC,UAAWr2B,IAC3CzX,EAAIsE,KAAK,GAEX,IAAKmT,EAAI,EAAGA,EAAIzX,EAAI4E,OAAQ6S,IAC1BzX,EAAIyX,IAAM,GAIZ,IAHA5Y,KAAKshG,OAAQ,IAAIthG,KAAKqhG,MAAO5xD,OAAOtuC,GAG/ByX,EAAI,EAAGA,EAAIzX,EAAI4E,OAAQ6S,IAC1BzX,EAAIyX,IAAM,IACZ5Y,KAAKuhG,OAAQ,IAAIvhG,KAAKqhG,MAAO5xD,OAAOtuC,IAGtCigG,EAAK5+F,UAAUitC,OAAS,SAAgBntB,EAAKd,GAE3C,OADAxhB,KAAKshG,MAAM7xD,OAAOntB,EAAKd,GAChBxhB,MAGTohG,EAAK5+F,UAAUyiB,OAAS,SAAgBzD,GAEtC,OADAxhB,KAAKuhG,MAAM9xD,OAAOzvC,KAAKshG,MAAMr8E,UACtBjlB,KAAKuhG,MAAMt8E,OAAOzD,kCC3C3B,IAAIy+E,EAAQ,EAAQ,OAChBC,EAAS,EAAQ,OAEjBuB,EAASxB,EAAMwB,OACfC,EAAQzB,EAAMyB,MACdC,EAAU1B,EAAM0B,QAChBC,EAAU3B,EAAM2B,QAChBrB,EAAYL,EAAOK,UAEvB,SAAS54C,IACP,KAAM3nD,gBAAgB2nD,GACpB,OAAO,IAAIA,EAEb44C,EAAU79F,KAAK1C,MAEfA,KAAKg6B,EAAI,CAAE,WAAY,WAAY,WAAY,UAAY,YAC3Dh6B,KAAK6gG,OAAS,SA0DhB,SAASpmE,EAAEqC,EAAG7uB,EAAGqf,EAAGqQ,GAClB,OAAIb,GAAK,GACA7uB,EAAIqf,EAAIqQ,EACRb,GAAK,GACJ7uB,EAAIqf,GAAQrf,EAAK0vB,EAClBb,GAAK,IACJ7uB,GAAMqf,GAAMqQ,EACbb,GAAK,GACJ7uB,EAAI0vB,EAAMrQ,GAAMqQ,EAEjB1vB,GAAKqf,GAAMqQ,GAGtB,SAASN,EAAEP,GACT,OAAIA,GAAK,GACA,EACAA,GAAK,GACL,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WAEA,WAGX,SAAS+kE,EAAG/kE,GACV,OAAIA,GAAK,GACA,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WAEA,EA5FXmjE,EAAM6B,SAASn6C,EAAW44C,GAC1BnhG,EAAQimD,UAAYsC,EAEpBA,EAAU1Y,UAAY,IACtB0Y,EAAU+4C,QAAU,IACpB/4C,EAAUg5C,aAAe,IACzBh5C,EAAUi5C,UAAY,GAEtBj5C,EAAUnlD,UAAUy+F,QAAU,SAAgB3+E,EAAKomB,GAWjD,IAVA,IAAIlN,EAAIx7B,KAAKg6B,EAAE,GACX2C,EAAI38B,KAAKg6B,EAAE,GACX6B,EAAI77B,KAAKg6B,EAAE,GACXqC,EAAIr8B,KAAKg6B,EAAE,GACXsB,EAAIt7B,KAAKg6B,EAAE,GACX+nE,EAAKvmE,EACLwmE,EAAKrlE,EACLslE,EAAKpmE,EACLqmE,EAAK7lE,EACL8lE,EAAK7mE,EACAwB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAIf,EAAI2lE,EACND,EACEG,EAAQpmE,EAAGf,EAAEqC,EAAGH,EAAGd,EAAGQ,GAAI/Z,EAAI6U,EAAE2F,GAAK4L,GAAQrL,EAAEP,IAC/CjT,EAAEiT,IACJxB,GACFE,EAAIF,EACJA,EAAIe,EACJA,EAAIolE,EAAO5lE,EAAG,IACdA,EAAIc,EACJA,EAAIZ,EACJA,EAAI2lE,EACFD,EACEG,EAAQG,EAAItnE,EAAE,GAAKqC,EAAGklE,EAAIC,EAAIC,GAAK5/E,EAAI8/E,EAAGtlE,GAAK4L,GAAQm5D,EAAG/kE,IAC1DulE,EAAGvlE,IACLqlE,GACFJ,EAAKI,EACLA,EAAKD,EACLA,EAAKT,EAAOQ,EAAI,IAChBA,EAAKD,EACLA,EAAKjmE,EAEPA,EAAI4lE,EAAQ3hG,KAAKg6B,EAAE,GAAI6B,EAAGqmE,GAC1BliG,KAAKg6B,EAAE,GAAK2nE,EAAQ3hG,KAAKg6B,EAAE,GAAIqC,EAAG8lE,GAClCniG,KAAKg6B,EAAE,GAAK2nE,EAAQ3hG,KAAKg6B,EAAE,GAAIsB,EAAGymE,GAClC/hG,KAAKg6B,EAAE,GAAK2nE,EAAQ3hG,KAAKg6B,EAAE,GAAIwB,EAAGwmE,GAClChiG,KAAKg6B,EAAE,GAAK2nE,EAAQ3hG,KAAKg6B,EAAE,GAAI2C,EAAGslE,GAClCjiG,KAAKg6B,EAAE,GAAK+B,GAGd4rB,EAAUnlD,UAAU2+F,QAAU,SAAgB3/E,GAC5C,MAAY,QAARA,EACKy+E,EAAMqC,QAAQtiG,KAAKg6B,EAAG,UAEtBimE,EAAMsC,QAAQviG,KAAKg6B,EAAG,WA0CjC,IAAI7C,EAAI,CACN,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EACnD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAClD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EACnD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAGhDirE,EAAK,CACP,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAClD,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EACnD,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAClD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAClD,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,IAGhDv4E,EAAI,CACN,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EACrD,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GACpD,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EACrD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GACpD,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAGnDw4E,EAAK,CACP,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EACrD,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GACpD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EACrD,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EACrD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,kCC9ItDjjG,EAAQ0lD,KAAO,EAAf,OACA1lD,EAAQ2lD,OAAS,EAAjB,OACA3lD,EAAQ4lD,OAAS,EAAjB,OACA5lD,EAAQ6lD,OAAS,EAAjB,OACA7lD,EAAQ8lD,OAAS,EAAjB,qCCJA,IAAI+6C,EAAQ,EAAQ,OAChBC,EAAS,EAAQ,OACjBsC,EAAY,EAAQ,OAEpBf,EAASxB,EAAMwB,OACfC,EAAQzB,EAAMyB,MACde,EAAUxC,EAAMwC,QAChBC,EAAOF,EAAUE,KACjBnC,EAAYL,EAAOK,UAEnBoC,EAAS,CACX,WAAY,WACZ,WAAY,YAGd,SAASl7C,IACP,KAAMznD,gBAAgBynD,GACpB,OAAO,IAAIA,EAEb84C,EAAU79F,KAAK1C,MACfA,KAAKg6B,EAAI,CACP,WAAY,WAAY,WACxB,UAAY,YACdh6B,KAAK09B,EAAI,IAAI5hB,MAAM,IAGrBmkF,EAAM6B,SAASr6C,EAAM84C,GACrBv0B,EAAO5sE,QAAUqoD,EAEjBA,EAAKxY,UAAY,IACjBwY,EAAKi5C,QAAU,IACfj5C,EAAKk5C,aAAe,GACpBl5C,EAAKm5C,UAAY,GAEjBn5C,EAAKjlD,UAAUy+F,QAAU,SAAiB3+E,EAAKomB,GAG7C,IAFA,IAAIhL,EAAI19B,KAAK09B,EAEJ9kB,EAAI,EAAGA,EAAI,GAAIA,IACtB8kB,EAAE9kB,GAAK0J,EAAIomB,EAAQ9vB,GAErB,KAAMA,EAAI8kB,EAAE33B,OAAQ6S,IAClB8kB,EAAE9kB,GAAK6oF,EAAO/jE,EAAE9kB,EAAI,GAAK8kB,EAAE9kB,EAAI,GAAK8kB,EAAE9kB,EAAI,IAAM8kB,EAAE9kB,EAAI,IAAK,GAE7D,IAAI4K,EAAIxjB,KAAKg6B,EAAE,GACXvW,EAAIzjB,KAAKg6B,EAAE,GACXjZ,EAAI/gB,KAAKg6B,EAAE,GACX7R,EAAInoB,KAAKg6B,EAAE,GACXvL,EAAIzuB,KAAKg6B,EAAE,GAEf,IAAKphB,EAAI,EAAGA,EAAI8kB,EAAE33B,OAAQ6S,IAAK,CAC7B,IAAIiR,KAAOjR,EAAI,IACXwe,EAAIqrE,EAAQhB,EAAOj+E,EAAG,GAAIk/E,EAAK74E,EAAGpG,EAAG1C,EAAGoH,GAAIsG,EAAGiP,EAAE9kB,GAAI+pF,EAAO94E,IAChE4E,EAAItG,EACJA,EAAIpH,EACJA,EAAI0gF,EAAOh+E,EAAG,IACdA,EAAID,EACJA,EAAI4T,EAGNp3B,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAIxW,GAC7BxjB,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAIvW,GAC7BzjB,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAIjZ,GAC7B/gB,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAI7R,GAC7BnoB,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAIvL,IAG/Bg5B,EAAKjlD,UAAU2+F,QAAU,SAAgB3/E,GACvC,MAAY,QAARA,EACKy+E,EAAMqC,QAAQtiG,KAAKg6B,EAAG,OAEtBimE,EAAMsC,QAAQviG,KAAKg6B,EAAG,sCCtEjC,IAAIimE,EAAQ,EAAQ,OAChBzvD,EAAS,EAAQ,OAErB,SAASkX,IACP,KAAM1nD,gBAAgB0nD,GACpB,OAAO,IAAIA,EAEblX,EAAO9tC,KAAK1C,MACZA,KAAKg6B,EAAI,CACP,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,YAExCimE,EAAM6B,SAASp6C,EAAQlX,GACvBw7B,EAAO5sE,QAAUsoD,EAEjBA,EAAOzY,UAAY,IACnByY,EAAOg5C,QAAU,IACjBh5C,EAAOi5C,aAAe,IACtBj5C,EAAOk5C,UAAY,GAEnBl5C,EAAOllD,UAAU2+F,QAAU,SAAgB3/E,GAEzC,MAAY,QAARA,EACKy+E,EAAMqC,QAAQtiG,KAAKg6B,EAAE3W,MAAM,EAAG,GAAI,OAElC48E,EAAMsC,QAAQviG,KAAKg6B,EAAE3W,MAAM,EAAG,GAAI,sCCzB7C,IAAI48E,EAAQ,EAAQ,OAChBC,EAAS,EAAQ,OACjBsC,EAAY,EAAQ,OACpBlC,EAAS,EAAQ,OAEjBoB,EAAQzB,EAAMyB,MACdE,EAAU3B,EAAM2B,QAChBa,EAAUxC,EAAMwC,QAChBG,EAAOJ,EAAUI,KACjBC,EAAQL,EAAUK,MAClBC,EAASN,EAAUM,OACnBC,EAASP,EAAUO,OACnBC,EAASR,EAAUQ,OACnBC,EAAST,EAAUS,OAEnB1C,EAAYL,EAAOK,UAEnB2C,EAAW,CACb,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,YAGtC,SAAS1yD,IACP,KAAMxwC,gBAAgBwwC,GACpB,OAAO,IAAIA,EAEb+vD,EAAU79F,KAAK1C,MACfA,KAAKg6B,EAAI,CACP,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,YAEtCh6B,KAAK4B,EAAIshG,EACTljG,KAAK09B,EAAI,IAAI5hB,MAAM,IAErBmkF,EAAM6B,SAAStxD,EAAQ+vD,GACvBv0B,EAAO5sE,QAAUoxC,EAEjBA,EAAOvB,UAAY,IACnBuB,EAAOkwD,QAAU,IACjBlwD,EAAOmwD,aAAe,IACtBnwD,EAAOowD,UAAY,GAEnBpwD,EAAOhuC,UAAUy+F,QAAU,SAAiB3+E,EAAKomB,GAG/C,IAFA,IAAIhL,EAAI19B,KAAK09B,EAEJ9kB,EAAI,EAAGA,EAAI,GAAIA,IACtB8kB,EAAE9kB,GAAK0J,EAAIomB,EAAQ9vB,GACrB,KAAOA,EAAI8kB,EAAE33B,OAAQ6S,IACnB8kB,EAAE9kB,GAAKgpF,EAAQqB,EAAOvlE,EAAE9kB,EAAI,IAAK8kB,EAAE9kB,EAAI,GAAIoqF,EAAOtlE,EAAE9kB,EAAI,KAAM8kB,EAAE9kB,EAAI,KAEtE,IAAI4K,EAAIxjB,KAAKg6B,EAAE,GACXvW,EAAIzjB,KAAKg6B,EAAE,GACXjZ,EAAI/gB,KAAKg6B,EAAE,GACX7R,EAAInoB,KAAKg6B,EAAE,GACXvL,EAAIzuB,KAAKg6B,EAAE,GACXS,EAAIz6B,KAAKg6B,EAAE,GACXU,EAAI16B,KAAKg6B,EAAE,GACXA,EAAIh6B,KAAKg6B,EAAE,GAGf,IADAsmE,EAAOtgG,KAAK4B,EAAEmE,SAAW23B,EAAE33B,QACtB6S,EAAI,EAAGA,EAAI8kB,EAAE33B,OAAQ6S,IAAK,CAC7B,IAAIuqF,EAAKV,EAAQzoE,EAAG+oE,EAAOt0E,GAAIm0E,EAAKn0E,EAAGgM,EAAGC,GAAI16B,KAAK4B,EAAEgX,GAAI8kB,EAAE9kB,IACvDwqF,EAAK1B,EAAMoB,EAAOt/E,GAAIq/E,EAAMr/E,EAAGC,EAAG1C,IACtCiZ,EAAIU,EACJA,EAAID,EACJA,EAAIhM,EACJA,EAAIizE,EAAMv5E,EAAGg7E,GACbh7E,EAAIpH,EACJA,EAAI0C,EACJA,EAAID,EACJA,EAAIk+E,EAAMyB,EAAIC,GAGhBpjG,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAIxW,GAC7BxjB,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAIvW,GAC7BzjB,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAIjZ,GAC7B/gB,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAI7R,GAC7BnoB,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAIvL,GAC7BzuB,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAIS,GAC7Bz6B,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAIU,GAC7B16B,KAAKg6B,EAAE,GAAK0nE,EAAM1hG,KAAKg6B,EAAE,GAAIA,IAG/BwW,EAAOhuC,UAAU2+F,QAAU,SAAgB3/E,GACzC,MAAY,QAARA,EACKy+E,EAAMqC,QAAQtiG,KAAKg6B,EAAG,OAEtBimE,EAAMsC,QAAQviG,KAAKg6B,EAAG,sCCrGjC,IAAIimE,EAAQ,EAAQ,OAEhBtvD,EAAS,EAAQ,OAErB,SAASG,IACP,KAAM9wC,gBAAgB8wC,GACpB,OAAO,IAAIA,EAEbH,EAAOjuC,KAAK1C,MACZA,KAAKg6B,EAAI,CACP,WAAY,WACZ,WAAY,UACZ,WAAY,UACZ,UAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,YAEhBimE,EAAM6B,SAAShxD,EAAQH,GACvBq7B,EAAO5sE,QAAU0xC,EAEjBA,EAAO7B,UAAY,KACnB6B,EAAO4vD,QAAU,IACjB5vD,EAAO6vD,aAAe,IACtB7vD,EAAO8vD,UAAY,IAEnB9vD,EAAOtuC,UAAU2+F,QAAU,SAAgB3/E,GACzC,MAAY,QAARA,EACKy+E,EAAMqC,QAAQtiG,KAAKg6B,EAAE3W,MAAM,EAAG,IAAK,OAEnC48E,EAAMsC,QAAQviG,KAAKg6B,EAAE3W,MAAM,EAAG,IAAK,sCC/B9C,IAAI48E,EAAQ,EAAQ,OAChBC,EAAS,EAAQ,OACjBI,EAAS,EAAQ,OAEjB+C,EAAYpD,EAAMoD,UAClBC,EAAYrD,EAAMqD,UAClBC,EAAWtD,EAAMsD,SACjBC,EAAWvD,EAAMuD,SACjBC,EAAQxD,EAAMwD,MACdC,EAAWzD,EAAMyD,SACjBC,EAAW1D,EAAM0D,SACjBC,EAAa3D,EAAM2D,WACnBC,EAAa5D,EAAM4D,WACnBC,EAAa7D,EAAM6D,WACnBC,EAAa9D,EAAM8D,WAEnBxD,EAAYL,EAAOK,UAEnByD,EAAW,CACb,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,UAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,YAGtC,SAASrzD,IACP,KAAM3wC,gBAAgB2wC,GACpB,OAAO,IAAIA,EAEb4vD,EAAU79F,KAAK1C,MACfA,KAAKg6B,EAAI,CACP,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,UACZ,UAAY,WACZ,WAAY,WACdh6B,KAAK4B,EAAIoiG,EACThkG,KAAK09B,EAAI,IAAI5hB,MAAM,KAyIrB,SAASmoF,EAAQC,EAAIC,EAAIC,EAAIC,EAAIC,GAC/B,IAAIntE,EAAK+sE,EAAKE,GAASF,EAAMI,EAG7B,OAFIntE,EAAI,IACNA,GAAK,YACAA,EAGT,SAASotE,EAAQL,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GACnC,IAAIrtE,EAAKgtE,EAAKE,GAASF,EAAMK,EAG7B,OAFIrtE,EAAI,IACNA,GAAK,YACAA,EAGT,SAASstE,EAASP,EAAIC,EAAIC,EAAIC,EAAIC,GAChC,IAAIntE,EAAK+sE,EAAKE,EAAOF,EAAKI,EAAOF,EAAKE,EAGtC,OAFIntE,EAAI,IACNA,GAAK,YACAA,EAGT,SAASutE,EAASR,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GACpC,IAAIrtE,EAAKgtE,EAAKE,EAAOF,EAAKK,EAAOH,EAAKG,EAGtC,OAFIrtE,EAAI,IACNA,GAAK,YACAA,EAGT,SAASwtE,EAAUT,EAAIC,GACrB,IAIIhtE,EAJQksE,EAAUa,EAAIC,EAAI,IAClBd,EAAUc,EAAID,EAAI,GAClBb,EAAUc,EAAID,EAAI,GAK9B,OAFI/sE,EAAI,IACNA,GAAK,YACAA,EAGT,SAASytE,EAAUV,EAAIC,GACrB,IAIIhtE,EAJQmsE,EAAUY,EAAIC,EAAI,IAClBb,EAAUa,EAAID,EAAI,GAClBZ,EAAUa,EAAID,EAAI,GAK9B,OAFI/sE,EAAI,IACNA,GAAK,YACAA,EAcT,SAAS0tE,EAAUX,EAAIC,GACrB,IAIIhtE,EAJQmsE,EAAUY,EAAIC,EAAI,IAClBb,EAAUY,EAAIC,EAAI,IAClBb,EAAUa,EAAID,EAAI,GAK9B,OAFI/sE,EAAI,IACNA,GAAK,YACAA,EAGT,SAAS2tE,EAAUZ,EAAIC,GACrB,IAIIhtE,EAJQksE,EAAUa,EAAIC,EAAI,GAClBd,EAAUa,EAAIC,EAAI,GAClBZ,EAASW,EAAIC,EAAI,GAK7B,OAFIhtE,EAAI,IACNA,GAAK,YACAA,EAGT,SAAS4tE,EAAUb,EAAIC,GACrB,IAIIhtE,EAJQmsE,EAAUY,EAAIC,EAAI,GAClBb,EAAUY,EAAIC,EAAI,GAClBX,EAASU,EAAIC,EAAI,GAK7B,OAFIhtE,EAAI,IACNA,GAAK,YACAA,EAcT,SAAS6tE,EAAUd,EAAIC,GACrB,IAIIhtE,EAJQmsE,EAAUY,EAAIC,EAAI,IAClBb,EAAUa,EAAID,EAAI,IAClBV,EAASU,EAAIC,EAAI,GAK7B,OAFIhtE,EAAI,IACNA,GAAK,YACAA,EAxPT8oE,EAAM6B,SAASnxD,EAAQ4vD,GACvBv0B,EAAO5sE,QAAUuxC,EAEjBA,EAAO1B,UAAY,KACnB0B,EAAO+vD,QAAU,IACjB/vD,EAAOgwD,aAAe,IACtBhwD,EAAOiwD,UAAY,IAEnBjwD,EAAOnuC,UAAUyiG,cAAgB,SAAuB3iF,EAAKomB,GAI3D,IAHA,IAAIhL,EAAI19B,KAAK09B,EAGJ9kB,EAAI,EAAGA,EAAI,GAAIA,IACtB8kB,EAAE9kB,GAAK0J,EAAIomB,EAAQ9vB,GACrB,KAAOA,EAAI8kB,EAAE33B,OAAQ6S,GAAK,EAAG,CAC3B,IAAIssF,GAsNWhB,EAtNOxmE,EAAE9kB,EAAI,GAsNTurF,EAtNazmE,EAAE9kB,EAAI,GA2NpCue,OAAAA,GAAAA,EAJQksE,EAAUa,EAAIC,EAAI,IAClBd,EAAUc,EAAID,EAAI,IAClBX,EAASW,EAAIC,EAAI,IAGrB,IACNhtE,GAAK,YACAA,GA7NDguE,EAAQH,EAAUtnE,EAAE9kB,EAAI,GAAI8kB,EAAE9kB,EAAI,IAClCwsF,EAAQ1nE,EAAE9kB,EAAI,IACdysF,EAAQ3nE,EAAE9kB,EAAI,IACd0sF,EAAQR,EAAUpnE,EAAE9kB,EAAI,IAAK8kB,EAAE9kB,EAAI,KACnC2sF,EAAQR,EAAUrnE,EAAE9kB,EAAI,IAAK8kB,EAAE9kB,EAAI,KACnC4sF,EAAQ9nE,EAAE9kB,EAAI,IACd6sF,EAAQ/nE,EAAE9kB,EAAI,IAElB8kB,EAAE9kB,GAAKgrF,EACLsB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,GACT/nE,EAAE9kB,EAAI,GAAKirF,EACTqB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,GAoMb,IAAmBvB,EAAIC,EAKjBhtE,GArMNwZ,EAAOnuC,UAAUy+F,QAAU,SAAiB3+E,EAAKomB,GAC/C1oC,KAAKilG,cAAc3iF,EAAKomB,GAExB,IAiJiBw7D,EAAIC,EAKjBhtE,EAtJAuG,EAAI19B,KAAK09B,EAETgoE,EAAK1lG,KAAKg6B,EAAE,GACZ2rE,EAAK3lG,KAAKg6B,EAAE,GACZ4rE,EAAK5lG,KAAKg6B,EAAE,GACZ6rE,EAAK7lG,KAAKg6B,EAAE,GACZwyC,EAAKxsE,KAAKg6B,EAAE,GACZwvD,EAAKxpF,KAAKg6B,EAAE,GACZ8rE,EAAK9lG,KAAKg6B,EAAE,GACZ+rE,EAAK/lG,KAAKg6B,EAAE,GACZgsE,EAAKhmG,KAAKg6B,EAAE,GACZisE,EAAKjmG,KAAKg6B,EAAE,GACZksE,EAAKlmG,KAAKg6B,EAAE,IACZmsE,EAAKnmG,KAAKg6B,EAAE,IACZosE,EAAKpmG,KAAKg6B,EAAE,IACZqsE,EAAKrmG,KAAKg6B,EAAE,IACZssE,EAAKtmG,KAAKg6B,EAAE,IACZusE,EAAKvmG,KAAKg6B,EAAE,IAEhBsmE,EAAOtgG,KAAK4B,EAAEmE,SAAW23B,EAAE33B,QAC3B,IAAK,IAAI6S,EAAI,EAAGA,EAAI8kB,EAAE33B,OAAQ6S,GAAK,EAAG,CACpC,IAAIssF,EAAQoB,EACRnB,EAAQoB,EACRnB,GA+HFjuE,OAAAA,GAAAA,EAJQksE,EADKa,EA1HO8B,EA0HH7B,EA1HO8B,EA2HE,IAClB5C,EAAUa,EAAIC,EAAI,IAClBd,EAAUc,EAAID,EAAI,IAGtB,IACN/sE,GAAK,YACAA,GAjIDkuE,EAAQR,EAAUmB,EAAIC,GACtBX,EAAQrB,EAAQ+B,EAAIC,EAAIC,EAAIC,EAAIC,GAChCb,EAAQhB,EAAQyB,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACpCb,EAAQxlG,KAAK4B,EAAEgX,GACf6sF,EAAQzlG,KAAK4B,EAAEgX,EAAI,GACnB4tF,EAAQ9oE,EAAE9kB,GACV6tF,EAAQ/oE,EAAE9kB,EAAI,GAEd8tF,EAAQ5C,EACVoB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPe,EAAOC,GACLE,EAAQ5C,EACVmB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPe,EAAOC,GAETvB,EAAQP,EAAUe,EAAIC,GACtBR,EAAQP,EAAUc,EAAIC,GACtBP,EAAQX,EAASiB,EAAIC,EAAIC,EAAIC,EAAIr5B,GACjC64B,EAAQX,EAASgB,EAAIC,EAAIC,EAAIC,EAAIr5B,EAAIgd,GAErC,IAAIod,EAAQlD,EAASwB,EAAOC,EAAOC,EAAOC,GACtCwB,EAAQlD,EAASuB,EAAOC,EAAOC,EAAOC,GAE1CiB,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKtC,EAASoC,EAAIC,EAAIW,EAAOC,GAC7BV,EAAKtC,EAASoC,EAAIA,EAAIW,EAAOC,GAE7Bb,EAAKt5B,EACLu5B,EAAKvc,EAELhd,EAAKo5B,EACLpc,EAAKqc,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKhC,EAASgD,EAAOC,EAAOC,EAAOC,GACnClB,EAAKhC,EAAS+C,EAAOC,EAAOC,EAAOC,GAGrCpD,EAAMzjG,KAAKg6B,EAAG,EAAG0rE,EAAIC,GACrBlC,EAAMzjG,KAAKg6B,EAAG,EAAG4rE,EAAIC,GACrBpC,EAAMzjG,KAAKg6B,EAAG,EAAGwyC,EAAIgd,GACrBia,EAAMzjG,KAAKg6B,EAAG,EAAG8rE,EAAIC,GACrBtC,EAAMzjG,KAAKg6B,EAAG,EAAGgsE,EAAIC,GACrBxC,EAAMzjG,KAAKg6B,EAAG,GAAIksE,EAAIC,GACtB1C,EAAMzjG,KAAKg6B,EAAG,GAAIosE,EAAIC,GACtB5C,EAAMzjG,KAAKg6B,EAAG,GAAIssE,EAAIC,IAGxB51D,EAAOnuC,UAAU2+F,QAAU,SAAgB3/E,GACzC,MAAY,QAARA,EACKy+E,EAAMqC,QAAQtiG,KAAKg6B,EAAG,OAEtBimE,EAAMsC,QAAQviG,KAAKg6B,EAAG,sCClNjC,IACI8sE,EADQ,EAAQ,OACDA,OAYnB,SAASlE,EAAK30F,EAAGqf,EAAGqQ,GAClB,OAAQ1vB,EAAIqf,GAAQrf,EAAK0vB,EAI3B,SAASklE,EAAM50F,EAAGqf,EAAGqQ,GACnB,OAAQ1vB,EAAIqf,EAAMrf,EAAI0vB,EAAMrQ,EAAIqQ,EAIlC,SAASopE,EAAI94F,EAAGqf,EAAGqQ,GACjB,OAAO1vB,EAAIqf,EAAIqQ,EAbjBv+B,EAAQsjG,KARR,SAAc74E,EAAG5b,EAAGqf,EAAGqQ,GACrB,OAAU,IAAN9T,EACK+4E,EAAK30F,EAAGqf,EAAGqQ,GACV,IAAN9T,GAAiB,IAANA,EACNk9E,EAAI94F,EAAGqf,EAAGqQ,GACT,IAAN9T,EACKg5E,EAAM50F,EAAGqf,EAAGqQ,QADrB,GAQFv+B,EAAQwjG,KAAOA,EAKfxjG,EAAQyjG,MAAQA,EAKhBzjG,EAAQ2nG,IAAMA,EAKd3nG,EAAQ0jG,OAHR,SAAgB70F,GACd,OAAO64F,EAAO74F,EAAG,GAAK64F,EAAO74F,EAAG,IAAM64F,EAAO74F,EAAG,KAOlD7O,EAAQ2jG,OAHR,SAAgB90F,GACd,OAAO64F,EAAO74F,EAAG,GAAK64F,EAAO74F,EAAG,IAAM64F,EAAO74F,EAAG,KAOlD7O,EAAQ4jG,OAHR,SAAgB/0F,GACd,OAAO64F,EAAO74F,EAAG,GAAK64F,EAAO74F,EAAG,IAAOA,IAAM,GAO/C7O,EAAQ6jG,OAHR,SAAgBh1F,GACd,OAAO64F,EAAO74F,EAAG,IAAM64F,EAAO74F,EAAG,IAAOA,IAAM,kCC5ChD,IAAIqyF,EAAS,EAAQ,OACjBwB,EAAW,EAAQ,OAIvB,SAASkF,EAAgB1kF,EAAK1J,GAC5B,OAAqC,QAAZ,MAApB0J,EAAItB,WAAWpI,OAGhBA,EAAI,GAAKA,EAAI,GAAK0J,EAAIvc,SAGkB,QAAZ,MAAxBuc,EAAItB,WAAWpI,EAAI,IA0D7B,SAASquF,EAAM/rE,GAKb,OAJWA,IAAM,GACLA,IAAM,EAAK,MACXA,GAAK,EAAK,UACN,IAAJA,IAAa,MACV,EAgBjB,SAASgsE,EAAMC,GACb,OAAoB,IAAhBA,EAAKphG,OACA,IAAMohG,EAENA,EAIX,SAASC,EAAMD,GACb,OAAoB,IAAhBA,EAAKphG,OACA,IAAMohG,EACU,IAAhBA,EAAKphG,OACL,KAAOohG,EACS,IAAhBA,EAAKphG,OACL,MAAQohG,EACQ,IAAhBA,EAAKphG,OACL,OAASohG,EACO,IAAhBA,EAAKphG,OACL,QAAUohG,EACM,IAAhBA,EAAKphG,OACL,SAAWohG,EACK,IAAhBA,EAAKphG,OACL,UAAYohG,EAEZA,EAhHX/nG,EAAQ0iG,SAAWA,EAyDnB1iG,EAAQuK,QA7CR,SAAiB2Y,EAAKd,GACpB,GAAI1F,MAAMC,QAAQuG,GAChB,OAAOA,EAAIe,QACb,IAAKf,EACH,MAAO,GACT,IAAI4D,EAAM,GACV,GAAmB,iBAAR5D,EACT,GAAKd,GAyBE,GAAY,QAARA,EAIT,KAHAc,EAAMA,EAAI7B,QAAQ,eAAgB,KAC1B1a,OAAS,GAAM,IACrBuc,EAAM,IAAMA,GACT1J,EAAI,EAAGA,EAAI0J,EAAIvc,OAAQ6S,GAAK,EAC/BsN,EAAIzgB,KAAKuc,SAASM,EAAI1J,GAAK0J,EAAI1J,EAAI,GAAI,UAxBzC,IADA,IAAIrW,EAAI,EACCqW,EAAI,EAAGA,EAAI0J,EAAIvc,OAAQ6S,IAAK,CACnC,IAAImI,EAAIuB,EAAItB,WAAWpI,GACnBmI,EAAI,IACNmF,EAAI3jB,KAAOwe,EACFA,EAAI,MACbmF,EAAI3jB,KAAQwe,GAAK,EAAK,IACtBmF,EAAI3jB,KAAY,GAAJwe,EAAU,KACbimF,EAAgB1kF,EAAK1J,IAC9BmI,EAAI,QAAgB,KAAJA,IAAe,KAA6B,KAAtBuB,EAAItB,aAAapI,IACvDsN,EAAI3jB,KAAQwe,GAAK,GAAM,IACvBmF,EAAI3jB,KAASwe,GAAK,GAAM,GAAM,IAC9BmF,EAAI3jB,KAASwe,GAAK,EAAK,GAAM,IAC7BmF,EAAI3jB,KAAY,GAAJwe,EAAU,MAEtBmF,EAAI3jB,KAAQwe,GAAK,GAAM,IACvBmF,EAAI3jB,KAASwe,GAAK,EAAK,GAAM,IAC7BmF,EAAI3jB,KAAY,GAAJwe,EAAU,UAW5B,IAAKnI,EAAI,EAAGA,EAAI0J,EAAIvc,OAAQ6S,IAC1BsN,EAAItN,GAAc,EAAT0J,EAAI1J,GAEjB,OAAOsN,GAUT9mB,EAAQioG,MANR,SAAe/kF,GAEb,IADA,IAAI4D,EAAM,GACDtN,EAAI,EAAGA,EAAI0J,EAAIvc,OAAQ6S,IAC9BsN,GAAOghF,EAAM5kF,EAAI1J,GAAG/K,SAAS,KAC/B,OAAOqY,GAWT9mB,EAAQ6nG,MAAQA,EAYhB7nG,EAAQkjG,QAVR,SAAiBhgF,EAAKu+E,GAEpB,IADA,IAAI36E,EAAM,GACDtN,EAAI,EAAGA,EAAI0J,EAAIvc,OAAQ6S,IAAK,CACnC,IAAIsiB,EAAI5Y,EAAI1J,GACG,WAAXioF,IACF3lE,EAAI+rE,EAAM/rE,IACZhV,GAAOkhF,EAAMlsE,EAAErtB,SAAS,KAE1B,OAAOqY,GAUT9mB,EAAQ8nG,MAAQA,EAoBhB9nG,EAAQgoG,MAAQA,EAgBhBhoG,EAAQ4hG,OAdR,SAAgB1+E,EAAKomB,EAAOkiD,EAAKiW,GAC/B,IAAIn9E,EAAMknE,EAAMliD,EAChB43D,EAAO58E,EAAM,GAAM,GAEnB,IADA,IAAIwC,EAAM,IAAIpK,MAAM4H,EAAM,GACjB9K,EAAI,EAAGhX,EAAI8mC,EAAO9vB,EAAIsN,EAAIngB,OAAQ6S,IAAKhX,GAAK,EAAG,CACtD,IAAIs5B,EAEFA,EADa,QAAX2lE,EACGv+E,EAAI1gB,IAAM,GAAO0gB,EAAI1gB,EAAI,IAAM,GAAO0gB,EAAI1gB,EAAI,IAAM,EAAK0gB,EAAI1gB,EAAI,GAEjE0gB,EAAI1gB,EAAI,IAAM,GAAO0gB,EAAI1gB,EAAI,IAAM,GAAO0gB,EAAI1gB,EAAI,IAAM,EAAK0gB,EAAI1gB,GACxEskB,EAAItN,GAAKsiB,IAAM,EAEjB,OAAOhV,GAsBT9mB,EAAQmjG,QAlBR,SAAiBjgF,EAAKu+E,GAEpB,IADA,IAAI36E,EAAM,IAAIpK,MAAmB,EAAbwG,EAAIvc,QACf6S,EAAI,EAAGhX,EAAI,EAAGgX,EAAI0J,EAAIvc,OAAQ6S,IAAKhX,GAAK,EAAG,CAClD,IAAID,EAAI2gB,EAAI1J,GACG,QAAXioF,GACF36E,EAAItkB,GAAKD,IAAM,GACfukB,EAAItkB,EAAI,GAAMD,IAAM,GAAM,IAC1BukB,EAAItkB,EAAI,GAAMD,IAAM,EAAK,IACzBukB,EAAItkB,EAAI,GAAS,IAAJD,IAEbukB,EAAItkB,EAAI,GAAKD,IAAM,GACnBukB,EAAItkB,EAAI,GAAMD,IAAM,GAAM,IAC1BukB,EAAItkB,EAAI,GAAMD,IAAM,EAAK,IACzBukB,EAAItkB,GAAS,IAAJD,GAGb,OAAOukB,GAOT9mB,EAAQ0nG,OAHR,SAAgB5rE,EAAGzX,GACjB,OAAQyX,IAAMzX,EAAMyX,GAAM,GAAKzX,GAOjCrkB,EAAQqiG,OAHR,SAAgBvmE,EAAGzX,GACjB,OAAQyX,GAAKzX,EAAMyX,IAAO,GAAKzX,GAOjCrkB,EAAQsiG,MAHR,SAAel+E,EAAGC,GAChB,OAAQD,EAAIC,IAAO,GAOrBrkB,EAAQuiG,QAHR,SAAiBn+E,EAAGC,EAAG1C,GACrB,OAAQyC,EAAIC,EAAI1C,IAAO,GAOzB3hB,EAAQwiG,QAHR,SAAiBp+E,EAAGC,EAAG1C,EAAGoH,GACxB,OAAQ3E,EAAIC,EAAI1C,EAAIoH,IAAO,GAO7B/oB,EAAQqjG,QAHR,SAAiBj/E,EAAGC,EAAG1C,EAAGoH,EAAGsG,GAC3B,OAAQjL,EAAIC,EAAI1C,EAAIoH,EAAIsG,IAAO,GAajCrvB,EAAQqkG,MATR,SAAe9kF,EAAKuwE,EAAKwW,EAAIC,GAC3B,IAAIC,EAAKjnF,EAAIuwE,GAGTd,EAAMuX,EAFDhnF,EAAIuwE,EAAM,KAEI,EACnBf,GAAMC,EAAKuX,EAAK,EAAI,GAAKD,EAAKE,EAClCjnF,EAAIuwE,GAAOf,IAAO,EAClBxvE,EAAIuwE,EAAM,GAAKd,GASjBhvF,EAAQskG,SALR,SAAkBgC,EAAIC,EAAIC,EAAIC,GAG5B,OAFUF,EAAKE,IAAQ,EACRF,EAAK,EAAI,GAAKD,EAAKE,IACpB,GAQhBxmG,EAAQukG,SAJR,SAAkB+B,EAAIC,EAAIC,EAAIC,GAE5B,OADSF,EAAKE,IACA,GAiBhBzmG,EAAQwkG,WAbR,SAAoB8B,EAAIC,EAAIC,EAAIC,EAAIr5B,EAAIgd,EAAIsc,EAAIC,GAC9C,IAAIuB,EAAQ,EACRlZ,EAAKuX,EAST,OAPA2B,IADAlZ,EAAMA,EAAKyX,IAAQ,GACLF,EAAK,EAAI,EAEvB2B,IADAlZ,EAAMA,EAAK5E,IAAQ,GACLA,EAAK,EAAI,EAIdkc,EAAKE,EAAKp5B,EAAKs5B,GAFxBwB,IADAlZ,EAAMA,EAAK2X,IAAQ,GACLA,EAAK,EAAI,KAGT,GAQhB3mG,EAAQykG,WAJR,SAAoB6B,EAAIC,EAAIC,EAAIC,EAAIr5B,EAAIgd,EAAIsc,EAAIC,GAE9C,OADSJ,EAAKE,EAAKrc,EAAKuc,IACV,GAmBhB3mG,EAAQ0kG,WAfR,SAAoB4B,EAAIC,EAAIC,EAAIC,EAAIr5B,EAAIgd,EAAIsc,EAAIC,EAAIC,EAAIC,GACtD,IAAIqB,EAAQ,EACRlZ,EAAKuX,EAWT,OATA2B,IADAlZ,EAAMA,EAAKyX,IAAQ,GACLF,EAAK,EAAI,EAEvB2B,IADAlZ,EAAMA,EAAK5E,IAAQ,GACLA,EAAK,EAAI,EAEvB8d,IADAlZ,EAAMA,EAAK2X,IAAQ,GACLA,EAAK,EAAI,EAIdL,EAAKE,EAAKp5B,EAAKs5B,EAAKE,GAF7BsB,IADAlZ,EAAMA,EAAK6X,IAAQ,GACLA,EAAK,EAAI,KAGT,GAShB7mG,EAAQ2kG,WALR,SAAoB2B,EAAIC,EAAIC,EAAIC,EAAIr5B,EAAIgd,EAAIsc,EAAIC,EAAIC,EAAIC,GAGtD,OAFSN,EAAKE,EAAKrc,EAAKuc,EAAKE,IAEf,GAQhB7mG,EAAQikG,UAJR,SAAmBqC,EAAIC,EAAI3wC,GAEzB,OADS2wC,GAAO,GAAK3wC,EAAS0wC,IAAO1wC,KACxB,GAQf51D,EAAQkkG,UAJR,SAAmBoC,EAAIC,EAAI3wC,GAEzB,OADS0wC,GAAO,GAAK1wC,EAAS2wC,IAAO3wC,KACxB,GAOf51D,EAAQmkG,SAHR,SAAkBmC,EAAIC,EAAI3wC,GACxB,OAAO0wC,IAAO1wC,GAQhB51D,EAAQokG,SAJR,SAAkBkC,EAAIC,EAAI3wC,GAExB,OADS0wC,GAAO,GAAK1wC,EAAS2wC,IAAO3wC,KACxB,uCClRf,IACQk4I,EADJC,EAAantM,MAAQA,KAAKmtM,YACtBD,EAAgB,SAAU/kL,EAAG1E,GAI7B,OAHAypL,EAAgBhuM,OAAOgmC,gBAClB,CAAEC,UAAW,cAAgBrpB,OAAS,SAAUqM,EAAG1E,GAAK0E,EAAEgd,UAAY1hB,IACvE,SAAU0E,EAAG1E,GAAK,IAAK,IAAIlhB,KAAKkhB,EAAOvkB,OAAOsD,UAAUC,eAAeC,KAAK+gB,EAAGlhB,KAAI4lB,EAAE5lB,GAAKkhB,EAAElhB,KACzF2qM,EAAc/kL,EAAG1E,IAErB,SAAU0E,EAAG1E,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIvC,UAAU,uBAAyBf,OAAOsD,GAAK,iCAE7D,SAAS2pL,IAAOptM,KAAKP,YAAc0oB,EADnC+kL,EAAc/kL,EAAG1E,GAEjB0E,EAAE3lB,UAAkB,OAANihB,EAAavkB,OAAOuC,OAAOgiB,IAAM2pL,EAAG5qM,UAAYihB,EAAEjhB,UAAW,IAAI4qM,KAGnF5rM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEV0tI,EAAsBtvI,MAAQA,KAAKsvI,qBAAwBpwI,OAAOuC,OAAS,SAAUC,EAAGi5B,GACxFz7B,OAAOC,eAAeuC,EAAG,UAAW,CAAEU,YAAY,EAAM/C,MAAOs7B,KAC9D,SAASj5B,EAAGi5B,GACbj5B,EAAW,QAAIi5B,IAEf40G,EAAgBvvI,MAAQA,KAAKuvI,cAAiB,SAAU98F,GACxD,GAAIA,GAAOA,EAAIxwC,WAAY,OAAOwwC,EAClC,IAAInrC,EAAS,GACb,GAAW,MAAPmrC,EAAa,IAAK,IAAI7wC,KAAK6wC,EAAe,YAAN7wC,GAAmB1C,OAAOsD,UAAUC,eAAeC,KAAK+vC,EAAK7wC,IAAIJ,EAAgB8F,EAAQmrC,EAAK7wC,GAEtI,OADA0tI,EAAmBhoI,EAAQmrC,GACpBnrC,GAEPiwE,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQssP,UAAYtsP,EAAQusP,iBAAc,EAC1C,IAGIC,EAQAC,EAXArsB,EAAejoJ,EAAgB,EAAQ,QACvCu0K,EAAWv8G,EAAa,EAAQ,QAChC89D,EAAW,EAAQ,QAEvB,SAAWu+C,GACPA,EAAoBA,EAA2B,MAAI,GAAK,QACxDA,EAAoBA,EAA2B,MAAI,GAAK,QACxDA,EAAoBA,EAA2B,MAAI,GAAK,QACxDA,EAAoBA,EAA8B,SAAI,GAAK,WAC3DA,EAAoBA,EAAgC,WAAI,GAAK,aALjE,CAMGA,IAAwBA,EAAsB,KAEjD,SAAWC,GACPA,EAAwBA,EAAgC,OAAI,GAAK,SACjEA,EAAwBA,EAA8B,KAAI,GAAK,OAC/DA,EAAwBA,EAAiC,QAAI,GAAK,UAHtE,CAIGA,IAA4BA,EAA0B,KAEzD,IAAIF,EAA6B,SAAUp+C,GAOvC,SAASo+C,EAAY39O,EAAUqD,GAO3B,MALwB,iBAAbrD,IAEPqD,EADArD,OAAWlM,GAGPyrM,EAAO7qM,KAAK1C,KAAMgO,EAAUqD,IAAYrR,KA4EpD,OAxFAmtM,EAAUw+C,EAAap+C,GAevBo+C,EAAYnpP,UAAUy9H,MAAQ,WAC1B,IAAIh/G,EAAI6C,EACJk6M,EAAWC,EAAcC,EAAal+N,KAAKg8N,KAC/C,GAAKgC,EAAL,CAIA,IAAIG,EAAO,GACX,GAAsB,SAAlBH,EAAS96N,KAAiB,CAC1B,IAAIy6N,EAASK,EAASp5N,SACtBu5N,EAAKh4N,KAAO,OACZo4N,EAAiBJ,EAAM,KAAM,KAAMR,GACnCY,EAAiBJ,EAAM,QAAS,QAASR,GACzC,IAAI1uM,EAAO88N,EAAa,OAAQ9tB,EAAc,OAAQN,IAClD1uM,IACAkvM,EAAK5gC,KAAOtuK,GAEhBsvM,EAAiBJ,EAAM,cAAe,WAAYR,IAC9Cc,EAAUvqN,EAAM,UAAWypN,MAE3BQ,EAAKM,QAAU,IAAIj2N,KAAKi2N,IAE5BF,EAAiBJ,EAAM,SAAU,QAASR,GAAQ,GAClDQ,EAAKrpI,MAAQwrI,EAAY,QAAS3C,GAAQ33N,KAAI,SAAUy4I,GACpD,IAAIlsI,EAAQ,GACR3N,EAAW65I,EAAK75I,SACpB25N,EAAiBhsN,EAAO,KAAM,KAAM3N,GACpC25N,EAAiBhsN,EAAO,QAAS,QAAS3N,GAC1C,IAAIqqB,EAAO88N,EAAa,OAAQ9tB,EAAc,OAAQr5N,IAClDqqB,IACA1c,EAAMgrL,KAAOtuK,GAEjB,IAAIZ,EAAcna,EAAM,UAAWtP,IAAasP,EAAM,UAAWtP,GAC7DypB,IACA9b,EAAM8b,YAAcA,GAExB,IAAImwM,EAAUtqN,EAAM,UAAWtP,GAK/B,OAJI45N,IACAjsN,EAAMisN,QAAU,IAAIh2N,KAAKg2N,IAE7BjsN,EAAM8rN,MAAQC,EAAiB15N,GACxB2N,SAGV,CACD,IAMIksN,EANAd,EAAwH,QAA9G75M,EAA4D,QAAtD7C,EAAKg9M,EAAc,UAAWD,EAASp5N,iBAA8B,IAAPqc,OAAgB,EAASA,EAAGrc,gBAA6B,IAAPkf,EAAgBA,EAAK,GACzJq6M,EAAKh4N,KAAO63N,EAAS96N,KAAK+e,OAAO,EAAG,GACpCk8M,EAAKt7L,GAAK,GACV07L,EAAiBJ,EAAM,QAAS,QAASR,GACzCY,EAAiBJ,EAAM,OAAQ,OAAQR,GACvCY,EAAiBJ,EAAM,cAAe,cAAeR,IACjDc,EAAUvqN,EAAM,gBAAiBypN,MAEjCQ,EAAKM,QAAU,IAAIj2N,KAAKi2N,IAE5BF,EAAiBJ,EAAM,SAAU,iBAAkBR,GAAQ,GAC3DQ,EAAKrpI,MAAQwrI,EAAY,OAAQtC,EAASp5N,UAAUoB,KAAI,SAAUy4I,GAC9D,IAAIlsI,EAAQ,GACR3N,EAAW65I,EAAK75I,SACpB25N,EAAiBhsN,EAAO,KAAM,OAAQ3N,GACtC25N,EAAiBhsN,EAAO,QAAS,QAAS3N,GAC1C25N,EAAiBhsN,EAAO,OAAQ,OAAQ3N,GACxC25N,EAAiBhsN,EAAO,cAAe,cAAe3N,GACtD,IAAI45N,EAAUtqN,EAAM,UAAWtP,GAI/B,OAHI45N,IACAjsN,EAAMisN,QAAU,IAAIh2N,KAAKg2N,IAC7BjsN,EAAM8rN,MAAQC,EAAiB15N,GACxB2N,KAGfvS,KAAKm+N,KAAOA,EACZn+N,KAAKo8N,eAAe,WAnEhBp8N,KAAKo8N,eAAe,IAAI57N,MAAM,gCAqE/BmrP,EAzFqB,CA0F9BnsB,EAAajoM,SAEf,SAAS+mM,EAAiB1oF,GACtB,OAAO0qF,EAAY,gBAAiB1qF,GAAO5vI,KAAI,SAAU6mE,GACrD,IAAIwxJ,EAAQ,CACRS,OAAQjyJ,EAAKm5H,QAAQ84B,OACrBC,YAAalyJ,EAAKm5H,QAAQ+4B,WAuC9B,OArCIlyJ,EAAKm5H,QAAQviM,MACb46N,EAAM56N,IAAMopE,EAAKm5H,QAAQviM,KAEzBopE,EAAKm5H,QAAQgmD,WACb3tB,EAAM2tB,SAAWhqO,SAAS6qD,EAAKm5H,QAAQgmD,SAAU,KAEjDn/K,EAAKm5H,QAAQ7/L,OACbk4N,EAAMl4N,KAAO0mE,EAAKm5H,QAAQ7/L,MAE1B0mE,EAAKm5H,QAAQjzL,aACbsrN,EAAMtrN,WAAa85D,EAAKm5H,QACnBjzL,YAEL85D,EAAKm5H,QAAQimD,UACb5tB,EAAM4tB,QAAUjqO,SAAS6qD,EAAKm5H,QAAQimD,QAAS,KAE/Cp/K,EAAKm5H,QAAQkmD,YACb7tB,EAAM6tB,UAAYlqO,SAAS6qD,EAAKm5H,QAAQkmD,UAAW,KAEnDr/K,EAAKm5H,QAAQmmD,eACb9tB,EAAM8tB,aAAenqO,SAAS6qD,EAAKm5H,QAAQmmD,aAAc,KAEzDt/K,EAAKm5H,QAAQomD,WACb/tB,EAAM+tB,SAAWpqO,SAAS6qD,EAAKm5H,QAAQomD,SAAU,KAEjDv/K,EAAKm5H,QAAQqmD,WACbhuB,EAAMguB,SAAWrqO,SAAS6qD,EAAKm5H,QAAQqmD,SAAU,KAEjDx/K,EAAKm5H,QAAQn8J,SACbw0L,EAAMx0L,OAAS7nB,SAAS6qD,EAAKm5H,QAAQn8J,OAAQ,KAE7CgjC,EAAKm5H,QAAQp8J,QACby0L,EAAMz0L,MAAQ5nB,SAAS6qD,EAAKm5H,QAAQp8J,MAAO,KAE3CijC,EAAKm5H,QAAQ9hJ,OACbm6K,EAAMn6K,KAAO2oB,EAAKm5H,QAAQ9hJ,MAEvBm6K,KAGf,SAASiC,EAAYnB,EAASvpF,GAC1B,OAAOk2G,EAAS1tB,qBAAqBe,EAASvpF,GAAO,GAEzD,SAASqoF,EAAckB,EAASl6N,GAC5B,OAAO6mP,EAAS1tB,qBAAqBe,EAASl6N,GAAM,EAAM,GAAG,GAEjE,SAASiP,EAAMirN,EAASvpF,EAAO/jI,GAE3B,YADgB,IAAZA,IAAsBA,GAAU,GAC7Bi6O,EAASlqB,QAAQkqB,EAAS1tB,qBAAqBe,EAASvpF,EAAO/jI,EAAS,IAAIwyD,OAEvF,SAAS0nL,EAAa7oP,EAAM2pE,GACxB,OAAKA,EAGSA,EAAKm5H,QACJ9iM,GAHJ,KAKf,SAASq7N,EAAiBriL,EAAK6lH,EAAMuqF,EAAM12G,EAAO/jI,QAC9B,IAAZA,IAAsBA,GAAU,GACpC,IAAIo4E,EAAM/1E,EAAMo4O,EAAM12G,EAAO/jI,GACzBo4E,IACA/tC,EAAI6lH,GAAQ93E,GAEpB,SAASi0I,EAAY7+N,GACjB,MAAiB,QAAVA,GAA6B,SAAVA,GAA8B,YAAVA,EAvElDD,EAAQusP,YAAcA,EAqFtBvsP,EAAQssP,UANR,SAAmBvtB,EAAM9sN,QACL,IAAZA,IAAsBA,EAAU,CAAE2uL,SAAS,IAC/C,IAAI93G,EAAU,IAAIyjK,EAAYt6O,GAE9B,OADA,IAAIg8L,EAASjlH,OAAOF,EAAS72E,GAASu5E,IAAIuzI,GACnCj2I,EAAQi2I,0CCvOnB,IAAI5mJ,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgpF,YAAS,EACjB,IAAI08G,EAAcvtH,EAAgB,EAAQ,QACtCwtH,EAAW,IAAIv3L,IAAI,CACnB,QACA,SACA,WACA,SACA,SACA,WACA,aAEAw3L,EAAO,IAAIx3L,IAAI,CAAC,MAChB43L,EAAmB,CACnBmnD,GAAI,IAAI/+O,IAAI,CAAC,KAAM,KAAM,OACzBg/O,GAAI,IAAIh/O,IAAI,CAAC,OACbi/O,GAAI,IAAIj/O,IAAI,CAAC,QAAS,KAAM,OAC5BqB,KAAM,IAAIrB,IAAI,CAAC,OAAQ,OAAQ,WAC/Bk/O,GAAI,IAAIl/O,IAAI,CAAC,OACbjL,EAAGyiM,EACH2nD,GAAI3nD,EACJ4nD,GAAI5nD,EACJ6nD,GAAI7nD,EACJ8nD,GAAI9nD,EACJ+nD,GAAI/nD,EACJgoD,GAAIhoD,EACJxpD,OAAQupD,EACRvhM,MAAOuhM,EACPrhM,OAAQqhM,EACRkoD,OAAQloD,EACRmoD,SAAUnoD,EACVooD,SAAUpoD,EACVp7K,OAAQ,IAAInc,IAAI,CAAC,WACjB4/O,SAAU,IAAI5/O,IAAI,CAAC,WAAY,WAC/B6/O,GAAI,IAAI7/O,IAAI,CAAC,KAAM,OACnB81J,GAAI,IAAI91J,IAAI,CAAC,KAAM,OACnB8/O,QAAStoD,EACTuoD,QAASvoD,EACTwoD,MAAOxoD,EACPyoD,WAAYzoD,EACZ0oD,QAAS1oD,EACTyrB,IAAKzrB,EACLj/F,GAAIi/F,EACJ2oD,SAAU3oD,EACV4oD,WAAY5oD,EACZ6oD,OAAQ7oD,EACRz8G,OAAQy8G,EACRjuG,KAAMiuG,EACNnnL,OAAQmnL,EACR8oD,GAAI9oD,EACJxtC,KAAMwtC,EACN+oD,IAAK/oD,EACLgpD,GAAIhpD,EACJzuC,IAAKyuC,EACL+F,QAAS/F,EACT7xG,MAAO6xG,EACPipD,GAAIjpD,EACJrmK,GAAI,IAAInxB,IAAI,CAAC,KAAM,OACnB0gP,GAAI,IAAI1gP,IAAI,CAAC,KAAM,OACnB2gP,MAAO,IAAI3gP,IAAI,CAAC,QAAS,UACzB4gP,MAAO,IAAI5gP,IAAI,CAAC,QAAS,WAEzB63L,EAAe,IAAI73L,IAAI,CACvB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,QAEA83L,EAAyB,IAAI93L,IAAI,CAAC,OAAQ,QAC1C+3L,EAA0B,IAAI/3L,IAAI,CAClC,KACA,KACA,KACA,KACA,QACA,iBACA,gBACA,OACA,UAEAg4L,EAAY,QACZp9G,EAAwB,WACxB,SAASA,EAAOq9G,EAAKp0L,GAEjB,IAAI4P,EAAI6C,EAAI6qD,EAAIC,EAAI0Q,OADJ,IAAZjuE,IAAsBA,EAAU,IAGpCrR,KAAK0lM,WAAa,EAElB1lM,KAAK2lM,SAAW,KAChB3lM,KAAK6lM,QAAU,GACf7lM,KAAK8lM,WAAa,GAClB9lM,KAAK+lM,YAAc,GACnB/lM,KAAKgmM,QAAU,KACfhmM,KAAK+mF,MAAQ,GACb/mF,KAAKimM,eAAiB,GACtBjmM,KAAKqR,QAAUA,EACfrR,KAAKylM,IAAMA,MAAAA,EAAiCA,EAAM,GAClDzlM,KAAKkmM,kBAAqD,QAAhCjlL,EAAK5P,EAAQ80L,qBAAkC,IAAPllL,EAAgBA,GAAM5P,EAAQ2uL,QAChGhgM,KAAKomM,wBAC0C,QAA1CtiL,EAAKzS,EAAQ+0L,+BAA4C,IAAPtiL,EAAgBA,GAAMzS,EAAQ2uL,QACrFhgM,KAAKqmM,UAAY,IAAkC,QAA5B13H,EAAKt9D,EAAQi1L,iBAA8B,IAAP33H,EAAgBA,EAAKm2H,EAAYvtK,SAASv3B,KAAKqR,QAASrR,MAC3E,QAAvCs/E,GAAM1Q,EAAK5uE,KAAKylM,KAAKc,oBAAiC,IAAPjnH,GAAyBA,EAAG58E,KAAKksE,EAAI5uE,MAkQzF,OAhQAooF,EAAO5lF,UAAU6rP,eAAiB,SAAUC,GAClB,OAAlBtuP,KAAK2lM,SACD3lM,KAAKqmM,UAAUgD,cAAgBilD,EAC/BtuP,KAAK0lM,WAAa,EAGlB1lM,KAAK0lM,WAAa1lM,KAAKqmM,UAAUgD,aAAeilD,EAIpDtuP,KAAK0lM,WAAa1lM,KAAK2lM,SAAW,EAEtC3lM,KAAK2lM,SAAW3lM,KAAKqmM,UAAUG,oBAGnCp+G,EAAO5lF,UAAUqgM,OAAS,SAAU35L,GAChC,IAAI+X,EAAI6C,EACR9jB,KAAKquP,eAAe,GACpBruP,KAAK2lM,WAC6B,QAAjC7hL,GAAM7C,EAAKjhB,KAAKylM,KAAK5C,cAA2B,IAAP/+K,GAAyBA,EAAGphB,KAAKue,EAAI/X,IAEnFk/E,EAAO5lF,UAAUkkM,cAAgB,SAAUxjM,GACvC,IAAI+d,EAAI6C,EAKR,GAJI9jB,KAAKkmM,oBACLhjM,EAAOA,EAAKwwB,eAEhB1zB,KAAK6lM,QAAU3iM,GACVlD,KAAKqR,QAAQ2uL,SACd9gM,OAAOsD,UAAUC,eAAeC,KAAK0iM,EAAkBliM,GAEvD,IADA,IAAI+iG,OAAK,EACFjmG,KAAK+mF,MAAMhhF,OAAS,GACvBq/L,EAAiBliM,GAAMgF,IAAK+9F,EAAKjmG,KAAK+mF,MAAM/mF,KAAK+mF,MAAMhhF,OAAS,KAChE/F,KAAK0iM,WAAWz8F,IAGpBjmG,KAAKqR,QAAQ2uL,SAAYqF,EAAan9L,IAAIhF,KAC1ClD,KAAK+mF,MAAMthF,KAAKvC,GACZoiM,EAAuBp9L,IAAIhF,GAC3BlD,KAAKimM,eAAexgM,MAAK,GAEpB8/L,EAAwBr9L,IAAIhF,IACjClD,KAAKimM,eAAexgM,MAAK,IAGQ,QAAxCqe,GAAM7C,EAAKjhB,KAAKylM,KAAKiB,qBAAkC,IAAP5iL,GAAyBA,EAAGphB,KAAKue,EAAI/d,GAClFlD,KAAKylM,IAAI7C,YACT5iM,KAAKgmM,QAAU,KAEvB59G,EAAO5lF,UAAUukM,aAAe,WAC5B,IAAI9lL,EAAI6C,EACR9jB,KAAKquP,eAAe,GAChBruP,KAAKgmM,UACgC,QAApCliL,GAAM7C,EAAKjhB,KAAKylM,KAAK7C,iBAA8B,IAAP9+K,GAAyBA,EAAGphB,KAAKue,EAAIjhB,KAAK6lM,QAAS7lM,KAAKgmM,SACrGhmM,KAAKgmM,QAAU,OAEdhmM,KAAKqR,QAAQ2uL,SACdhgM,KAAKylM,IAAI/C,YACT2C,EAAan9L,IAAIlI,KAAK6lM,UACtB7lM,KAAKylM,IAAI/C,WAAW1iM,KAAK6lM,SAE7B7lM,KAAK6lM,QAAU,IAEnBz9G,EAAO5lF,UAAUkgM,WAAa,SAAUx/L,GASpC,GARAlD,KAAKquP,eAAe,GAChBruP,KAAKkmM,oBACLhjM,EAAOA,EAAKwwB,gBAEZ4xK,EAAuBp9L,IAAIhF,IAC3BqiM,EAAwBr9L,IAAIhF,KAC5BlD,KAAKimM,eAAezjL,OAEpBxiB,KAAK+mF,MAAMhhF,SACV/F,KAAKqR,QAAQ2uL,SAAYqF,EAAan9L,IAAIhF,GAkBrClD,KAAKqR,QAAQ2uL,SAAqB,OAAT98L,GAA0B,MAATA,IAChDlD,KAAK0mM,cAAcxjM,GACnBlD,KAAKinM,uBApB8C,CACnD,IAAI/3G,EAAMlvF,KAAK+mF,MAAMjtD,YAAY52B,GACjC,IAAa,IAATgsF,EACA,GAAIlvF,KAAKylM,IAAI/C,WAET,IADAxzG,EAAMlvF,KAAK+mF,MAAMhhF,OAASmpF,EACnBA,KAEHlvF,KAAKylM,IAAI/C,WAAW1iM,KAAK+mF,MAAMvkE,YAInCxiB,KAAK+mF,MAAMhhF,OAASmpF,MAEV,MAAThsF,GAAiBlD,KAAKqR,QAAQ2uL,UACnChgM,KAAK0mM,cAAcxjM,GACnBlD,KAAKinM,qBAQjB7+G,EAAO5lF,UAAU0kM,iBAAmB,WAC5BlnM,KAAKqR,QAAQ2uL,SACbhgM,KAAKqR,QAAQ0xL,sBACb/iM,KAAKimM,eAAejmM,KAAKimM,eAAelgM,OAAS,GACjD/F,KAAKinM,kBAGLjnM,KAAK+mM,gBAGb3+G,EAAO5lF,UAAUykM,gBAAkB,WAC/B,IAAIhmL,EAAI6C,EACJ5gB,EAAOlD,KAAK6lM,QAChB7lM,KAAK+mM,eAKD/mM,KAAK+mF,MAAM/mF,KAAK+mF,MAAMhhF,OAAS,KAAO7C,IACA,QAArC4gB,GAAM7C,EAAKjhB,KAAKylM,KAAK/C,kBAA+B,IAAP5+K,GAAyBA,EAAGphB,KAAKue,EAAI/d,GACnFlD,KAAK+mF,MAAMvkE,QAGnB4lE,EAAO5lF,UAAU4kM,aAAe,SAAUlkM,GAClClD,KAAKomM,0BACLljM,EAAOA,EAAKwwB,eAEhB1zB,KAAK8lM,WAAa5iM,GAEtBklF,EAAO5lF,UAAU8kM,aAAe,SAAUjoM,GACtCW,KAAK+lM,aAAe1mM,GAExB+oF,EAAO5lF,UAAU+kM,YAAc,SAAUtoG,GACrC,IAAIh+E,EAAI6C,EAC+B,QAAtCA,GAAM7C,EAAKjhB,KAAKylM,KAAK+B,mBAAgC,IAAP1jL,GAAyBA,EAAGphB,KAAKue,EAAIjhB,KAAK8lM,WAAY9lM,KAAK+lM,YAAa9mG,GACnHj/F,KAAKgmM,UACJ9mM,OAAOsD,UAAUC,eAAeC,KAAK1C,KAAKgmM,QAAShmM,KAAK8lM,cACzD9lM,KAAKgmM,QAAQhmM,KAAK8lM,YAAc9lM,KAAK+lM,aAEzC/lM,KAAK8lM,WAAa,GAClB9lM,KAAK+lM,YAAc,IAEvB39G,EAAO5lF,UAAUilM,mBAAqB,SAAUpoM,GAC5C,IAAIy6G,EAAMz6G,EAAMsgI,OAAO6lE,GACnBtiM,EAAO42G,EAAM,EAAIz6G,EAAQA,EAAM4iB,OAAO,EAAG63F,GAI7C,OAHI95G,KAAKkmM,oBACLhjM,EAAOA,EAAKwwB,eAETxwB,GAEXklF,EAAO5lF,UAAUklM,cAAgB,SAAUroM,GACvC,GAAIW,KAAKylM,IAAIkC,wBAAyB,CAClC,IAAIC,EAAS5nM,KAAKynM,mBAAmBpoM,GACrCW,KAAKylM,IAAIkC,wBAAwB,IAAMC,EAAQ,IAAMvoM,KAG7D+oF,EAAO5lF,UAAUmlM,wBAA0B,SAAUtoM,GACjD,GAAIW,KAAKylM,IAAIkC,wBAAyB,CAClC,IAAIE,EAAS7nM,KAAKynM,mBAAmBpoM,GACrCW,KAAKylM,IAAIkC,wBAAwB,IAAME,EAAQ,IAAMxoM,KAG7D+oF,EAAO5lF,UAAUslM,UAAY,SAAUzoM,GACnC,IAAI4hB,EAAI6C,EAAI6qD,EAAIC,EAChB5uE,KAAKquP,eAAe,GACiB,QAApCvqO,GAAM7C,EAAKjhB,KAAKylM,KAAKqC,iBAA8B,IAAPhkL,GAAyBA,EAAGphB,KAAKue,EAAI5hB,GAC1C,QAAvCuvE,GAAMD,EAAK3uE,KAAKylM,KAAKsC,oBAAiC,IAAPn5H,GAAyBA,EAAGlsE,KAAKisE,IAErFyZ,EAAO5lF,UAAUwlM,QAAU,SAAU3oM,GACjC,IAAI4hB,EAAI6C,EAAI6qD,EAAIC,EAAI0Q,EAAI0nH,EACxBhnM,KAAKquP,eAAe,GAChBruP,KAAKqR,QAAQ2uL,SAAWhgM,KAAKqR,QAAQg3L,gBACG,QAAvCvkL,GAAM7C,EAAKjhB,KAAKylM,KAAK6C,oBAAiC,IAAPxkL,GAAyBA,EAAGphB,KAAKue,GAC/C,QAAjC2tD,GAAMD,EAAK3uE,KAAKylM,KAAK5C,cAA2B,IAAPj0H,GAAyBA,EAAGlsE,KAAKisE,EAAItvE,GACzC,QAArC2nM,GAAM1nH,EAAKt/E,KAAKylM,KAAK8C,kBAA+B,IAAPvB,GAAyBA,EAAGtkM,KAAK48E,IAG/Et/E,KAAK8nM,UAAU,UAAYzoM,EAAQ,OAG3C+oF,EAAO5lF,UAAUq/B,QAAU,SAAU3W,GACjC,IAAIjK,EAAI6C,EAC2B,QAAlCA,GAAM7C,EAAKjhB,KAAKylM,KAAK5jK,eAA4B,IAAP/d,GAAyBA,EAAGphB,KAAKue,EAAIiK,IAEpFk9D,EAAO5lF,UAAUy9H,MAAQ,WACrB,IAAIh/G,EAAI6C,EACR,GAAI9jB,KAAKylM,IAAI/C,WACT,IAAK,IAAI9pL,EAAI5Y,KAAK+mF,MAAMhhF,OAAQ6S,EAAI,EAAG5Y,KAAKylM,IAAI/C,WAAW1iM,KAAK+mF,QAAQnuE,KAG3C,QAAhCkL,GAAM7C,EAAKjhB,KAAKylM,KAAKxlE,aAA0B,IAAPn8G,GAAyBA,EAAGphB,KAAKue,IAK9EmnE,EAAO5lF,UAAUi1B,MAAQ,WACrB,IAAIxW,EAAI6C,EAAI6qD,EAAIC,EACmB,QAAlC9qD,GAAM7C,EAAKjhB,KAAKylM,KAAK+C,eAA4B,IAAP1kL,GAAyBA,EAAGphB,KAAKue,GAC5EjhB,KAAKqmM,UAAU5uK,QACfz3B,KAAK6lM,QAAU,GACf7lM,KAAK8lM,WAAa,GAClB9lM,KAAKgmM,QAAU,KACfhmM,KAAK+mF,MAAQ,GAC2B,QAAvCnY,GAAMD,EAAK3uE,KAAKylM,KAAKc,oBAAiC,IAAP33H,GAAyBA,EAAGlsE,KAAKisE,EAAI3uE,OAQzFooF,EAAO5lF,UAAUimM,cAAgB,SAAUv/L,GACvClJ,KAAKy3B,QACLz3B,KAAK4qF,IAAI1hF,IAObk/E,EAAO5lF,UAAUiY,MAAQ,SAAUiuE,GAC/B1oF,KAAKqmM,UAAU5rL,MAAMiuE,IAOzBN,EAAO5lF,UAAUooF,IAAM,SAAUlC,GAC7B1oF,KAAKqmM,UAAUz7G,IAAIlC,IAKvBN,EAAO5lF,UAAUo8H,MAAQ,WACrB5+H,KAAKqmM,UAAUznE,SAKnBx2C,EAAO5lF,UAAUs8H,OAAS,WACtB9+H,KAAKqmM,UAAUvnE,UAQnB12C,EAAO5lF,UAAUkmM,WAAa,SAAUhgH,GACpC1oF,KAAKya,MAAMiuE,IAQfN,EAAO5lF,UAAUuyF,KAAO,SAAUrM,GAC9B1oF,KAAK4qF,IAAIlC,IAENN,EAtRgB,GAwR3BhpF,EAAQgpF,OAASA,sCC3XjB,IAAI7Q,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtD,IAAIqkM,EAAqBnsH,EAAgB,EAAQ,QAC7CirJ,EAAkBjrJ,EAAgB,EAAQ,QAC1CkrJ,EAAgBlrJ,EAAgB,EAAQ,QACxCmrJ,EAAanrJ,EAAgB,EAAQ,QACzC,SAAShL,EAAWxrD,GAChB,MAAa,MAANA,GAAmB,OAANA,GAAoB,OAANA,GAAoB,OAANA,GAAoB,OAANA,EAElE,SAASkqL,EAAalqL,GAClB,OAAQA,GAAK,KAAOA,GAAK,KAASA,GAAK,KAAOA,GAAK,IAEvD,SAASwtO,EAAYC,EAAOC,EAASC,GACjC,IAAItjD,EAAQojD,EAAM96N,cAClB,OAAI86N,IAAUpjD,EACH,SAAUh0K,EAAGrW,GACZA,IAAMqqL,EACNh0K,EAAEm0I,OAASkjF,GAGXr3N,EAAEm0I,OAASmjF,EACXt3N,EAAEkyK,WAIP,SAAUlyK,EAAGrW,GACZA,IAAMqqL,GAASrqL,IAAMytO,EACrBp3N,EAAEm0I,OAASkjF,GAGXr3N,EAAEm0I,OAASmjF,EACXt3N,EAAEkyK,WAId,SAASqlD,EAAuBH,EAAOI,GACnC,IAAIxjD,EAAQojD,EAAM96N,cAClB,OAAO,SAAU0D,EAAGrW,GACZA,IAAMqqL,GAASrqL,IAAMytO,EACrBp3N,EAAEm0I,OAASqjF,GAGXx3N,EAAEm0I,OAAS,EACXn0I,EAAEkyK,WAId,IAAIulD,EAAoBN,EAAY,IAAK,GAAuB,IAC5DO,EAAoBP,EAAY,IAAK,GAAuB,IAC5DQ,EAAoBR,EAAY,IAAK,GAAuB,IAC5DS,EAAoBT,EAAY,IAAK,GAAuB,IAC5DU,EAAoBV,EAAY,IAAK,GAAuB,IAC5DW,EAAqBP,EAAuB,IAAK,IACjDQ,EAAqBR,EAAuB,IAAK,IACjDS,EAAqBT,EAAuB,IAAK,IACjDU,EAAqBV,EAAuB,IAAK,IACjDW,EAAoBf,EAAY,IAAK,GAAuB,GAC5DgB,EAAoBhB,EAAY,IAAK,GAAuB,GAC5DiB,EAAoBjB,EAAY,IAAK,GAAuB,GAC5DkB,EAAoBlB,EAAY,IAAK,GAAuB,GAC5DmB,EAAoBf,EAAuB,IAAK,IAChDgB,EAAoBhB,EAAuB,IAAK,IAChDiB,EAAoBjB,EAAuB,IAAK,IAChDkB,EAAmBtB,EAAY,IAAK,GAAsB,GAC1DuB,EAAmBvB,EAAY,IAAK,GAAsB,GAC1DwB,EAAmBxB,EAAY,IAAK,GAAsB,GAC1DyB,EAAsBrB,EAAuB,IAAK,IAClDsB,EAAoBtB,EAAuB,IAAK,IAChDuB,EAAoBvB,EAAuB,IAAK,IAChDwB,EAAoBxB,EAAuB,IAAK,IAChDyB,EAAwB7B,EAAY,IAAK,GAAsB,GAC/D8B,EAAmB9B,EAAY,IAAK,GAAsB,GAC1D+B,EAAmB/B,EAAY,IAAK,GAAsB,GAC1DgC,EAAmBhC,EAAY,IAAK,GAAsB,GAC1DliD,EAAoBkiD,EAAY,IAAK,GAA8B,IACnE5hD,EAA2B4hD,EAAY,IAAK,GAAsB,IAClEjoD,EAA2B,WAC3B,SAASA,EAAUj1L,EAASo0L,GACxB,IAAIxkL,EAEJjhB,KAAKurK,OAAS,EAEdvrK,KAAK6e,OAAS,GAEd7e,KAAKqpM,aAAe,EAEpBrpM,KAAKspM,OAAS,EAKdtpM,KAAKupM,aAAe,EAEpBvpM,KAAKwpM,UAAY,EAEjBxpM,KAAKqpK,QAAU,EAEfrpK,KAAK0pM,SAAU,EAEf1pM,KAAKkgI,OAAQ,EACblgI,KAAKylM,IAAMA,EACXzlM,KAAKggM,WAAa3uL,MAAAA,OAAyC,EAASA,EAAQ2uL,SAC5EhgM,KAAK8iM,eAAqG,QAAnF7hL,EAAK5P,MAAAA,OAAyC,EAASA,EAAQyxL,sBAAmC,IAAP7hL,GAAgBA,EAiyBtI,OA/xBAqlL,EAAU9jM,UAAUi1B,MAAQ,WACxBz3B,KAAKurK,OAAS,EACdvrK,KAAK6e,OAAS,GACd7e,KAAKqpM,aAAe,EACpBrpM,KAAKspM,OAAS,EACdtpM,KAAKupM,aAAe,EACpBvpM,KAAKwpM,UAAY,EACjBxpM,KAAKqpK,QAAU,EACfrpK,KAAK0pM,SAAU,EACf1pM,KAAKkgI,OAAQ,GAEjBomE,EAAU9jM,UAAUiY,MAAQ,SAAUiuE,GAC9B1oF,KAAKkgI,OACLlgI,KAAKylM,IAAI5jK,QAAQrhC,MAAM,yBAC3BR,KAAK6e,QAAU6pE,EACf1oF,KAAK+nB,SAETu+K,EAAU9jM,UAAUooF,IAAM,SAAUlC,GAC5B1oF,KAAKkgI,OACLlgI,KAAKylM,IAAI5jK,QAAQrhC,MAAM,uBACvBkoF,GACA1oF,KAAKya,MAAMiuE,GACf1oF,KAAKkgI,OAAQ,EACTlgI,KAAK0pM,SACL1pM,KAAKmnI,UAEbm/D,EAAU9jM,UAAUo8H,MAAQ,WACxB5+H,KAAK0pM,SAAU,GAEnBpD,EAAU9jM,UAAUs8H,OAAS,WACzB9+H,KAAK0pM,SAAU,EACX1pM,KAAKspM,OAAStpM,KAAK6e,OAAO9Y,QAC1B/F,KAAK+nB,QAEL/nB,KAAKkgI,OACLlgI,KAAKmnI,UAMbm/D,EAAU9jM,UAAUgkM,iBAAmB,WACnC,OAAOxmM,KAAKupM,aAAevpM,KAAKspM,QAEpChD,EAAU9jM,UAAU0nM,UAAY,SAAUnpL,GAC5B,MAANA,GACI/gB,KAAKspM,OAAStpM,KAAKqpM,cACnBrpM,KAAKylM,IAAI5C,OAAO7iM,KAAKoqM,cAEzBpqM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,SAEpBtpM,KAAK8iM,gBACJ,MAAN/hL,GACkB,IAAjB/gB,KAAKqpK,SAA6C,IAAjBrpK,KAAKqpK,UACnCrpK,KAAKspM,OAAStpM,KAAKqpM,cACnBrpM,KAAKylM,IAAI5C,OAAO7iM,KAAKoqM,cAEzBpqM,KAAKwpM,UAAY,EACjBxpM,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,SASjChD,EAAU9jM,UAAUwoM,eAAiB,SAAUjqL,GAC3C,OAAQkqL,EAAalqL,IAChB/gB,KAAKggM,UAAYzzH,EAAWxrD,IAAY,MAANA,GAAmB,MAANA,GAExDulL,EAAU9jM,UAAU2oM,mBAAqB,SAAUpqL,GACrC,MAANA,EACA/gB,KAAKurK,OAAS,EAEH,MAANxqJ,GACL/gB,KAAKylM,IAAI5C,OAAO7iM,KAAKoqM,cACrBpqM,KAAKqpM,aAAerpM,KAAKspM,QAEd,MAANvoL,GACY,IAAjB/gB,KAAKqpK,SACL98F,EAAWxrD,GACX/gB,KAAKurK,OAAS,EAEH,MAANxqJ,GACL/gB,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAEvB,MAANvoL,GACL/gB,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAE5BtpM,KAAKgrM,eAAejqL,IAI1B/gB,KAAKurK,OACAvrK,KAAKggM,SAAkB,MAANj/K,GAAmB,MAANA,EAExB/gB,KAAKggM,SAAkB,MAANj/K,GAAmB,MAANA,EAE3B,EADA,GAFJ,GAIV/gB,KAAKqpM,aAAerpM,KAAKspM,QATzBtpM,KAAKurK,OAAS,GAYtB+6B,EAAU9jM,UAAU+nM,eAAiB,SAAUxpL,IACjC,MAANA,GAAmB,MAANA,GAAawrD,EAAWxrD,MACrC/gB,KAAKwwP,UAAU,iBACfxwP,KAAKurK,OAAS,EACdvrK,KAAKspM,WAGbhD,EAAU9jM,UAAU8oM,0BAA4B,SAAUvqL,GAClDwrD,EAAWxrD,KAGA,MAANA,EACL/gB,KAAKurK,OAAS,EAEQ,IAAjBvrK,KAAKqpK,QACW,IAAjBrpK,KAAKqpK,SAAoC,MAANtoJ,GAAmB,MAANA,EAG1B,IAAjB/gB,KAAKqpK,SACH,MAANtoJ,GAAmB,MAANA,GAId/gB,KAAKurK,OAAS,EACdvrK,KAAKspM,UAJLtpM,KAAKurK,OAAS,GAJdvrK,KAAKurK,OAAS,GAWZvrK,KAAKgrM,eAAejqL,IAK1B/gB,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,SALzBtpM,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,UAOjChD,EAAU9jM,UAAUmoM,sBAAwB,SAAU5pL,IACxC,MAANA,GAAawrD,EAAWxrD,MACxB/gB,KAAKwwP,UAAU,cACfxwP,KAAKurK,OAAS,EACdvrK,KAAKspM,WAGbhD,EAAU9jM,UAAU+oM,yBAA2B,SAAUxqL,GAE3C,MAANA,IACA/gB,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,IAG1ChD,EAAU9jM,UAAU6oM,yBAA2B,SAAUtqL,GAC3C,MAANA,GACA/gB,KAAKylM,IAAIsB,eACT/mM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAEvB,MAANvoL,EACL/gB,KAAKurK,OAAS,EAERh/F,EAAWxrD,KACjB/gB,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,SAGjChD,EAAU9jM,UAAUgpM,sBAAwB,SAAUzqL,GACxC,MAANA,GACA/gB,KAAKylM,IAAIyB,mBACTlnM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,EAClCtpM,KAAKqpK,QAAU,GAET98F,EAAWxrD,KACjB/gB,KAAKurK,OAAS,EACdvrK,KAAKspM,WAGbhD,EAAU9jM,UAAUipM,qBAAuB,SAAU1qL,IACvC,MAANA,GAAmB,MAANA,GAAmB,MAANA,GAAawrD,EAAWxrD,MAClD/gB,KAAKylM,IAAI2B,aAAapnM,KAAKoqM,cAC3BpqM,KAAKqpM,cAAgB,EACrBrpM,KAAKurK,OAAS,GACdvrK,KAAKspM,WAGbhD,EAAU9jM,UAAUkpM,wBAA0B,SAAU3qL,GAC1C,MAANA,EACA/gB,KAAKurK,OAAS,GAEH,MAANxqJ,GAAmB,MAANA,GAClB/gB,KAAKylM,IAAI8B,iBAAYzlM,GACrB9B,KAAKurK,OAAS,EACdvrK,KAAKspM,UAEC/8H,EAAWxrD,KACjB/gB,KAAKylM,IAAI8B,iBAAYzlM,GACrB9B,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,SAGjChD,EAAU9jM,UAAUmpM,0BAA4B,SAAU5qL,GAC5C,MAANA,GACA/gB,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAEvB,MAANvoL,GACL/gB,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAE5B/8H,EAAWxrD,KACjB/gB,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,OACzBtpM,KAAKspM,WAGbhD,EAAU9jM,UAAUqpM,uBAAyB,SAAU9qL,EAAGk+E,GAClDl+E,IAAMk+E,GACNj/F,KAAKwwP,UAAU,gBACfxwP,KAAKylM,IAAI8B,YAAYtoG,GACrBj/F,KAAKurK,OAAS,GAETvrK,KAAK8iM,gBAAwB,MAAN/hL,IAC5B/gB,KAAKwwP,UAAU,gBACfxwP,KAAKwpM,UAAYxpM,KAAKurK,OACtBvrK,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,SAGjChD,EAAU9jM,UAAUspM,kCAAoC,SAAU/qL,GAC9D/gB,KAAK6rM,uBAAuB9qL,EAAG,MAEnCulL,EAAU9jM,UAAUupM,kCAAoC,SAAUhrL,GAC9D/gB,KAAK6rM,uBAAuB9qL,EAAG,MAEnCulL,EAAU9jM,UAAUopM,8BAAgC,SAAU7qL,GACtDwrD,EAAWxrD,IAAY,MAANA,GACjB/gB,KAAKwwP,UAAU,gBACfxwP,KAAKylM,IAAI8B,YAAY,MACrBvnM,KAAKurK,OAAS,EACdvrK,KAAKspM,UAEAtpM,KAAK8iM,gBAAwB,MAAN/hL,IAC5B/gB,KAAKwwP,UAAU,gBACfxwP,KAAKwpM,UAAYxpM,KAAKurK,OACtBvrK,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,SAGjChD,EAAU9jM,UAAUwpM,uBAAyB,SAAUjrL,GACnD/gB,KAAKurK,OACK,MAANxqJ,EACM,GACM,MAANA,EACI,GACA,IAElBulL,EAAU9jM,UAAUqoM,mBAAqB,SAAU9pL,GACrC,MAANA,IACA/gB,KAAKylM,IAAIiC,cAAc1nM,KAAKoqM,cAC5BpqM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,IAG1ChD,EAAU9jM,UAAUypM,6BAA+B,SAAUlrL,GAC/C,MAANA,IACA/gB,KAAKylM,IAAIkC,wBAAwB3nM,KAAKoqM,cACtCpqM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,IAG1ChD,EAAU9jM,UAAU0pM,mBAAqB,SAAUnrL,GACrC,MAANA,GACA/gB,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAGlCtpM,KAAKurK,OAAS,IAGtB+6B,EAAU9jM,UAAUiuP,eAAiB,SAAU1vO,GACjC,MAANA,IACA/gB,KAAKurK,OAAS,KAEtB+6B,EAAU9jM,UAAU2pM,sBAAwB,SAAUprL,GACxC,MAANA,IACA/gB,KAAKylM,IAAIqC,UAAU9nM,KAAK6e,OAAOoY,UAAUj3B,KAAKqpM,aAAcrpM,KAAKspM,SACjEtpM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,IAG1ChD,EAAU9jM,UAAUkuP,mBAAqB,SAAU3vO,GAE3C/gB,KAAKurK,OADC,MAANxqJ,EACc,GAGA,IAGtBulL,EAAU9jM,UAAUmuP,mBAAqB,SAAU5vO,GACrC,MAANA,GAEA/gB,KAAKylM,IAAIqC,UAAU9nM,KAAK6e,OAAOoY,UAAUj3B,KAAKqpM,aAAcrpM,KAAKspM,OAAS,IAC1EtpM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAEvB,MAANvoL,IACL/gB,KAAKurK,OAAS,KAItB+6B,EAAU9jM,UAAUouP,kBAAoB,SAAU7vO,GACpC,MAANA,GACA/gB,KAAKurK,OAAS,GACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,IAGlCtpM,KAAKurK,OAAS,GACdvrK,KAAKspM,WAGbhD,EAAU9jM,UAAUquP,aAAe,SAAU9vO,GAC/B,MAANA,IACA/gB,KAAKurK,OAAS,KAEtB+6B,EAAU9jM,UAAUsuP,iBAAmB,SAAU/vO,GAEzC/gB,KAAKurK,OADC,MAANxqJ,EACc,GAEA,IAEtBulL,EAAU9jM,UAAUuuP,iBAAmB,SAAUhwO,GACnC,MAANA,GAEA/gB,KAAKylM,IAAIuC,QAAQhoM,KAAK6e,OAAOoY,UAAUj3B,KAAKqpM,aAAcrpM,KAAKspM,OAAS,IACxEtpM,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS,GAEvB,MAANvoL,IACL/gB,KAAKurK,OAAS,KAItB+6B,EAAU9jM,UAAU4pM,oBAAsB,SAAUrrL,GACtC,MAANA,GAAmB,MAANA,EACb/gB,KAAKurK,OAAS,GAEH,MAANxqJ,GAAmB,MAANA,EAClB/gB,KAAKurK,OAAS,IAGdvrK,KAAKurK,OAAS,EACdvrK,KAAKspM,WAGbhD,EAAU9jM,UAAUwuP,uBAAyB,SAAUjwO,GAC9B,IAAjB/gB,KAAKqpK,SAAqC,MAANtoJ,GAAmB,MAANA,EAG3B,IAAjB/gB,KAAKqpK,SAAoC,MAANtoJ,GAAmB,MAANA,EAIrD/gB,KAAKurK,OAAS,EAHdvrK,KAAKurK,OAAS,GAHdvrK,KAAKurK,OAAS,IAQtB+6B,EAAU9jM,UAAUyuP,uBAAyB,SAAUlwO,EAAGsoJ,IAC5C,MAANtoJ,GAAmB,MAANA,GAAawrD,EAAWxrD,MACrC/gB,KAAKqpK,QAAUA,GAEnBrpK,KAAKurK,OAAS,EACdvrK,KAAKspM,UAEThD,EAAU9jM,UAAU0uP,sBAAwB,SAAUnwO,EAAGowO,GAC3C,MAANpwO,GAAawrD,EAAWxrD,IACxB/gB,KAAKqpK,QAAU,EACfrpK,KAAKurK,OAAS,EACdvrK,KAAKqpM,aAAerpM,KAAKspM,OAAS6nD,EAClCnxP,KAAKspM,UAGLtpM,KAAKurK,OAAS,GAGtB+6B,EAAU9jM,UAAU4uP,iBAAmB,SAAUprP,GAG7C,QAFY,IAARA,IAAkBA,EAAMhG,KAAKggM,QAAU0iC,EAAWnrM,QAAUirM,EAAgBjrM,SAE5Ev3B,KAAKqpM,aAAe,EAAIrpM,KAAKspM,OAAQ,CACrC,IAAIv6C,EAAS/uJ,KAAK6e,OAAOoY,UAAUj3B,KAAKqpM,aAAe,EAAGrpM,KAAKspM,QAC3DpqM,OAAOsD,UAAUC,eAAeC,KAAKsD,EAAK+oJ,KAC1C/uJ,KAAK0sM,YAAY1mM,EAAI+oJ,IACrB/uJ,KAAKqpM,aAAerpM,KAAKspM,OAAS,KAK9ChD,EAAU9jM,UAAU6uP,kBAAoB,WAIpC,IAHA,IAAI3oN,EAAQ1oC,KAAKqpM,aAAe,EAE5B/sL,EAAQiD,KAAK6vB,IAAIpvC,KAAKspM,OAAS5gK,EAAO,GACnCpsB,GAAS,GAAG,CAEf,IAAIyyI,EAAS/uJ,KAAK6e,OAAOoD,OAAOymB,EAAOpsB,GACvC,GAAIpd,OAAOsD,UAAUC,eAAeC,KAAK+/N,EAAclrM,QAASw3H,GAG5D,OAFA/uJ,KAAK0sM,YAAY+1B,EAAclrM,QAAQw3H,SACvC/uJ,KAAKqpM,cAAgB/sL,EAAQ,GAGjCA,MAGRgqL,EAAU9jM,UAAU8pM,mBAAqB,SAAUvrL,GACrC,MAANA,GACA/gB,KAAKoxP,mBAEkB,IAAnBpxP,KAAKwpM,WACLxpM,KAAKqpM,aAAe,EAAIrpM,KAAKspM,SAC5BtpM,KAAKggM,SACNhgM,KAAKqxP,oBAETrxP,KAAKurK,OAASvrK,KAAKwpM,YAEbzoL,EAAI,KAAOA,EAAI,OAASkqL,EAAalqL,KACvC/gB,KAAKggM,SAAWhgM,KAAKqpM,aAAe,IAAMrpM,KAAKspM,SAGvB,IAAnBtpM,KAAKwpM,UACA,MAANzoL,GAEA/gB,KAAKoxP,iBAAiB3uB,EAAclrM,SAIxCv3B,KAAKqxP,qBAETrxP,KAAKurK,OAASvrK,KAAKwpM,UACnBxpM,KAAKspM,WAGbhD,EAAU9jM,UAAUqqM,oBAAsB,SAAU1tL,EAAQijI,EAAMt9D,GAC9D,IAAIukH,EAAerpM,KAAKqpM,aAAelqL,EACvC,GAAIkqL,IAAiBrpM,KAAKspM,OAAQ,CAE9B,IAAIv6C,EAAS/uJ,KAAK6e,OAAOoY,UAAUoyK,EAAcrpM,KAAKspM,QAClD57G,EAAS1rE,SAAS+sI,EAAQ3M,GAC9BpiJ,KAAK0sM,YAAYhJ,EAAmBnsK,QAAQm2D,IAC5C1tF,KAAKqpM,aAAevkH,EAAS9kF,KAAKspM,OAAS,EAAItpM,KAAKspM,OAExDtpM,KAAKurK,OAASvrK,KAAKwpM,WAEvBlD,EAAU9jM,UAAUoqM,qBAAuB,SAAU7rL,GACvC,MAANA,EACA/gB,KAAK6sM,oBAAoB,EAAG,IAAI,IAE3B9rL,EAAI,KAAOA,EAAI,OACf/gB,KAAKggM,QAINhgM,KAAKurK,OAASvrK,KAAKwpM,UAHnBxpM,KAAK6sM,oBAAoB,EAAG,IAAI,GAKpC7sM,KAAKspM,WAGbhD,EAAU9jM,UAAUuqM,iBAAmB,SAAUhsL,GACnC,MAANA,EACA/gB,KAAK6sM,oBAAoB,EAAG,IAAI,IAE1B9rL,EAAI,KAAOA,EAAI,OACpBA,EAAI,KAAOA,EAAI,OACfA,EAAI,KAAOA,EAAI,OACX/gB,KAAKggM,QAINhgM,KAAKurK,OAASvrK,KAAKwpM,UAHnBxpM,KAAK6sM,oBAAoB,EAAG,IAAI,GAKpC7sM,KAAKspM,WAGbhD,EAAU9jM,UAAUy3J,QAAU,WACtBj6J,KAAKqpM,aAAe,GACpBrpM,KAAK6e,OAAS,GACd7e,KAAKupM,cAAgBvpM,KAAKspM,OAC1BtpM,KAAKspM,OAAS,GAETtpM,KAAK0pM,UACU,IAAhB1pM,KAAKurK,QACDvrK,KAAKqpM,eAAiBrpM,KAAKspM,QAC3BtpM,KAAKylM,IAAI5C,OAAO7iM,KAAK6e,OAAOoD,OAAOjiB,KAAKqpM,eAE5CrpM,KAAK6e,OAAS,GACd7e,KAAKupM,cAAgBvpM,KAAKspM,OAC1BtpM,KAAKspM,OAAS,GAETtpM,KAAKqpM,eAAiBrpM,KAAKspM,QAEhCtpM,KAAK6e,OAAS,GACd7e,KAAKupM,cAAgBvpM,KAAKspM,OAC1BtpM,KAAKspM,OAAS,IAIdtpM,KAAK6e,OAAS7e,KAAK6e,OAAOoD,OAAOjiB,KAAKqpM,cACtCrpM,KAAKspM,QAAUtpM,KAAKqpM,aACpBrpM,KAAKupM,cAAgBvpM,KAAKqpM,cAE9BrpM,KAAKqpM,aAAe,IAQ5B/C,EAAU9jM,UAAUulB,MAAQ,WACxB,KAAO/nB,KAAKspM,OAAStpM,KAAK6e,OAAO9Y,QAAU/F,KAAK0pM,SAAS,CACrD,IAAI3oL,EAAI/gB,KAAK6e,OAAOwxB,OAAOrwC,KAAKspM,QACZ,IAAhBtpM,KAAKurK,OACLvrK,KAAKkqM,UAAUnpL,GAEM,KAAhB/gB,KAAKurK,OACVvrK,KAAK8rM,kCAAkC/qL,GAElB,IAAhB/gB,KAAKurK,OACVvrK,KAAKyrM,qBAAqB1qL,GAEL,KAAhB/gB,KAAKurK,OACVvrK,KAAKywP,eAAe1vO,GAEC,KAAhB/gB,KAAKurK,OACVvrK,KAAKmsM,sBAAsBprL,GAEN,IAAhB/gB,KAAKurK,OACVvrK,KAAKqrM,yBAAyBtqL,GAET,IAAhB/gB,KAAKurK,OACVvrK,KAAKuqM,eAAexpL,GAEC,IAAhB/gB,KAAKurK,OACVvrK,KAAK2qM,sBAAsB5pL,GAEN,IAAhB/gB,KAAKurK,OACVvrK,KAAKmrM,mBAAmBpqL,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAK0rM,wBAAwB3qL,GAER,KAAhB/gB,KAAKurK,OACVvrK,KAAK+rM,kCAAkChrL,GAElB,KAAhB/gB,KAAKurK,OACVvrK,KAAK2rM,0BAA0B5qL,GAEV,IAAhB/gB,KAAKurK,OACVvrK,KAAKsrM,0BAA0BvqL,GAEV,IAAhB/gB,KAAKurK,OACVvrK,KAAKurM,yBAAyBxqL,GAET,KAAhB/gB,KAAKurK,OACVvrK,KAAKosM,oBAAoBrrL,GAEJ,KAAhB/gB,KAAKurK,OACVvrK,KAAK0wP,mBAAmB3vO,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAK4rM,8BAA8B7qL,GAEd,IAAhB/gB,KAAKurK,OACVvrK,KAAKwrM,sBAAsBzqL,GAEN,KAAhB/gB,KAAKurK,OACVvrK,KAAK6qM,mBAAmB9pL,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAKgsM,uBAAuBjrL,GAEP,KAAhB/gB,KAAKurK,OACVvrK,KAAK2wP,mBAAmB5vO,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAKksM,mBAAmBnrL,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAKgxP,uBAAuBjwO,GAEP,KAAhB/gB,KAAKurK,OACV6kF,EAAsBpwP,KAAM+gB,GAEP,KAAhB/gB,KAAKurK,OACV+jF,EAAkBtvP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACVgkF,EAAkBvvP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACVikF,EAAkBxvP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACV2jF,EAAmBlvP,KAAM+gB,GAEJ,KAAhB/gB,KAAKurK,OACV4jF,EAAmBnvP,KAAM+gB,GAEJ,KAAhB/gB,KAAKurK,OACV6jF,EAAmBpvP,KAAM+gB,GAEJ,KAAhB/gB,KAAKurK,OACV8jF,EAAmBrvP,KAAM+gB,GAEJ,KAAhB/gB,KAAKurK,OACVvrK,KAAKixP,uBAAuBlwO,EAAG,GAEV,KAAhB/gB,KAAKurK,OACVkkF,EAAkBzvP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAKkxP,sBAAsBnwO,EAAG,GAET,KAAhB/gB,KAAKurK,OACVmkF,EAAkB1vP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAK6wP,aAAa9vO,GAEG,KAAhB/gB,KAAKurK,OACVokF,EAAkB3vP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACVqkF,EAAkB5vP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAKixP,uBAAuBlwO,EAAG,GAEV,KAAhB/gB,KAAKurK,OACVskF,EAAiB7vP,KAAM+gB,GAEF,KAAhB/gB,KAAKurK,OACVukF,EAAiB9vP,KAAM+gB,GAEF,KAAhB/gB,KAAKurK,OACVwkF,EAAiB/vP,KAAM+gB,GAEF,KAAhB/gB,KAAKurK,OACVvrK,KAAKkxP,sBAAsBnwO,EAAG,GAET,KAAhB/gB,KAAKurK,OACVykF,EAAoBhwP,KAAM+gB,GAEL,KAAhB/gB,KAAKurK,OACV0kF,EAAkBjwP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACV2kF,EAAkBlwP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACV4kF,EAAkBnwP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAKixP,uBAAuBlwO,EAAG,GAEV,KAAhB/gB,KAAKurK,OACV8kF,EAAiBrwP,KAAM+gB,GAEF,KAAhB/gB,KAAKurK,OACV+kF,EAAiBtwP,KAAM+gB,GAEF,KAAhB/gB,KAAKurK,OACVglF,EAAiBvwP,KAAM+gB,GAEF,KAAhB/gB,KAAKurK,OACVvrK,KAAKkxP,sBAAsBnwO,EAAG,GAET,KAAhB/gB,KAAKurK,OACVvrK,KAAKisM,6BAA6BlrL,GAEb,KAAhB/gB,KAAKurK,OACVvrK,KAAKssM,mBAAmBvrL,GAEH,KAAhB/gB,KAAKurK,OACVsjF,EAAkB7uP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACV8gC,EAAkBrsM,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACVujF,EAAkB9uP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACVwjF,EAAkB/uP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAK8wP,iBAAiB/vO,GAED,KAAhB/gB,KAAKurK,OACVvrK,KAAK+wP,iBAAiBhwO,GAED,KAAhB/gB,KAAKurK,OACVyjF,EAAkBhvP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACV0jF,EAAkBjvP,KAAM+gB,GAEH,KAAhB/gB,KAAKurK,OACVvrK,KAAK4wP,kBAAkB7vO,GAEF,KAAhB/gB,KAAKurK,OACVvrK,KAAK+sM,iBAAiBhsL,GAED,KAAhB/gB,KAAKurK,OACVvrK,KAAK4sM,qBAAqB7rL,GAGL,KAAhB/gB,KAAKurK,OACVohC,EAAyB3sM,KAAM+gB,GAG/B/gB,KAAKylM,IAAI5jK,QAAQrhC,MAAM,kBAAmBR,KAAKurK,QAEnDvrK,KAAKspM,SAETtpM,KAAKi6J,WAETqsC,EAAU9jM,UAAU2kI,OAAS,WAErBnnI,KAAKqpM,aAAerpM,KAAKspM,QACzBtpM,KAAKitM,qBAETjtM,KAAKylM,IAAIxlE,SAEbqmE,EAAU9jM,UAAUyqM,mBAAqB,WACrC,IAAI/jM,EAAOlJ,KAAK6e,OAAOoD,OAAOjiB,KAAKqpM,cACf,KAAhBrpM,KAAKurK,QACW,KAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,OACLvrK,KAAKylM,IAAIuC,QAAQ9+L,GAEI,KAAhBlJ,KAAKurK,QACM,KAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,OACLvrK,KAAKylM,IAAIqC,UAAU5+L,GAEE,KAAhBlJ,KAAKurK,QAAsCvrK,KAAKggM,QAOhC,KAAhBhgM,KAAKurK,QAAwCvrK,KAAKggM,QAOlC,KAAhBhgM,KAAKurK,QAAoCvrK,KAAKggM,QAO9B,IAAhBhgM,KAAKurK,QACM,IAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,QACW,IAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,QACW,KAAhBvrK,KAAKurK,QACW,IAAhBvrK,KAAKurK,QACLvrK,KAAKylM,IAAI5C,OAAO35L,IAfhBlJ,KAAK6sM,oBAAoB,EAAG,IAAI,GAC5B7sM,KAAKqpM,aAAerpM,KAAKspM,SACzBtpM,KAAKurK,OAASvrK,KAAKwpM,UACnBxpM,KAAKitM,wBAVTjtM,KAAK6sM,oBAAoB,EAAG,IAAI,GAC5B7sM,KAAKqpM,aAAerpM,KAAKspM,SACzBtpM,KAAKurK,OAASvrK,KAAKwpM,UACnBxpM,KAAKitM,wBAVTjtM,KAAKqxP,oBACDrxP,KAAKqpM,aAAerpM,KAAKspM,SACzBtpM,KAAKurK,OAASvrK,KAAKwpM,UACnBxpM,KAAKitM,wBAiCjB3G,EAAU9jM,UAAU4nM,WAAa,WAC7B,OAAOpqM,KAAK6e,OAAOoY,UAAUj3B,KAAKqpM,aAAcrpM,KAAKspM,SAEzDhD,EAAU9jM,UAAUguP,UAAY,SAAUttP,GACtClD,KAAKylM,IAAIviM,GAAMlD,KAAKoqM,cACpBpqM,KAAKqpM,cAAgB,GAEzB/C,EAAU9jM,UAAUkqM,YAAc,SAAUrtM,GACjB,IAAnBW,KAAKwpM,UACLxpM,KAAKylM,IAAI6B,aAAajoM,GAGtBW,KAAKylM,IAAI5C,OAAOxjM,IAGjBinM,EA3zBmB,GA6zB9BlnM,EAAA,QAAkBknM,sCC34BlB,IAAI9kM,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEV0tI,EAAsBtvI,MAAQA,KAAKsvI,qBAAwBpwI,OAAOuC,OAAS,SAAUC,EAAGi5B,GACxFz7B,OAAOC,eAAeuC,EAAG,UAAW,CAAEU,YAAY,EAAM/C,MAAOs7B,KAC9D,SAASj5B,EAAGi5B,GACbj5B,EAAW,QAAIi5B,IAEf40G,EAAgBvvI,MAAQA,KAAKuvI,cAAiB,SAAU98F,GACxD,GAAIA,GAAOA,EAAIxwC,WAAY,OAAOwwC,EAClC,IAAInrC,EAAS,GACb,GAAW,MAAPmrC,EAAa,IAAK,IAAI7wC,KAAK6wC,EAAe,YAAN7wC,GAAmB1C,OAAOsD,UAAUC,eAAeC,KAAK+vC,EAAK7wC,IAAIJ,EAAgB8F,EAAQmrC,EAAK7wC,GAEtI,OADA0tI,EAAmBhoI,EAAQmrC,GACpBnrC,GAEPhF,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAEvHg1E,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQkyP,WAAalyP,EAAQmyP,eAAiBnyP,EAAQ0sP,SAAW1sP,EAAQy6N,YAAcz6N,EAAQknM,UAAYlnM,EAAQoyP,gBAAkBpyP,EAAQqyP,SAAWryP,EAAQ0+O,cAAgB1+O,EAAQm8N,WAAan8N,EAAQgpF,YAAS,EACtN,IAAIilH,EAAW,EAAQ,OACvBnuM,OAAOC,eAAeC,EAAS,SAAU,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOgrM,EAASjlH,UAChG,IAAIo3I,EAAe,EAAQ,OAU3B,SAASse,EAAc50O,EAAMmI,GACzB,IAAI62E,EAAU,IAAIs3I,EAAajE,gBAAWz5N,EAAWuP,GAErD,OADA,IAAIg8L,EAASjlH,OAAOF,EAAS72E,GAASu5E,IAAI1hF,GACnCg/E,EAAQY,KAZnB5pF,OAAOC,eAAeC,EAAS,aAAc,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOm9N,EAAajE,cACxGr8N,OAAOC,eAAeC,EAAS,iBAAkB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOm9N,EAAajE,cAa5Gn8N,EAAQ0+O,cAAgBA,EAcxB1+O,EAAQqyP,SAHR,SAAkBvoP,EAAMmI,GACpB,OAAOysO,EAAc50O,EAAMmI,GAASzM,UAcxCxF,EAAQoyP,gBAJR,SAAyBzzH,EAAI1sH,EAASqgP,GAClC,IAAIxpK,EAAU,IAAIs3I,EAAajE,WAAWx9F,EAAI1sH,EAASqgP,GACvD,OAAO,IAAIrkD,EAASjlH,OAAOF,EAAS72E,IAGxC,IAAIyzL,EAAc,EAAQ,OAC1B5lM,OAAOC,eAAeC,EAAS,YAAa,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOk1E,EAAgButH,GAAavtK,WACvH,IAAIsiM,EAActqF,EAAa,EAAQ,QACvCnwI,EAAQy6N,YAAcA,EAKtBv3N,EAAa,EAAQ,OAAkBlD,GACvCA,EAAQ0sP,SAAWv8G,EAAa,EAAQ,QACxC,IAAIoiH,EAAgB,EAAQ,OAC5BzyP,OAAOC,eAAeC,EAAS,aAAc,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOsvP,EAAchG,mECjFrGiG,EAA8B,uDAC9BC,EAAkB,qCAClBC,EAAkB,iBAClBC,EAAkB,oBAClBC,EAAoB,QACpBC,EAAuB,WAOvBC,EAAgB,iCAQpB,SAAS7tL,EAAMhlE,GACb,OAAOA,EAAMohB,QAASoxO,EAAiB,IAGzC,SAASM,EAAe9yP,GACtB,OAAOyyP,EAAgB35O,KAAM9Y,GAG/B,SAAS+yP,EAAgB/yP,EAAO8f,GAC9B,KAAOgzO,EAAe9yP,EAAM8f,KAC1BA,IAEF,OAAOA,EAGT,SAASkzO,EAAahzP,GACpB,OAAO4yP,EAAqB95O,KAAM9Y,KAC/B6yP,EAAc/5O,KAAM9Y,GAGzB,MAAMizP,EAQJ7yP,YAAaJ,GAGXW,KAAKuyP,KAAO,GAERlzP,GACFW,KAAK+nB,MAAO1oB,GAUhBmzP,IAAKnzP,GAKH,IAHA,IAAIm+L,EAAQ,GACRr3L,EAAO9G,EAAMq0B,cAER9a,EAAI,EAAGA,EAAI5Y,KAAKuyP,KAAKxsP,OAAQ6S,IAChC5Y,KAAKuyP,KAAM35O,GAAI45O,IAAI9+N,gBAAkBvtB,GACvCq3L,EAAM/3L,KAAMzF,KAAKuyP,KAAM35O,IAI3B,OAAO4kL,EAUTn7L,IAAKgyJ,EAAMh1J,GAETg1J,EAAOA,EAAK3gI,cAIZ,IAFA,IAAI8pK,EAAQ,GAEH5kL,EAAI,EAAGA,EAAI5Y,KAAKuyP,KAAKxsP,OAAQ6S,IAChC5Y,KAAKuyP,KAAM35O,GAAKy7I,KAAWh1J,GAC7Bm+L,EAAM/3L,KAAMzF,KAAKuyP,KAAM35O,IAI3B,OAAO4kL,EAITj4L,IAAKg4L,GAEH,OADAv9L,KAAKuyP,KAAK9sP,KAAM83L,GACTv9L,KAGTkI,IAAKmsJ,EAAMh1J,GAETg1J,EAAOA,EAAK3gI,cAEZ,IAAK,IAAI9a,EAAI,EAAGA,EAAI5Y,KAAKuyP,KAAKxsP,OAAQ6S,IACpC,GAAI5Y,KAAKuyP,KAAM35O,GAAKy7I,KAAWh1J,EAC7B,OAAO,EAIX,OAAO,EAIT0oB,MAAO1oB,EAAO8f,GAaZ,IALA,IAAIsjB,EAjHA,EAkHA18B,GAHJ1G,EAAQglE,EAHRhlE,GADA8f,EAASA,GAAU,GACF9f,EAAMgkB,MAAOlE,GAAW9f,GAGnBohB,QAASsxO,EAAiB,KAG7BhsP,OAEfmiG,GADA/oF,EAAS,EACH,MAEHA,EAASpZ,GACd,GAvHE,IAuHE08B,EAAuB,CACzB,GAAI0vN,EAAe9yP,EAAM8f,IAAY,CACnCA,IACA,SACK,GAAsB,MAAlB9f,EAAM8f,GAaf,MAAM,IAAI3e,MAAO,yBAA2BnB,EAAM8f,GAAU,eAAiBA,GAN7E,GANW,MAAP+oF,IACS,MAAXA,EAAIsqJ,IACFxyP,KAAKuyP,KAAK9sP,QAAS6sP,EAAKG,gBAAiBvqJ,IACzCloG,KAAKuyP,KAAK9sP,KAAMyiG,KAGP,KADTtd,EAAMvrF,EAAMyY,QAAS,IAAKqH,IACb,MAAM,IAAI3e,MAAO,2CAA6C2e,GAC/E+oF,EAAM,CAAE10C,IAAKn0D,EAAMgkB,MAAOlE,EAAS,EAAGyrE,IAEtCzrE,EAASyrE,EACTnoD,EArIH,EAyICtjB,SACK,GA1IN,IA0IUsjB,EAAsB,CAC/B,GAAI0vN,EAAe9yP,EAAM8f,IAAY,CACnCA,IACA,SACK,GAAsB,MAAlB9f,EAAM8f,GACfsjB,EA9IF,EA+IEtjB,QACK,IAAsB,MAAlB9f,EAAM8f,GAIf,MAAM,IAAI3e,MAAO,yBAA2BnB,EAAM8f,GAAU,eAAiBA,GAH7EsjB,EAnJF,EAoJEtjB,SAIG,IAtJL,IAsJSsjB,EAsDT,MAAM,IAAIjiC,MAAO,yBAA2BiiC,EAAQ,KArDpD,GAAqB,MAAjBpjC,EAAM8f,IAAkBgzO,EAAe9yP,EAAM8f,IAAY,CAC3DA,IACA,SAGF,IAAa,KADTyrE,EAAMvrF,EAAMyY,QAAS,IAAKqH,IACb,MAAM,IAAI3e,MAAO,0CAA4C2e,GAC9E,IAAIk1I,EAAOhwF,EAAMhlE,EAAMgkB,MAAOlE,EAAQyrE,IAAQl3D,cAC1Cg/N,EAAY,GAGhB,GAAsB,MAAlBrzP,EADJ8f,EAASizO,EAAgB/yP,EADzB8f,EAASyrE,EAAM,IAIb,IADAzrE,IACOA,EAASpZ,GAAS,CACvB,GAAsB,MAAlB1G,EAAM8f,GAAkB,CAC1BA,IAAU,MAEU,OAAlB9f,EAAM8f,IACRA,IAEFuzO,GAAarzP,EAAM8f,GACnBA,QAEG,CAEL,IADA,IAAIyrE,EAAMzrE,EAAS,GACX6yO,EAAkB75O,KAAM9Y,EAAMurF,KAAUA,EAAM7kF,GACpD6kF,IAEF8nK,EAAYrzP,EAAMgkB,MAAOlE,EAAQyrE,GACjCzrE,EAASyrE,EAmBX,OAjBIsd,EAAKmsD,IAAUi+F,EAAKK,sBAAuBt+F,KAER,MAA5BA,EAAMA,EAAKtuJ,OAAS,GAC7BmiG,EAAKmsD,GAASi+F,EAAKM,mBAAoBF,IAEvCA,EAAqB,SAATr+F,EACVq+F,EAAUh/N,cAAgBg/N,EACT,MAAfxqJ,EAAKmsD,GACHv4I,MAAMC,QAASmsF,EAAKmsD,IACtBnsD,EAAKmsD,GAAO5uJ,KAAMitP,GAElBxqJ,EAAKmsD,GAAS,CAAEnsD,EAAKmsD,GAAQq+F,GAG/BxqJ,EAAKmsD,GAASq+F,IAGVrzP,EAAM8f,IACZ,IAAK,IAAKsjB,EAzMZ,EAyMgC,MAC9B,IAAK,IAAKA,EAxMZ,EA0MAtjB,IAcJ,OARW,MAAP+oF,IACS,MAAXA,EAAIsqJ,IACFxyP,KAAKuyP,KAAK9sP,QAAS6sP,EAAKG,gBAAiBvqJ,IACzCloG,KAAKuyP,KAAK9sP,KAAMyiG,IAGpBA,EAAM,KAECloG,KAIT6N,WAME,IAJA,IAAI0kP,EAAO,GACPh1D,EAAO,GACPr1F,EAAM,KAEDtvF,EAAI,EAAGA,EAAI5Y,KAAKuyP,KAAKxsP,OAAQ6S,IACpCsvF,EAAMloG,KAAKuyP,KAAK35O,GAChB2kL,EAAOr+L,OAAO0N,KAAM5M,KAAKuyP,KAAK35O,IAAKW,QAAQ,SAAUgkL,EAAMlpC,GACzD,MAAa,QAATA,EAAwBkpC,EACrBA,EAAO,KAAO+0D,EAAKO,gBAAiBx+F,EAAMnsD,EAAKmsD,MACrD,IAAMnsD,EAAI10C,IAAM,KACnB++L,EAAK9sP,KAAM83L,GAGb,OAAOg1D,EAAK/xO,KAAM,OAYtB8xO,EAAKQ,qBAAuB,SAAUzzP,GACpC,OAAOuyP,EAA4Bz5O,KAAM9Y,IAG3CizP,EAAKvqO,MAAQ,SAAU1oB,EAAO8f,GAC5B,OAAO,IAAImzO,GAAOvqO,MAAO1oB,EAAO8f,IAGlCmzO,EAAKK,sBAAwB,SAAUt+F,GACrC,MAAgB,QAATA,GAA2B,SAATA,GAA4B,UAATA,GACjC,UAATA,GAA6B,WAATA,GAGxBi+F,EAAKS,YAAc,SAAU1+F,GAC3B,MAAgB,QAATA,GAA2B,SAATA,GAA4B,WAATA,GAG9Ci+F,EAAKU,aAAe,SAAU3zP,GAC5B,OAAOA,EAAMohB,QAAS,KAAM,QAG9B6xO,EAAKG,gBAAkB,SAAUvqJ,GAE/B,OADWA,EAAIsqJ,IAAI1xO,MAAO,KACd9a,KAAK,SAAUwsP,GACzB,IAAInzP,EAAQH,OAAO4W,OAAQ,GAAIoyF,GAE/B,OADA7oG,EAAMmzP,IAAMA,EACLnzP,MAUXizP,EAAKM,mBAAqB,SAAUvzP,GAClC,IAAIs3B,EAAQ,6BAA6BnD,KAAMn0B,GAC/C,MAAO,CACL2I,SAAU2uB,EAAM,GAAGjD,cACnB23D,SAAUinK,EAAKQ,qBAAsBn8N,EAAM,IACzC,KAAOA,EAAM,GAAGjD,cAClBr0B,MAAOizP,EAAKQ,qBAAsBn8N,EAAM,IACtCsD,mBAAoBtD,EAAM,IAAOA,EAAM,KAU7C27N,EAAKW,wBAA0B,SAAU5+F,EAAMnrJ,GAE7C,IAAImiF,GAAaniF,EAAKmiF,UAAY,SAAU1wE,cAc5C,OAAO05I,EAAO,IAAMhpE,EAAW,KAbhBniF,EAAKlB,UAAY,MAcnB,KAVTs4D,EAAOG,SAAUv3D,EAAK7J,QAAWizP,EAAKQ,qBAAsBznK,GAC/CniF,EAAK7J,MAAMwO,SAAUw9E,GAC3B/qB,EAAOG,SAAUv3D,EAAK7J,OAChB6J,EAAK7J,MAAMwO,SAAU,OACjC4S,QAAS,gBAAiB,OAEdmZ,mBAAoB1wB,EAAK7J,SAc5CizP,EAAKO,gBAAkB,SAAUx+F,EAAMh1J,GAErC,OAAIyc,MAAMC,QAAS1c,GACVA,EAAM2G,KAAMy4I,GACV6zG,EAAKO,gBAAiBx+F,EAAM5V,KAClCj+H,KAAM,MAGqB,MAA5B6zI,EAAMA,EAAKtuJ,OAAS,IAAgC,iBAAV1G,EACrCizP,EAAKW,wBAAyB5+F,EAAMh1J,IAGzCizP,EAAKS,YAAa1+F,GACpBh1J,EAAQgzP,EAAahzP,GACnB,IAAMizP,EAAKU,aAAc3zP,GAAU,IACnCizP,EAAKU,aAAc3zP,GACZgzP,EAAahzP,KAQtBA,EAAQ,KALRA,GAFAA,EAAQu6B,mBAAoBv6B,IAGzBohB,QAAS,OAAQ,KACjBA,QAAS,OAAQ,KACjBA,QAAS,OAAQ,MAEE,KAGjB4zI,EAAO,IAAMh1J,IAItB2sE,EAAO5sE,QAAUkzP,aCzXY,mBAAlBpzP,OAAOuC,OAEhBuqE,EAAO5sE,QAAU,SAAkBwjH,EAAMsJ,GACnCA,IACFtJ,EAAKuJ,OAASD,EACdtJ,EAAKpgH,UAAYtD,OAAOuC,OAAOyqH,EAAU1pH,UAAW,CAClD/C,YAAa,CACXJ,MAAOujH,EACPxgH,YAAY,EACZF,UAAU,EACVC,cAAc,OAOtB6pE,EAAO5sE,QAAU,SAAkBwjH,EAAMsJ,GACvC,GAAIA,EAAW,CACbtJ,EAAKuJ,OAASD,EACd,IAAIE,EAAW,aACfA,EAAS5pH,UAAY0pH,EAAU1pH,UAC/BogH,EAAKpgH,UAAY,IAAI4pH,EACrBxJ,EAAKpgH,UAAU/C,YAAcmjH,wCCtBnC,IAAIphH,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEV0tI,EAAsBtvI,MAAQA,KAAKsvI,qBAAwBpwI,OAAOuC,OAAS,SAAUC,EAAGi5B,GACxFz7B,OAAOC,eAAeuC,EAAG,UAAW,CAAEU,YAAY,EAAM/C,MAAOs7B,KAC9D,SAASj5B,EAAGi5B,GACbj5B,EAAW,QAAIi5B,IAEf40G,EAAgBvvI,MAAQA,KAAKuvI,cAAiB,SAAU98F,GACxD,GAAIA,GAAOA,EAAIxwC,WAAY,OAAOwwC,EAClC,IAAInrC,EAAS,GACb,GAAW,MAAPmrC,EAAa,IAAK,IAAI7wC,KAAK6wC,EAAe,YAAN7wC,GAAmB1C,OAAOsD,UAAUC,eAAeC,KAAK+vC,EAAK7wC,IAAIJ,EAAgB8F,EAAQmrC,EAAK7wC,GAEtI,OADA0tI,EAAmBhoI,EAAQmrC,GACpBnrC,GAEXpI,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQstN,WAAattN,EAAQ8zP,OAAS9zP,EAAQ+zP,QAAU/zP,EAAQg0P,aAAeh0P,EAAQi0P,gBAAkBj0P,EAAQk0P,mBAAgB,EACjI,MAAMC,EAAU,EAAQ,OAClBC,EAAUjkH,EAAa,EAAQ,QACrCnwI,EAAQk0P,eAAgB,EAAIC,EAAQE,WAAWD,EAAQE,eACvDt0P,EAAQi0P,iBAAkB,EAAIE,EAAQE,WAAWD,EAAQG,iBACzDv0P,EAAQg0P,cAAe,EAAIG,EAAQE,WAAWD,EAAQI,cACtDx0P,EAAQ+zP,SAAU,EAAII,EAAQE,WAAWD,EAAQK,SACjDz0P,EAAQ8zP,QAAS,EAAIK,EAAQE,WAAWD,EAAQl1G,QAChDl/I,EAAQstN,YAAa,EAAI6mC,EAAQE,WAAWD,EAAQM,gDC5BpD,IAAItyP,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAEvHg1E,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtD,MAAM00P,EAAOx8K,EAAgB,EAAQ,QACrCj1E,EAAa,EAAQ,OAASlD,GAC9BkD,EAAa,EAAQ,OAASlD,GAC9BA,EAAA,QAAkB20P,EAAKx8N,oCCZvB,SAASm8N,EAActiP,GACnB,MAAyB,cAAlBA,EAAKtK,UACa,cAAlBsK,EAAKtK,UACa,aAAlBsK,EAAKtK,UACLgtP,EAAW1iP,GAMtB,SAASuiP,EAAgBviP,GACrB,MAAyB,cAAlBA,EAAKtK,UAA8C,aAAlBsK,EAAKtK,SAMjD,SAAS8sP,EAAaxiP,GAClB,MAAyB,cAAlBA,EAAKtK,UACa,YAAlBsK,EAAKtK,UACa,cAAlBsK,EAAKtK,UACa,aAAlBsK,EAAKtK,UACLgtP,EAAW1iP,GAMtB,SAASyiP,EAAQziP,GACb,MAAyB,iBAAlBA,EAAKtK,UACa,cAAlBsK,EAAKtK,UACa,cAAlBsK,EAAKtK,UACa,aAAlBsK,EAAKtK,SAMhB,SAASw3I,EAAOltI,GACZ,OAAOsiP,EAActiP,EAAK1K,UACnBitP,EAAgBviP,EAAKzK,YACrBitP,EAAaxiP,EAAKxK,SAClBitP,EAAQziP,EAAKvK,OAMxB,SAASitP,EAAW1iP,GAChB,MAAyB,SAAlBA,EAAKtK,UAAuBw3I,EAAOltI,GAtD9ClS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ00P,WAAa10P,EAAQk/I,OAASl/I,EAAQy0P,QAAUz0P,EAAQw0P,aAAex0P,EAAQu0P,gBAAkBv0P,EAAQs0P,mBAAgB,EAUjIt0P,EAAQs0P,cAAgBA,EAOxBt0P,EAAQu0P,gBAAkBA,EAW1Bv0P,EAAQw0P,aAAeA,EAUvBx0P,EAAQy0P,QAAUA,EAUlBz0P,EAAQk/I,OAASA,EAOjBl/I,EAAQ00P,WAAaA,EACrB10P,EAAA,QAAkBk/I,8BCzDlBp/I,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQq0P,eAAY,EAUpBr0P,EAAQq0P,UARR,SAAmBv/J,GACf,OAAQhJ,IACJ,IAAKgJ,EAAKhJ,GACN,MAAM,IAAI1qF,MAAM,kBAAkB0qF,qBAEtC,OAAOA,4BCPf,MAAMv8E,EAAW85E,GACL,OAAXA,GACkB,iBAAXA,GACgB,mBAAhBA,EAAOwkC,KAEft+G,EAASzM,SAAWumF,GACnB95E,EAAS85E,KACW,IAApBA,EAAOvmF,UACkB,mBAAlBumF,EAAOykC,QACmB,iBAA1BzkC,EAAO0kC,eAEfx+G,EAASy+G,SAAW3kC,GACnB95E,EAAS85E,KACW,IAApBA,EAAO2kC,UACiB,mBAAjB3kC,EAAO58E,OACmB,iBAA1B48E,EAAO4kC,eAEf1+G,EAAS2+G,OAAS7kC,GACjB95E,EAASzM,SAASumF,IAClB95E,EAASy+G,SAAS3kC,GAEnB95E,EAAS4+G,UAAY9kC,GACpB95E,EAAS2+G,OAAO7kC,IACa,mBAAtBA,EAAO+kC,WAEfxhD,EAAO5sE,QAAUuP,qCC1BjB,IAAInN,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAwBlD,GAC7CkD,EAAa,EAAQ,OAAqBlD,GAC1CkD,EAAa,EAAQ,OAA8BlD,GACnDkD,EAAa,EAAQ,OAA0BlD,GAC/CkD,EAAa,EAAQ,OAAwBlD,GAC7CkD,EAAa,EAAQ,OAAkClD,GACvDkD,EAAa,EAAQ,OAAelD,iCCjBpCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ40P,qBAAuB50P,EAAQ6qO,mBAAgB,EACvD,EAAQ,OACR,MAAMjrD,EAA6B,EAAQ,OACrCi1E,EAAe,EAAQ,OACvBC,EAAwB,EAAQ,OAChCC,EAA4B,EAAQ,OACpCrtB,EAAS,EAAQ,OAEjBstB,EAAmB,EAAQ,OAIjC,MAAMnqB,EACFxqO,YAAY4R,GACRA,EAAUA,GAAW,GACrBrR,KAAK4U,eAAiBvD,EAAQuD,gBAAkB,IAAIs/O,EAAsB/lD,oBAC1EnuM,KAAKq0P,cAAgB,GACrBr0P,KAAKs0P,iBAAmBjjP,EAAQg+I,eAChCrvJ,KAAKu0P,0BAA4BljP,EAAQkjP,wBACzCv0P,KAAKw0P,yBAA2BnjP,EAAQmjP,0BAA4B,GACpEx0P,KAAKy0P,yBAAyB,2BAA4BpjP,MAAYA,EAAQojP,uBAWlFrqP,wBAAwB/K,EAAOq1P,EAAaC,GACxC,GAAqB,iBAAVt1P,EACP,MAAM,IAAI40P,EAAaW,WAAW,sDAAsDxoP,KAAKC,UAAUhN,MAAWs1P,GAEtH,IAAK7tB,EAAOt1N,KAAKqjP,mBAAmB18O,KAAK9Y,GAAQ,CAC7C,GAAIq1P,EACA,MAAM,IAAIT,EAAaW,WAAW,kEAAkExoP,KAAKC,UAAUhN,MAAWs1P,GAG9H,OAAO,EAGf,OAAO,EAUXvqP,yBAAyB/K,EAAOwV,GAC5B,GAAqB,iBAAVxV,EACP,MAAM,IAAI40P,EAAaW,WAAW,uDAAuDxoP,KAAKC,UAAUhN,MAAW40P,EAAaa,YAAYC,wBAEhJ,IAAKjuB,EAAOt1N,KAAKwjP,oBAAoB78O,KAAK9Y,GAAQ,CAC9C,GAAIwV,EACA,MAAM,IAAIo/O,EAAaW,WAAW,6DAA6DxoP,KAAKC,UAAUhN,MAAW40P,EAAaa,YAAYC,wBAGlJ,OAAO,EAGf,OAAO,EAOXE,kBAAkB90P,GACd,IAAK,MAAMgB,KAAOjC,OAAO0N,KAAKzM,GAAU,CACpC,MAAMd,EAAQc,EAAQgB,GACtB,GAAI9B,GAA0B,iBAAVA,GACZA,EAAM,cAAgBA,EAAM,OAAQ,CACpC,GAAiC,iBAAtBA,EAAM,aAA4BynO,EAAOt1N,KAAK0jP,eAAe71P,EAAM,aAC1E,MAAM,IAAI40P,EAAaW,WAAW,gEAAgEv1P,EAAM,eAAgB40P,EAAaa,YAAYK,qBAErJ91P,EAAM,OAASA,EAAM,YACjBynO,EAAOt1N,KAAK4jP,mBAAmB/1P,EAAM,oBAC9BA,EAAM,YAGbA,EAAM,aAAc,GAKpC,OAAOc,EAQXk1P,oBAAoBl1P,EAASo0P,GACzB,MAAMe,EAAan1P,EAAQwrO,gBAC3B,IAAK,MAAMxqO,KAAOjC,OAAO0N,KAAK0oP,GAE1B,GAAIxuB,EAAOt1N,KAAK+jP,sBAAsBz9O,QAAQ3W,GAAO,IAAM2lO,EAAOt1N,KAAKgkP,0BAA0Br0P,GAAM,CAEnG,MAAMs0P,EAAWH,EAAWn0P,GAC5B,GAAI2lO,EAAOt1N,KAAK4jP,mBAAmBj0P,IAAQ2lO,EAAOt1N,KAAKkkP,uBAAuB59O,QAAQ3W,IAAQ,IAC9E,UAARA,GAA8C,iBAApBm0P,EAAWn0P,KAChCm0P,EAAWn0P,GAAK,eAAmD,SAAlCm0P,EAAWn0P,GAAK,eACtD,MAAM,IAAI8yP,EAAaW,WAAW,iEAC1CzzP,QAAUiL,KAAKC,UAAUopP,KAAaxB,EAAaa,YAAYa,sBAI/D,GAAI7uB,EAAOt1N,KAAKokP,sBAAsB99O,QAAQgvN,EAAOt1N,KAAKqkP,kBAAkBJ,KAAc,EACtF,MAAM,IAAIxB,EAAaW,WAAW,+DACtCzzP,QAAUiL,KAAKC,UAAUopP,KAAaxB,EAAaa,YAAYgB,uBAG/D,GAAIL,GAAY3uB,EAAOt1N,KAAK4jP,mBAAmBtuB,EAAOt1N,KAAKqkP,kBAAkBJ,MAC9C,IAAxBA,EAAS,WACZ,MAAM,IAAIxB,EAAaW,WAAW,4CAA4CzzP,QAAUiL,KAAKC,UAAUopP,MAAcxB,EAAaa,YAAYiB,yBAGlJ,KAAOjvB,EAAOt1N,KAAKwkP,cAAcV,EAAWn0P,KAAO,CAC/C,MAAM9B,EAAQi2P,EAAWn0P,GACzB,IAAIixM,GAAU,EACd,GAAqB,iBAAV/yM,EACPi2P,EAAWn0P,GAAOhB,EAAQkrO,WAAWhsO,GAAO,GAC5C+yM,EAAUA,GAAW/yM,IAAUi2P,EAAWn0P,OAEzC,CACD,MAAM0hC,EAAKxjC,EAAM,OACX8G,EAAO9G,EAAM,SAEb42P,IAAkB,YAAa52P,IAAUynO,EAAOt1N,KAAK0kP,WAAW/0P,GACtE,GAAI,QAAS9B,EAELwjC,MAAAA,GAAiD,iBAAPA,IAC1CyyN,EAAWn0P,GAAK,OAAShB,EAAQkrO,WAAWxoM,GAAI,GAChDuvK,EAAUA,GAAWvvK,IAAOyyN,EAAWn0P,GAAK,aAG/C,IAAK2lO,EAAOt1N,KAAK4jP,mBAAmBj0P,IAAQ80P,EAAe,CAE5D,MAAME,EAAQh2P,EAAQkrO,WAAWlqO,GAAK,GAClCg1P,IAAUh1P,IAEVm0P,EAAWn0P,GAAK,OAASg1P,EACzB/jD,GAAU,IAGdjsM,GAAwB,iBAATA,GAA8B,WAATA,GAC/B9G,EAAM,eAAkBA,EAAM,cAAc,WAC9C42P,IAEHX,EAAWn0P,GAAK,SAAWhB,EAAQkrO,WAAWllO,GAAM,GAChDouP,GAA2BpuP,IAASmvP,EAAWn0P,GAAK,WACpDm0P,EAAWn0P,GAAK,SAAWhB,EAAQkrO,WAAWllO,GAAM,IAExDisM,EAAUA,GAAWjsM,IAASmvP,EAAWn0P,GAAK,UAGtD,IAAKixM,EACD,QAWpBgkD,UAAUj2P,GAAS,eAAEk2P,EAAc,sBAAEC,IAEjC,GAAIA,GAA4C,IAAnBD,EACzB,IAAK,MAAMl1P,KAAOjC,OAAO0N,KAAKzM,GAC1B,GAAY,cAARgB,GAA+C,iBAAjBhB,EAAQgB,GACtChB,EAAQgB,GAAOhB,EAAQgB,GAAKuyB,kBAE3B,CACD,MAAMr0B,EAAQc,EAAQgB,GAClB9B,GAA0B,iBAAVA,GACkB,iBAAvBA,EAAM,eACbA,EAAM,aAAeA,EAAM,aAAaq0B,gBAWhE6iO,iBAAiBp2P,GACb,IAAK,MAAMgB,KAAOjC,OAAO0N,KAAKzM,GAAU,CACpC,MAAMd,EAAQc,EAAQgB,GACtB,GAAI9B,GAA0B,iBAAVA,EAChB,GAAmC,iBAAxBA,EAAM,cACbA,EAAM,cAAgB,CAAE,CAACA,EAAM,gBAAgB,QAE9C,GAAIyc,MAAMC,QAAQ1c,EAAM,eAAgB,CACzC,MAAM62G,EAAW,GACjB,IAAK,MAAMsgJ,KAAkBn3P,EAAM,cAC/B62G,EAASsgJ,IAAkB,EAE/Bn3P,EAAM,cAAgB62G,IAUtCugJ,qBAAqBt2P,GAAS,eAAEk2P,IAC5B,GAAIA,GAAkBA,GAAkB,KAChCl2P,EAAQ,cAAe,CACvB,IAAK,MAAMgB,KAAOjC,OAAO0N,KAAKzM,GAC1B,IAAI2mO,EAAOt1N,KAAKgkP,0BAA0Br0P,KAGrC2lO,EAAOt1N,KAAK4jP,mBAAmBj0P,KAAS2lO,EAAOt1N,KAAKklP,gBAAgBv2P,EAASgB,GAAM,CACpF,MAAM9B,EAAQc,EAAQgB,GAClB9B,GAA0B,iBAAVA,EACV,eAAgBc,EAAQgB,KAE1BhB,EAAQgB,GAAK,eAAgB,GAKjChB,EAAQgB,GAAO,CACX,MAAO9B,EACP,cAAc,UAKvBc,EAAQ,eAU3Bw2P,6BAA6BC,EAAeC,EAAcC,GACtD,IAAK,MAAM31P,KAAOjC,OAAO0N,KAAKiqP,GAC1B,GAAI/vB,EAAOt1N,KAAKklP,gBAAgBE,EAAez1P,GAAM,CAIjD,GAAiC,iBAAtB01P,EAAa11P,GAAmB,CACvC,MAAM41P,EAAWjwB,EAAOt1N,KAAKwlP,6BAA6BH,EAAa11P,GAAM21P,GAC7ED,EAAa11P,GAAO,CAAE,MAAO01P,EAAa11P,IAItC41P,IACAF,EAAa11P,GAAK,YAAa,EAC/By1P,EAAcz1P,GAAK,YAAa,GAIxC,MAAM81P,EAAc7C,EAAiBwC,EAAcz1P,IAOnD,GAHA01P,EAAa11P,GAAK,eAAgB,EAG9B81P,IAFe7C,EAAiByC,EAAa11P,IAG7C,MAAM,IAAI8yP,EAAaW,WAAW,+CAA+CzzP,UAAYiL,KAAKC,UAAUy6N,EAAOt1N,KAAKqkP,kBAAkBe,EAAcz1P,WAAaiL,KAAKC,UAAUy6N,EAAOt1N,KAAKqkP,kBAAkBgB,EAAa11P,OAAU8yP,EAAaa,YAAYoC,8BAUlRl9M,SAAS75C,GAAS,eAAEk2P,IAChB,IAAK,MAAMl1P,KAAOjC,OAAO0N,KAAKzM,GAAU,CAEpC,GAAI2mO,EAAOt1N,KAAKgkP,0BAA0Br0P,GACtC,SAGJ,GAAY,KAARA,EACA,MAAM,IAAI8yP,EAAaW,WAAW,wCAAwCzzP,QAAUiL,KAAKC,UAAUlM,EAAQgB,OAAU8yP,EAAaa,YAAYiB,yBAElJ,MAAM12P,EAAQc,EAAQgB,GAChBg2P,SAAmB93P,EAEzB,GAAIynO,EAAOt1N,KAAK4jP,mBAAmBj0P,GAAnC,CACI,OAAQA,EAAI8gB,OAAO,IACf,IAAK,QACD,GAAc,OAAV5iB,GAAgC,WAAd83P,EAClB,MAAM,IAAIlD,EAAaW,WAAW,gCAAgCv1P,IAAS40P,EAAaa,YAAYsC,uBAExG,MACJ,IAAK,OACD,GAAc,OAAV/3P,GAAgC,WAAd83P,EAClB,MAAM,IAAIlD,EAAaW,WAAW,+BAA+Bz0P,EAAQgB,KAAQ8yP,EAAaa,YAAYuC,kBAE9G,MACJ,IAAK,WACa,OAAVh4P,GACA4qO,EAAcqtB,iBAAiBj4P,GAAO,EAAM40P,EAAaa,YAAYyC,0BAEzE,MACJ,IAAK,UACD,GAAc,OAAVl4P,GAAgC,WAAd83P,EAClB,MAAM,IAAIlD,EAAaW,WAAW,qCAAqCv1P,IAAS40P,EAAaa,YAAY0C,uBAE7G,MACJ,IAAK,YACa,OAAVn4P,GACA4qO,EAAcwtB,kBAAkBp4P,GAAO,GAE3C,MACJ,IAAK,YACD,GAAuB,IAAnBg3P,EACA,MAAM,IAAIpC,EAAaW,WAAW,wCAAwCv1P,IAAS40P,EAAaa,YAAY4C,uBAEhH,GAAc,OAAVr4P,GAAgC,YAAd83P,EAClB,MAAM,IAAIlD,EAAaW,WAAW,sCAAsCv1P,IAAS40P,EAAaa,YAAY6C,yBAKtH,GAAI7wB,EAAOt1N,KAAK0jP,eAAe/zP,IAAQ2lO,EAAOt1N,KAAK0jP,eAAepuB,EAAOt1N,KAAKqkP,kBAAkBx2P,IAC5F,MAAM,IAAI40P,EAAaW,WAAW,gDAAgDzzP,QAAU2lO,EAAOt1N,KAC9FqkP,kBAAkBx2P,MAAW40P,EAAaa,YAAYa,2BAKnE,GAAc,OAAVt2P,EACA,OAAQ83P,GACJ,IAAK,SACD,GAAIrwB,EAAOt1N,KAAKomP,UAAUv4P,EAAOc,KAAagB,EAC1C,MAAM,IAAI8yP,EAAaW,WAAW,oDAAoDzzP,QAAUiL,KAC3FC,UAAUhN,MAAW40P,EAAaa,YAAY+C,oBAEvD,GAAI/wB,EAAOt1N,KAAKsmP,eAAe32P,GAAM,CACjC,GAAc,UAAV9B,EACA,MAAM,IAAI40P,EAAaW,WAAW,4CAA4CzzP,QAAU9B,KAAU40P,EAAaa,YAAYK,qBAE1H,GAAIruB,EAAOt1N,KAAK0kP,WAAW72P,IAAUA,IAAU,IAAI80P,EAA0B4D,wBAAwB53P,GAASkrO,WAAWlqO,GAC1H,MAAM,IAAI8yP,EAAaW,WAAW,iDAAiDzzP,QAAU9B,KAAU40P,EAAaa,YAAYK,qBAGxI,MACJ,IAAK,SACD,KAAKruB,EAAOt1N,KAAKwmP,aAAa72P,IAAU,QAAS9B,IACtB,QAAnBA,EAAM,SAAsBc,EAAQ,SAAYA,EAAQ,YAC5D,MAAM,IAAI8zP,EAAaW,WAAW,kCAAkCzzP,QAAUiL,KAAKC,UAAUhN,MAAW40P,EAAaa,YAAYK,qBAErI,IAAK,MAAM8C,KAAa/4P,OAAO0N,KAAKvN,GAAQ,CACxC,MAAM64P,EAAc74P,EAAM44P,GAC1B,GAAKC,EAGL,OAAQD,GACJ,IAAK,MACD,GAAInxB,EAAOt1N,KAAK0jP,eAAegD,IACR,UAAhBA,GAA2C,QAAhBA,GAAyC,WAAhBA,EACvD,MAAM,IAAIjE,EAAaW,WAAW,gDAAgDzzP,QAAUiL,KAAKC,UAAUhN,MAAW40P,EAAaa,YAAYK,qBAEnJ,GAAIruB,EAAOt1N,KAAKsmP,eAAe32P,GAAM,CACjC,GAAoB,UAAhB+2P,EACA,MAAM,IAAIjE,EAAaW,WAAW,4CAA4CzzP,QAAUiL,KAAKC,UAAUhN,MAAW40P,EAAaa,YAAYK,qBAE1I,GAAIruB,EAAOt1N,KAAK0kP,WAAWgC,IACzBA,IAAgB,IAAI/D,EAA0B4D,wBAAwB53P,GAASkrO,WAAWlqO,GAC7F,MAAM,IAAI8yP,EAAaW,WAAW,iDAAiDzzP,QAAUiL,KAAKC,UAAUhN,MAAW40P,EAAaa,YAAYK,qBAGxJ,GAA2B,iBAAhB+C,EACP,MAAM,IAAIjE,EAAaW,WAAW,8CAA8CzzP,QAAUiL,KAAKC,UAAUhN,MAAW40P,EAAaa,YAAYK,qBAEjJ,GAAIruB,EAAOt1N,KAAKomP,UAAUM,EAAa/3P,KAAagB,EAChD,MAAM,IAAI8yP,EAAaW,WAAW,oDAAoDzzP,QAAUiL,KAC3FC,UAAUhN,MAAW40P,EAAaa,YAAY+C,oBAEvD,MACJ,IAAK,QACD,GAA4B,UAAxBx4P,EAAM,eAA6C,QAAhB64P,GAAyC,WAAhBA,EAC5D,MAAM,IAAIjE,EAAaW,WAAW,iEAAiEzzP,QAAU+2P,KAAgBjE,EAAaa,YAAYqD,sBAE1J,GAA2B,iBAAhBD,EACP,MAAM,IAAIjE,EAAaW,WAAW,kDAAkDxoP,KAAKC,UAAU8qP,MAAelD,EAAaa,YAAYqD,sBAE/I,KAAoB,QAAhBD,GAAyC,WAAhBA,GACF,IAAnB7B,GAA0C,UAAhB6B,GACP,IAAnB7B,GAA0C,UAAhB6B,GACP,MAAnBA,EAAY,IAAepxB,EAAOt1N,KAAK0kP,WAAWgC,IACtD,MAAM,IAAIjE,EAAaW,WAAW,oDAAoDzzP,QAAU+2P,KAAgBjE,EAAaa,YAAYqD,sBAE7I,MACJ,IAAK,WACD,GAA2B,iBAAhBD,GAA4B74P,EAAM,QAAUA,EAAM,SAAW64P,EACpE,MAAM,IAAIjE,EAAaW,WAAW,uDAAuDzzP,OAC9H+2P,WAAqB74P,EAAM,UAAW40P,EAAaa,YAAYsD,0BAE9B,GAAI,UAAW/4P,EACX,MAAM,IAAI40P,EAAaW,WAAW,iDAAiDzzP,KAAQ8yP,EAAaa,YAAYsD,0BAExH,MACJ,IAAK,aACD,GAAuB,IAAnB/B,IACIn3P,OAAO0N,KAAKsrP,GAAanyP,OAAS,GAC/B+gO,EAAOt1N,KAAK6mP,eAAevgP,QAAQ5Y,OAAO0N,KAAKsrP,GAAa,IAAM,GACrE,MAAM,IAAIjE,EAAaW,WAAW,gCAAgCzzP,QAAUjC,OAAO0N,KAAKsrP,oCAC9GpxB,EAAOt1N,KAAK6mP,eAAe73O,KAAK,QAASyzO,EAAaa,YAAYwD,2BAGpD,IAAK,MAAM9B,KAAkBt3P,OAAO0N,KAAKsrP,GAAc,CACnD,GAAuB,UAAnB1B,GAA8Bn3P,EAAM,YACpC,MAAM,IAAI40P,EAAaW,WAAW,6EAA6EzzP,KAAQ8yP,EAAaa,YAAYsD,0BAEpJ,GAAItxB,EAAOt1N,KAAK+mP,WAAWzgP,QAAQ0+O,GAAkB,EACjD,MAAM,IAAIvC,EAAaW,WAAW,gCAAgCzzP,QAAUq1P,uBACvG1vB,EAAOt1N,KAAK+mP,WAAW/3O,KAAK,QAASyzO,EAAaa,YAAYwD,2BAG3C,MACJ,IAAK,YACDruB,EAAcqtB,iBAAiBY,GAAa,EAAMjE,EAAaa,YAAY0D,0BAC3E,MACJ,IAAK,aACDvuB,EAAcwtB,kBAAkBS,GAAa,GAC7C,MACJ,IAAK,UACD,GAAoB,OAAhBA,GAA+C,kBAAhBA,EAC/B,MAAM,IAAIjE,EAAaW,WAAW,8CAA8CzzP,QAAUiL,KAAKC,UAAUhN,MAAW40P,EAAaa,YAAY2D,sBAEjJ,KAAM,QAASp5P,KAAWynO,EAAOt1N,KAAK0kP,WAAW/0P,GAC7C,MAAM,IAAI8yP,EAAaW,WAAW,mCAAmCzzP,QAAUiL,KAAKC,UAAUhN,MAAW40P,EAAaa,YAAYiB,yBAEtI,MACJ,IAAK,SACD,GAAuB,IAAnBM,IAA2Bh3P,EAAM,gBAAkBA,EAAM,cAAc,UACvE,MAAM,IAAI40P,EAAaW,WAAW,gDAAgDzzP,QAAUiL,KAAKC,UAAUhN,MAAW40P,EAAaa,YAAYiB,yBAEnJ,MACJ,IAAK,QACD,GAAIjvB,EAAOt1N,KAAK4jP,mBAAmB8C,IAAgC,UAAhBA,EAC/C,MAAM,IAAIjE,EAAaW,WAAW,0CAA0CzzP,QAAUiL,KAAKC,UAAUhN,MAAW40P,EAAaa,YAAY4D,qBAIzJ,MACJ,QACI,MAAM,IAAIzE,EAAaW,WAAW,iCAAiCzzP,QAAU9B,KAAU40P,EAAaa,YAAYiB,2BAYpI4C,eAAex4P,EAASkR,EAASunP,GAE7B,MAAuB,iBAAZz4P,IAIPy4P,KAAuB,UAAWz4P,IAAYkR,EAAQwnP,eAClB,iBAA1BxnP,EAAQwnP,eAA8B,UAAWxnP,EAAQwnP,gBACnE14P,EAAQ,SAAWkR,EAAQwnP,cAAc,SACrCxnP,EAAQwnP,cAAc,qBACtB14P,EAAQ,oBAAqB,IAIjCkR,EAAQ/I,UAAY+I,EAAQynP,WACtB,UAAW34P,EAKa,OAArBA,EAAQ,UAAiD,iBAArBA,EAAQ,UAC7C2mO,EAAOt1N,KAAK0kP,WAAW/1P,EAAQ,YAEnCA,EAAQ,SAAW6+K,EAA2B/zK,QAAQ9K,EAAQ,SAAUkR,EAAQwnP,eAAiBxnP,EAAQwnP,cAAc,UAAYxnP,EAAQ/I,WAN3InI,EAAQ,SAAWkR,EAAQ/I,QAC3BnI,EAAQ,oBAAqB,KAf1BA,EA+Bf44P,oBAAoBC,EAAY1wP,GAC5B,IAAKw+N,EAAOt1N,KAAK0kP,WAAW8C,GACxB,IACIA,EAAah6E,EAA2B/zK,QAAQ+tP,EAAY1wP,GAEhE,MAAO2Y,GACH,MAAM,IAAIzgB,MAAM,wBAAwBw4P,KAOhD,OAHIh5P,KAAKy0P,wBAA0BuE,EAAW1xO,WAAW,uBACrD0xO,EAAa,uBAEVA,EAQXp5P,yBAAyBO,EAASkR,GAC9B,IAAK,MAAMlQ,KAAOjC,OAAO0N,KAAKzM,GAAU,CACpC,MAAMd,EAAQc,EAAQgB,GACtB,GAAI9B,GAA0B,iBAAVA,GACZ,aAAcA,GAA+B,OAAtBA,EAAM,cAAyBgS,EAAQ4nP,qBAAsB,CAMpF,GAAIj5P,KAAKs0P,gBACL,IACI,MAAMuE,EAAgB35P,OAAO4W,OAAO,GAAI3V,GACxC04P,EAAc13P,GAAOjC,OAAO4W,OAAO,GAAI+iP,EAAc13P,WAC9C03P,EAAc13P,GAAK,kBACpBnB,KAAK+nB,MAAM1oB,EAAM,YAAaH,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIzE,GAAU,CAAEwnP,cAAAA,EAAeK,kBAAkB,EAAMC,4BAA4B,EAAMF,sBAAsB,KAEnL,MAAOxqO,GACH,MAAM,IAAIwlO,EAAaW,WAAWnmO,EAAE/X,QAASu9O,EAAaa,YAAYsE,wBAG9E/5P,EAAM,mBAAqBW,KAAK+nB,MAAM1oB,EAAM,YAAaH,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIzE,GAAU,CAAEgoP,mBAAmB,EAAMF,4BAA4B,EAAMN,cAAe14P,MAC1KwrO,iBAIjB,OAAOxrO,EAQXP,YAAYO,EAASkR,EAAU,IAC3B,MAAM,QAAE/I,EAASuwP,cAAeS,EAAoB,SAAER,EAAQ,eAAEzC,EAAiBpsB,EAAcsvB,wBAAuB,sBAAEjD,EAAqB,iBAAE4C,EAAgB,kBAAEG,GAAuBhoP,EACxL,IAAIwnP,EAAgBS,EACpB,MAAME,EAAiBnoP,EAAQmoP,gBAAkB,GAEjD,GAAIt6P,OAAO0N,KAAK4sP,GAAgBzzP,QAAU/F,KAAKw0P,yBAC3C,MAAM,IAAIP,EAAaW,WAAW,sDAAwD11P,OAAO0N,KAAK4sP,GAAiBvF,EAAaa,YAAY2E,kBAEpJ,GAAIt5P,MAAAA,EAA2C,CAE3C,IAAK+4P,GAAoBL,GAAiB/xB,EAAOt1N,KAAKkoP,kBAAkBb,GACpE,MAAM,IAAI5E,EAAaW,WAAW,yDAA0DX,EAAaa,YAAY6E,+BAGzH,OAAO,IAAIxF,EAA0B4D,wBAAwB/3P,KAAK24P,eAAe,GAAItnP,GAAS,IAE7F,GAAuB,iBAAZlR,EAAsB,CAClC,MAAM64P,EAAah5P,KAAK+4P,oBAAoB54P,EAASmI,GAC/CsxP,EAAiB55P,KAAK65P,kBAAkBb,EAAY3nP,GAC1D,GAAIuoP,EACA,OAAO,IAAIzF,EAA0B4D,wBAAwB6B,GAEjE,MAAME,QAA4B95P,KAAK+nB,YAAY/nB,KAAK0mC,KAAKsyN,GAAa95P,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIzE,GAAU,CAAE/I,QAAS0wP,EAAYF,UAAU,EAAMU,eAAgBt6P,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI0jP,GAAiB,CAAE,CAACR,IAAa,OAE5O,OADAh5P,KAAK24P,eAAemB,EAAoBnuB,gBAAiBt6N,GAAS,GAC3DyoP,EAEN,GAAIh+O,MAAMC,QAAQ5b,GAAU,CAE7B,MAAM45P,EAAc,GACdvkP,QAAiBxK,QAAQ4nB,IAAIzyB,EAAQ6F,KAAI,CAAC2K,EAAYiI,KACxD,GAA0B,iBAAfjI,EAAyB,CAChC,MAAMqoP,EAAah5P,KAAK+4P,oBAAoBpoP,EAAYrI,GACxDyxP,EAAYnhP,GAAKogP,EAEjB,OADuBh5P,KAAK65P,kBAAkBb,EAAY3nP,IAInDrR,KAAK0mC,KAAKsyN,GAGjB,OAAOroP,MAIf,GAAI0oP,EACA,OAAO,IAAIlF,EAA0B4D,wBAAwBviP,GAEjE,MAAMwkP,QAAwBxkP,EAAS+D,QAAO,CAAC0gP,EAAmBvpB,EAAc93N,IAAMqhP,EACjF9tP,MAAM+tP,GAAel6P,KAAK+nB,MAAM2oN,EAAcxxO,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIzE,GAAU,CAAE/I,QAASyxP,EAAYnhP,IAAMvH,EAAQ/I,QAASwwP,WAAYiB,EAAYnhP,IAAMvH,EAAQynP,SAAUD,cAAeqB,EAAWvuB,gBAAiB6tB,eAAgBO,EAAYnhP,GAAK1Z,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI0jP,GAAiB,CAAE,CAACO,EAAYnhP,KAAK,IAAU4gP,QAAqBxuP,QAAQC,QAAQ,IAAIkpP,EAA0B4D,wBAAwBc,GAAiB,MAGlc,OADA74P,KAAK24P,eAAeqB,EAAgBruB,gBAAiBt6N,GAAS,GACvD2oP,EAEN,GAAuB,iBAAZ75P,EAAsB,CAClC,GAAI,aAAcA,EACd,aAAaH,KAAK+nB,MAAM5nB,EAAQ,YAAakR,GAGjDlR,EAAUiM,KAAK2b,MAAM3b,KAAKC,UAAUlM,IAChC04P,IAAkBQ,IAClBR,EAAgBzsP,KAAK2b,MAAM3b,KAAKC,UAAUwsP,KAG9C,IAAIsB,EAAa,GAWjB,GATIrB,UACO34P,EAAQ,SAGnBH,KAAK24P,eAAex4P,EAASkR,GAAS,GAGtCrR,KAAKu2P,iBAAiBp2P,GAElBk5P,EACA,OAAO,IAAIlF,EAA0B4D,wBAAwB53P,GAGjE,IAAIi6P,EAAgB,GACpB,GAAI,YAAaj6P,EAAS,CACtB,KAAIk2P,GAAkB,KAUlB,MAAM,IAAIpC,EAAaW,WAAW,oDAAqDX,EAAaa,YAAY4C,uBARhH,GAAkC,iBAAvBv3P,EAAQ,WACf,MAAM,IAAI8zP,EAAaW,WAAW,qDAAuDz0P,EAAQ,WAAY8zP,EAAaa,YAAYuF,sBAG1ID,QAAsBp6P,KAAKs6P,kBAAkBt6P,KAAK+4P,oBAAoB54P,EAAQ,WAAYmI,WACnFnI,EAAQ,WAOvBg6P,EAAaj7P,OAAO4W,OAAO5W,OAAO4W,OAAO5W,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIqkP,GAAuC,iBAAlBtB,EAA6BA,EAAgB,IAAMuB,GAAgBj6P,GACjK,MAAMo6P,EAAoB,IAAIpG,EAA0B4D,wBAAwBoC,GAqBhF,aAnBMn6P,KAAKw6P,mBAAmBL,EAAY9oP,IAErC8oP,GAAcA,EAAW,aAAelwB,EAAcsvB,0BAA4B,MAC9Ep5P,EAAQ,WAA0C,iBAAtBA,EAAQ,WAAiD,KAAtBA,EAAQ,YACzEA,EAAQ,UAAU2X,QAAQ,KAAO,GAAK+gP,GAAiB,WAAYA,IACtEsB,EAAW,UAAYtB,EAAc,UAAY14P,EAAQ,WAG7DH,KAAKi1P,kBAAkBkF,GACvBn6P,KAAKq1P,oBAAoBkF,EAAmBv6P,KAAKu0P,0BAE5C2E,GAAoBL,GAAiBxC,GAAkB,KACxDr2P,KAAK22P,6BAA6BkC,EAAesB,EAAY/6P,EAAQ40P,sBAEzEh0P,KAAKo2P,UAAU+D,EAAY,CAAE9D,eAAAA,EAAgBC,sBAAAA,IAC7Ct2P,KAAKy2P,qBAAqB0D,EAAY,CAAE9D,eAAAA,IACpCr2P,KAAKs0P,iBACLt0P,KAAKg6C,SAASmgN,EAAY,CAAE9D,eAAAA,IAEzBkE,EAGP,MAAM,IAAItG,EAAaW,WAAW,0EAA0Ez0P,IAAW8zP,EAAaa,YAAY2F,uBAQxJ76P,WAAW6D,GAEP,MAAMwsB,EAASjwB,KAAKq0P,cAAc5wP,GAClC,GAAIwsB,EACA,MAAyB,iBAAXA,EAAsBA,EAASnU,MAAMC,QAAQkU,GAAUA,EAAO5M,QAAUnkB,OAAO4W,OAAO,GAAIma,GAG5G,IAAIsZ,EACJ,IACIA,QAAiBvpC,KAAK4U,eAAe8xB,KAAKjjC,GAE9C,MAAOgrB,GACH,MAAM,IAAIwlO,EAAaW,WAAW,iCAAiCnxP,MAAQgrB,EAAE/X,UAAWu9O,EAAaa,YAAY4F,+BAGrH,KAAM,aAAcnxN,GAChB,MAAM,IAAI0qN,EAAaW,WAAW,yCAAyCnxP,IAAOwwP,EAAaa,YAAY6F,wBAE/G,OAAO36P,KAAKq0P,cAAc5wP,GAAO8lC,EAAS,YAW9CswN,kBAAkBp2P,EAAK4N,GACnB,GAAI5N,KAAQ4N,EAAQmoP,gBAAkB,IAAK,CACvC,GAAInoP,EAAQ8nP,2BACR,OAAO11P,EAGP,MAAM,IAAIwwP,EAAaW,WAAW,0CAA4CnxP,EAAKwwP,EAAaa,YAAY8F,6BAGpH,OAAO,KAMXh7P,wBAAwBi7P,GAEpB,MAAMT,QAAsBp6P,KAAK0mC,KAAKm0N,GAEtC,GAA6B,iBAAlBT,GAA8Bt+O,MAAMC,QAAQq+O,GACnD,MAAM,IAAInG,EAAaW,WAAW,gDAAkDiG,EAAkB5G,EAAaa,YAAY6F,wBAGnI,GAAI,YAAaP,EACb,MAAM,IAAInG,EAAaW,WAAW,uDAAyDiG,EAAkB5G,EAAaa,YAAY4C,uBAK1I,OADA13P,KAAKu2P,iBAAiB6D,GACfA,GAGfh7P,EAAQ6qO,cAAgBA,EACxBA,EAAcsvB,wBAA0B,IACxCn6P,EAAQ40P,qBAAuB,CAC3B8G,oBAAoB,EACpBC,yBAAyB,EACzBC,0BAA0B,+BCrvB9B97P,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ01P,YAAc11P,EAAQw1P,gBAAa,EAO3C,MAAMA,UAAmBp0P,MAErBf,YAAYiX,EAAS+F,GACjB9c,MAAM+W,GACN1W,KAAKyc,KAAOA,GAUpB,IAAWq4O,EAPX11P,EAAQw1P,WAAaA,GAOVE,EAmDM11P,EAAQ01P,cAAgB11P,EAAQ01P,YAAc,KAlD3B,mBAAI,qBACpCA,EAAiC,oBAAI,sBACrCA,EAAgC,mBAAI,qBACpCA,EAA8B,iBAAI,oBAClCA,EAAiC,oBAAI,uBACrCA,EAAgC,mBAAI,sBACpCA,EAAkC,qBAAI,wBACtCA,EAAqC,wBAAI,2BACzCA,EAAmC,sBAAI,yBACvCA,EAAkC,qBAAI,wBACtCA,EAAmC,sBAAI,yBACvCA,EAA8B,iBAAI,mBAClCA,EAAuC,0BAAI,4BAC3CA,EAAmC,sBAAI,wBACvCA,EAA2C,8BAAI,gCAC/CA,EAAsC,yBAAI,2BAC1CA,EAAoC,uBAAI,0BACxCA,EAAiC,oBAAI,sBACrCA,EAAkC,qBAAI,uBACtCA,EAAmC,sBAAI,wBACvCA,EAAwC,2BAAI,6BAC5CA,EAAsC,yBAAI,2BAC1CA,EAA4C,+BAAI,iCAChDA,EAA2C,8BAAI,gCAC/CA,EAAmC,sBAAI,wBACvCA,EAAoC,uBAAI,yBACxCA,EAAsC,yBAAI,2BAC1CA,EAA0C,6BAAI,+BAC9CA,EAA4C,+BAAI,iCAChDA,EAAoC,uBAAI,yBACxCA,EAAoC,uBAAI,yBACxCA,EAAwC,2BAAI,6BAC5CA,EAAqC,wBAAI,0BACzCA,EAAkC,qBAAI,uBACtCA,EAAgC,mBAAI,qBACpCA,EAAiC,oBAAI,sBACrCA,EAAkC,qBAAI,uBACtCA,EAAwC,2BAAI,6BAC5CA,EAAmC,sBAAI,wBACvCA,EAAsC,yBAAI,2BAC1CA,EAAkC,qBAAI,uBACtCA,EAAqC,wBAAI,0BACzCA,EAA2C,8BAAI,gCAC/CA,EAA2C,8BAAI,gCAC/CA,EAAsC,yBAAI,2BAC1CA,EAAyC,4BAAI,8BAC7CA,EAA8B,iBAAI,mBAClCA,EAAoC,uBAAI,yBACxCA,EAAyC,4BAAI,8BAC7CA,EAAyC,4BAAI,4DCxEjD51P,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+uM,yBAAsB,EAC9B,EAAQ,OACR,MAAM8lD,EAAe,EAAQ,OACvBgH,EAAqB,EAAQ,OAC7Bj8E,EAA6B,EAAQ,OAmD3C5/K,EAAQ+uM,oBA/CR,MACI1uM,YAAYy7P,GACRl7P,KAAKk7P,QAAUA,EAEnBt7P,WAAW6D,GACP,MAAMgtB,QAAkBzwB,KAAKk7P,SAAWhnP,OAAOzQ,EAAK,CAAEK,QAAS,IAAIm9E,QAAQ,CAAEk6K,OAAQ,0BACrF,GAAI1qO,EAAS29C,IAAM39C,EAAS3sB,QAAS,CACjC,IAAIxC,EAAYmvB,EAAS3sB,QAAQzB,IAAI,gBACrC,GAAIf,EAAW,CACX,MAAM85P,EAAW95P,EAAUwW,QAAQ,KAC/BsjP,EAAW,IACX95P,EAAYA,EAAU2gB,OAAO,EAAGm5O,IAGxC,GAAkB,wBAAd95P,EAEA,aAAcmvB,EAASQ,OAIvB,GAAIR,EAAS3sB,QAAQoE,IAAI,QAAS,CAC9B,IAAImzP,EAcJ,GAbA5qO,EAAS3sB,QAAQ5C,SAAQ,CAAC7B,EAAO8B,KAC7B,GAAY,SAARA,EAAgB,CAChB,MAAMm6P,EAAaL,EAAmBlzO,MAAM1oB,GAC5C,IAAK,MAAMk+L,KAAQ+9D,EAAWj5P,IAAI,OAAQ,uBACtC,GAAiB,cAAbk7L,EAAKi1D,IAAqB,CAC1B,GAAI6I,EACA,MAAM,IAAI76P,MAAM,kDAAoDiD,GAExE43P,EAAer8E,EAA2B/zK,QAAQsyL,EAAK/pI,IAAK/vD,QAKxE43P,EACA,OAAOr7P,KAAK0mC,KAAK20N,GAGzB,MAAM,IAAIpH,EAAaW,WAAW,kCAAkCtzP,IAAa2yP,EAAaa,YAAYyG,yBAI9G,MAAM,IAAI/6P,MAAMiwB,EAASmR,YAAc,gBAAgBnR,EAASO,wCCpD5E9xB,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,gCCCtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,kCCDtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ24P,6BAA0B,EAClC,MAAM/4E,EAA6B,EAAQ,OACrCw8E,EAAkB,EAAQ,OAC1BvH,EAAe,EAAQ,OACvBntB,EAAS,EAAQ,OAiKvB1nO,EAAQ24P,wBA7JR,MACIt4P,YAAY61P,GACRt1P,KAAKs1P,WAAaA,EAKtB3pB,gBACI,OAAO3rO,KAAKs1P,WAuBhBjqB,WAAWj6N,EAAMqqP,EAAapqP,EAAUmqP,EAAgBxH,sBACpD,MAAM5oB,EAAeprO,KAAKs1P,WAAWlkP,GAErC,GAAqB,OAAjBg6N,GAA0BA,GAAwC,OAAxBA,EAAa,OACvD,OAAO,KAGX,IAAIswB,GAAkB,EACtB,GAAItwB,GAAgBqwB,EAAa,CAC7B,MAAMp8P,EAAQynO,EAAOt1N,KAAKqkP,kBAAkBzqB,GAC5C,GAAI/rO,GAASA,IAAU+R,EAAM,CACzB,GAAqB,iBAAV/R,IAAwBynO,EAAOt1N,KAAK0kP,WAAW72P,IAAWynO,EAAOt1N,KAAK0jP,eAAe71P,IAO5F,OAAOA,EALFynO,EAAOt1N,KAAK4jP,mBAAmB/1P,KAChCq8P,GAAkB,IASlC,MAAM/6N,EAASmmM,EAAOt1N,KAAKomP,UAAUxmP,EAAMpR,KAAKs1P,YAC1CqG,EAAQ37P,KAAKs1P,WAAW,UACxBsG,KAAmBD,GAAmB,KAAVA,IAAiBA,EAAM7jP,QAAQ,KAAO,EAClEsqI,EAAOpiJ,KAAKs1P,WAAW,SACvBuG,EAAmB/0B,EAAOt1N,KAAK4jP,mBAAmBhkP,GACxD,GAAIuvB,EAAQ,CACR,MAAMm7N,EAAqB97P,KAAKs1P,WAAW30N,GACrCthC,EAAQynO,EAAOt1N,KAAKqkP,kBAAkBiG,GAC5C,GAAIz8P,EAAO,CACP,GAAkC,iBAAvBy8P,GAAoCzqP,EAAQypP,oBAWnD,GAAiB,MAAbz7P,EAAM,KAAew8P,IAAqBC,EAAmB,cAAgB1qP,KAAQpR,KAAKs1P,YAE1F,OAAOlkP,OATX,IAAK01N,EAAOt1N,KAAKwlP,6BAA6B33P,EAAOgS,GAEjD,OAAOD,EAUf,OAAO/R,EAAQ+R,EAAK6Q,OAAO0e,EAAO56B,OAAS,QAG9C,IAAI01P,IAAiBE,GAAmB,KAAVA,GAAkBtqP,EAAQ2pP,0BAA6B54G,GAAQw5G,KAC1FC,IAAqB/0B,EAAOt1N,KAAKwmP,aAAa5mP,GAAO,CACzD,GAAIwqP,EAAe,CACf,GAAIvqP,EAAQ2pP,yBACR,OAASW,GAASv5G,EAAQ48B,EAA2B/zK,QAAQ0wP,EAAOv5G,GAAQ,IAAMhxI,EAGlF,MAAM,IAAI6iP,EAAaW,WAAW,sCAAsCxjP,kBAAqBuqP,qBAA0B1H,EAAaa,YAAYsC,uBAIpJ,OAAOuE,EAAQvqP,EAGlB,IAAKqqP,GAAer5G,IAASy5G,IAAqB/0B,EAAOt1N,KAAKwmP,aAAa5mP,GAC5E,OAAO4tK,EAA2B/zK,QAAQmG,EAAMgxI,GAGpD,GAAIs5G,EACA,OAAOtqP,EAGP,MAAM,IAAI6iP,EAAaW,WAAW,gDAAgDxjP,QAAWhF,KAAKC,UAAU++N,MAAkB6oB,EAAaa,YAAYK,qBAa/J4G,WAAWh3K,EAAK42K,GAEZ,GAAIA,GAAS37P,KAAKs1P,WAAW,WAAavwK,EAAIz9D,WAAWtnB,KAAKs1P,WAAW,WACrE,OAAOvwK,EAAI9iE,OAAOjiB,KAAKs1P,WAAW,UAAUvvP,QAGhD,IAAK41P,GAAS37P,KAAKs1P,WAAW,UAAYvwK,EAAIz9D,WAAWtnB,KAAKs1P,WAAW,UACrE,OAAOvwK,EAAI9iE,OAAOjiB,KAAKs1P,WAAW,SAASvvP,QAK/C,MAAMi2P,EAAoB,CAAEr7N,OAAQ,GAAIwxL,OAAQptI,GAChD,IAAK,MAAM5jF,KAAOnB,KAAKs1P,WAAY,CAC/B,MAAMj2P,EAAQW,KAAKs1P,WAAWn0P,GAC9B,GAAI9B,IAAUynO,EAAOt1N,KAAK4jP,mBAAmBj0P,GAAM,CAC/C,MAAM63P,EAAalyB,EAAOt1N,KAAKqkP,kBAAkBx2P,GACjD,GAAI0lF,EAAIz9D,WAAW0xO,GAAa,CAC5B,MAAM7mC,EAASptI,EAAI9iE,OAAO+2O,EAAWjzP,QACrC,GAAKosN,EAMIA,EAAOpsN,OAASi2P,EAAkB7pC,OAAOpsN,SAE9Ci2P,EAAkBr7N,OAASx/B,EAC3B66P,EAAkB7pC,OAASA,QAR3B,GAAIwpC,EAEA,OAAOx6P,IAY3B,OAAI66P,EAAkBr7N,OACXq7N,EAAkBr7N,OAAS,IAAMq7N,EAAkB7pC,OAEvDptI,gCCnKf7lF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoS,UAAO,EACf,MAAMA,EAOFpH,oBAAoBgH,GAChB,OAAOA,EAAK0G,QAAQ,KAAO,KAAO1G,GAAoB,MAAZA,EAAK,IASnDhH,iBAAiBgH,EAAMjR,GAEnB,GAAIiR,GAAoB,MAAZA,EAAK,GACb,OAAO,KAEX,MAAM6qP,EAAe7qP,EAAK0G,QAAQ,KAClC,GAAImkP,GAAgB,EAAG,CAEnB,GAAI7qP,EAAKrL,OAASk2P,EAAe,GACQ,MAAlC7qP,EAAKi/B,OAAO4rN,EAAe,IACO,MAAlC7qP,EAAKi/B,OAAO4rN,EAAe,GAC9B,OAAO,KAEX,MAAMt7N,EAASvvB,EAAK6Q,OAAO,EAAGg6O,GAE9B,GAAe,MAAXt7N,EACA,OAAO,KAGX,GAAIxgC,EAAQwgC,GACR,OAAOA,EAGf,OAAO,KAOXv2B,yBAAyBghO,GACrB,GAAqB,OAAjBA,GAAiD,iBAAjBA,EAChC,OAAOA,EAGX,OADWA,EAAa,QACP,KAQrBhhO,oCAAoC/K,EAAOgS,GACvC,OAAQG,EAAK4jP,mBAAmB/1P,KACX,MAAbA,EAAM,IAAcgS,EAAQ0pP,yBAA2BvpP,EAAK0qP,8BAA8B78P,IAOtG+K,0BAA0Bq4I,GACtB,MAA0B,iBAAZA,GAAwBjxI,EAAK2qP,cAAchkP,KAAKsqI,GAOlEr4I,qCAAqCgyP,GACjC,OAAO5qP,EAAK6qP,oBAAoBlkP,KAAKikP,GAOzChyP,qBAAqB/K,GACjB,OAAOA,IAA2B,iBAAVA,GAAuBA,GAA0B,iBAAVA,GAOnE+K,kBAAkB26E,GACd,OAAOvyE,QAAQuyE,GAAOvzE,EAAK8qP,UAAUnkP,KAAK4sE,IAO9C36E,sBAAsB26E,GAClB,QAASA,GAAkB,MAAXA,EAAI,IAAcvzE,EAAK+qP,eAAepkP,KAAK4sE,GAO/D36E,sBAAsBq4I,GAClB,OAAOjxI,EAAKgrP,eAAe/5G,GAQ/Br4I,uBAAuBjK,EAASgB,GAC5B,MAAM9B,EAAQc,EAAQgB,GACtB,QAA0B,iBAAV9B,IAAuBA,GAASA,EAAM,cAO1D+K,yBAAyBjK,GACrB,IAAK,MAAMgB,KAAOjC,OAAO0N,KAAKzM,GAC1B,GAAIqR,EAAKklP,gBAAgBv2P,EAASgB,GAC9B,OAAO,EAGf,OAAO,EAMXiJ,iCAAiCjJ,GAC7B,OAAOA,EAAImmB,WAAW,QAG9BloB,EAAQoS,KAAOA,EAEfA,EAAK8qP,UAAY,6DAEjB9qP,EAAK+qP,eAAiB,eAEtB/qP,EAAK2qP,cAAgB,aAErB3qP,EAAK6qP,oBAAsB,eAE3B7qP,EAAKqjP,mBAAqB,8BAE1BrjP,EAAKwjP,oBAAsB,gBAG3BxjP,EAAKgrP,eAAiB,CAClB,SAAS,EACT,cAAc,EACd,YAAY,EACZ,cAAc,EACd,UAAU,EACV,OAAO,EACP,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACZ,UAAU,GAGdhrP,EAAK+jP,sBAAwB,CACzB,QACA,SACA,YACA,WACA,cAGJ/jP,EAAKkkP,uBAAyB,CAC1B,aACA,SACA,MACA,SACA,QACA,QACA,QACA,UACA,WACA,OACA,QACA,SACA,YAGJlkP,EAAKokP,sBAAwB,CACzB,WACA,aAGJpkP,EAAK+mP,WAAa,CACd,QACA,OACA,SACA,YACA,SACA,MACA,SAGJ/mP,EAAK6mP,eAAiB,CAClB,QACA,OACA,8CCpOJ,IAAI72P,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAuBlD,8BCX5CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQq9P,iBAAc,EAOtB,MAAMA,EACFh9P,cACIO,KAAK08P,SAAW,GAEpBC,WAAW/vP,GACP,GAAIA,EAAK7G,OAAS,EAAG,CACjB,MAAO27G,KAASnC,GAAQ3yG,EAClBitJ,EAAU75J,KAAK08P,SAASh7I,GAC9B,GAAIm4C,EAAS,CACT,MAAMlpJ,EAAakpJ,EAAQ8iG,WAAWp9I,GACtC,GAAI5uG,EACA,OAAOA,EAAWxE,MAAK,EAAGhM,QAAAA,EAASkzG,MAAAA,MAAY,CAAGlzG,QAAAA,EAASkzG,MAAOA,EAAQ,OAItF,OAAOrzG,KAAKG,QAAUH,KAAKG,QAAQgM,MAAMhM,IAAY,CAAGA,QAAAA,EAASkzG,MAAO,MAAQ,KAEpFupJ,WAAWhwP,EAAMzM,GACb,GAAoB,IAAhByM,EAAK7G,OACL/F,KAAKG,QAAUA,MAEd,CACD,MAAOuhH,KAASnC,GAAQ3yG,EACxB,IAAIitJ,EAAU75J,KAAK08P,SAASh7I,GACvBm4C,IACDA,EAAU75J,KAAK08P,SAASh7I,GAAQ,IAAI+6I,GAExC5iG,EAAQ+iG,WAAWr9I,EAAMp/G,IAGjC08P,cAAcnrP,GACV1R,KAAK48P,WAAWlrP,EAAM,OAG9BtS,EAAQq9P,YAAcA,gCC1CtBv9P,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0uM,kBAAe,EAEvB,MAAM1lH,EAAS,EAAQ,OACjB8lH,EAA0B,EAAQ,MAClCvjM,EAAW,EAAQ,OACnBmyP,EAA2B,EAAQ,OACnCC,EAA0B,EAAQ,OAClCC,EAAgC,EAAQ,MACxCC,EAA0B,EAAQ,OAClCC,EAA+B,EAAQ,OACvCC,EAA6B,EAAQ,OACrCC,EAA0B,EAAQ,OAClCC,EAAgC,EAAQ,MACxCC,EAA4B,EAAQ,OACpCC,EAA4B,EAAQ,OACpCC,EAAuC,EAAQ,OAC/CC,EAA6B,EAAQ,OACrCC,EAAmB,EAAQ,OAC3B52B,EAAS,EAAQ,OACjBm0B,EAAqB,EAAQ,OAInC,MAAMntD,UAAqBnjM,EAAS41H,UAChC9gI,YAAY4R,GACR1R,MAAM,CAAEgiI,oBAAoB,IAC5BtwH,EAAUA,GAAW,GACrBrR,KAAKqR,QAAUA,EACfrR,KAAK29P,eAAiB,IAAID,EAAiBE,eAAe1+P,OAAO4W,OAAO,CAAE0yE,OAAQxoF,MAAQqR,IAC1FrR,KAAK6mK,KAAO,IAAIigE,EAAOt1N,KAAK,CAAE7E,YAAa0E,EAAQ1E,YAAagxP,eAAgB39P,KAAK29P,iBACrF39P,KAAK69P,WAAa,IAAIz1K,EACtBpoF,KAAK89P,YAAc,GACnB99P,KAAK+9P,SAAW,GAChB/9P,KAAKg+P,oBAAsB,GAC3Bh+P,KAAKi+P,UAAY,EACjBj+P,KAAKk+P,SAAW,GAChBl+P,KAAKm+P,eAAiBnzP,QAAQC,UAC9BjL,KAAKo+P,4BACLp+P,KAAKwL,GAAG,OAAO,UACyB,IAAzBxL,KAAK69P,WAAW/sO,MACvB9wB,KAAKgM,KAAK,QAAS,IAAIxL,MAAM,yBAmBzC4J,wBAAwB9B,EAAShH,EAAWwC,EAASuN,GACjD,IAAIlR,EA0BAk+P,EAxBJ,GAAkB,wBAAd/8P,EAAqC,CAErC,GAAkB,qBAAdA,IAAqCA,EAAUo/E,SAAS,SACxD,MAAM,IAAIwtH,EAAwB0mD,WAAW,kCAAkCtzP,IAAa4sM,EAAwB4mD,YAAYyG,yBAgBpI,GAbIz3P,GAAWA,EAAQoE,IAAI,SACvBpE,EAAQ5C,SAAQ,CAAC7B,EAAO8B,KACpB,GAAY,SAARA,EAAgB,CAChB,MAAMm6P,EAAaL,EAAmBlzO,MAAM1oB,GAC5C,IAAK,MAAMk+L,KAAQ+9D,EAAWj5P,IAAI,MAAO,wCAAyC,CAC9E,GAAIlC,EACA,MAAM,IAAI+tM,EAAwB0mD,WAAW,uDAAyDtsP,EAAS4lM,EAAwB4mD,YAAYwJ,+BAEvJn+P,EAAUo9L,EAAK/pI,UAK1BrzD,KAAakR,MAAAA,OAAyC,EAASA,EAAQktP,gCACxE,MAAM,IAAIrwD,EAAwB0mD,WAAW,8CAA8CtzP,QAAgBgH,IAAW4lM,EAAwB4mD,YAAYyG,yBAKlK,GAAIz3P,GAAWA,EAAQoE,IAAI,gBAAiB,CACxC,MAAM49N,EAAchiO,EAAQzB,IAAI,gBAC1BymB,EAAQ,qBAAqB0K,KAAKsyM,GACpCh9M,GAAsB,2CAAbA,EAAM,KACfu1O,GAAmB,GAG3B,OAAO,IAAIvwD,EAAa5uM,OAAO4W,OAAO,CAAExN,QAAAA,EACpCnI,QAAAA,EACAk+P,iBAAAA,GAAoBhtP,GAAoB,KAOhD48L,OAAOxlH,GACH,MAAM/kF,EAAS,IAAIiH,EAAS21H,YAAY,CAAEqB,oBAAoB,IAC9Dl5C,EAAOj9E,GAAG,SAAUO,GAAU2hF,EAAO1hF,KAAK,QAASD,KACnD08E,EAAOj9E,GAAG,QAAStC,GAASxF,EAAO+B,KAAKyD,KACxCu/E,EAAOj9E,GAAG,OAAO,IAAM9H,EAAO+B,KAAK,QACnC,MAAMioF,EAAShqF,EAAOupH,KAAK,IAAI6gF,EAAa9tM,KAAKqR,UACjD,OAAOq8E,EAEX8/B,WAAW9kC,EAAO2C,EAAUr9E,GACxBhO,KAAK69P,WAAWpjP,MAAMiuE,GACtB1oF,KAAKm+P,eACAhyP,MAAK,IAAM6B,MAAajC,GAAUiC,EAASjC,KAapDnM,oBAAoBgN,EAAMvN,EAAOg0G,EAAOmrJ,GACpC,IAAIC,GAAc,EAGlB,GAAID,GAAkBnrJ,EAAQrzG,KAAKi+P,UAAW,CAE1C,MAAMS,EAAc1+P,KAAK29P,eAAegB,iBAAiB3+P,KAAKi+P,WAC1DS,IAEIA,EAAYr/P,OACZW,KAAKgM,KAAK,OAAQhM,KAAK6mK,KAAKl6J,YAAYnG,KAAKk4P,EAAYr/P,MAAOW,KAAK6mK,KAAK+3F,QAAS5+P,KAAK6mK,KAAKg4F,OAAQ7+P,KAAK6mK,KAAKi4F,oBAGnHJ,EAAYK,OAAOC,UAAW,EAC9Bh/P,KAAK29P,eAAesB,QAAQP,EAAYQ,cAAgB,GAAK,CAACR,EAAYK,QAC1E/+P,KAAK29P,eAAegB,iBAAiB5mP,OAAO/X,KAAKi+P,UAAW,UAItDlB,EAAwBoC,sBAAsBC,6BAA6Bp/P,KAAK29P,eAAgB39P,KAAKk+P,SAAUl+P,KAAKi+P,YAC1Hj+P,KAAK29P,eAAe0B,6BACf55P,KAAK,CAAE4tG,MAAOrzG,KAAKi+P,UAAWrxP,KAAM5M,KAAKk+P,SAAS76O,MAAM,EAAGrjB,KAAKk+P,SAASn4P,UAC9E04P,GAAc,SAGRz+P,KAAKs/P,YAAYt/P,KAAKi+P,UAAWj+P,KAAKk+P,UAGpD,MAAM/8P,QAAYnB,KAAK6mK,KAAK04F,eAAe3yP,EAAKymG,GAAQzmG,EAAMymG,GACxDmsJ,QAAkBx/P,KAAK6mK,KAAK44F,qBAAqB7yP,EAAMymG,GAC7DrzG,KAAK29P,eAAe+B,aAAarsJ,IAAS,EAC1C,IAAIssJ,GAAY,EAEZzxD,EAAwB18L,KAAK0jP,eAAe/zP,IAAsB,aAAdq+P,GAAoC,aAARr+P,GAChFnB,KAAKgM,KAAK,QAAS,IAAIkiM,EAAwB0mD,WAAW,kBAAkBv1P,iCAAsC6uM,EAAwB4mD,YAAY8K,+BAI1J,IAAIC,GAAa,EACb7/P,KAAK29P,eAAemC,gBAAgB/5P,OAAS,IAC7C85P,EAAa7/P,KAAK29P,eAAemC,gBAAgB9/P,KAAK29P,eAAemC,gBAAgB/5P,OAAS,GAAGo4L,UAErG,IAAK,IAAIvlL,EAAI2G,KAAK2vB,IAAI,EAAGlvC,KAAK29P,eAAemC,gBAAgB/5P,OAAS,GAAI6S,EAAIhM,EAAK7G,OAAS,EAAG6S,IAAK,CAChG,MAAMmnP,EAAmB//P,KAAK29P,eAAemC,gBAAgBlnP,KACrD5Y,KAAK29P,eAAemC,gBAAgBlnP,SAAW5Y,KAAKggQ,YAAYpzP,EAAKyW,MAAM,EAAGzK,EAAI,GAAIA,EAAGinP,IACjG,IAAKE,EAAiBntP,MAAO,CACzB5S,KAAK29P,eAAe+B,aAAarsJ,IAAS,EAC1CssJ,GAAY,EACZ,OAEME,GAAcE,EAAiB5hE,WACrC0hE,GAAa,GAQrB,GAJI7/P,KAAK6mK,KAAKo5F,UAAU5sJ,KACpBssJ,GAAY,GAGZA,EACA,IAAK,MAAMO,KAAgBpyD,EAAaqyD,eAAgB,CACpD,MAAM/+C,QAAmB8+C,EAAa/nP,KAAKnY,KAAK29P,eAAgB39P,KAAK6mK,KAAM1lK,EAAKyL,EAAMymG,GACtF,GAAI+tG,EAAY,OAEN8+C,EAAangQ,OAAOC,KAAK29P,eAAgB39P,KAAK6mK,KAAM1lK,EAAKyL,EAAMvN,EAAOg0G,EAAO+tG,GAE/E8+C,EAAaE,qBACbpgQ,KAAK29P,eAAe0C,gBAAgBhtJ,IAAS,GAEjD,OAKE,IAAVA,GAAev3F,MAAMC,QAAQ1c,UACvBW,KAAK6mK,KAAKy5F,qBAAqBjhQ,GAGrCo/P,GAAeprJ,EAAQrzG,KAAKi+P,WAE5Bj+P,KAAKy+P,YAAYz+P,KAAKi+P,WAE1Bj+P,KAAKi+P,UAAY5qJ,EACjBrzG,KAAKk+P,SAAWtxP,EAEhB5M,KAAK29P,eAAe4C,2BAA2BxoP,OAAOs7F,EAAQ,GAMlEorJ,YAAYprJ,GACRrzG,KAAK29P,eAAe0C,gBAAgBtoP,OAAOs7F,EAAO,GAClDrzG,KAAK29P,eAAe6C,eAAezoP,OAAOs7F,EAAO,GACjDrzG,KAAK29P,eAAe+B,aAAa3nP,OAAOs7F,EAAO,GAC/CrzG,KAAK29P,eAAesB,QAAQlnP,OAAOs7F,EAAO,GAC1CrzG,KAAK29P,eAAe8C,WAAW1oP,OAAOs7F,EAAQ,EAAG,GACjDrzG,KAAK29P,eAAe+C,wBAAwB3oP,OAAOs7F,EAAO,GAC1DrzG,KAAK29P,eAAegD,iBAAiB5oP,OAAOs7F,EAAO,GACnDrzG,KAAK29P,eAAemC,gBAAgB/nP,OAAOs7F,EAAQ,EAAG,GACtDrzG,KAAK29P,eAAeiD,aAAa7oP,OAAOs7F,EAAOrzG,KAAK29P,eAAeiD,aAAa76P,OAASstG,GAY7FzzG,kBAAkByzG,EAAOzmG,GACrB,IAAIi0P,EAAW7gQ,KAAK29P,eAAesB,QAAQ5rJ,GACtCwtJ,IACDA,EAAW7gQ,KAAK29P,eAAesB,QAAQ5rJ,GAAS,CAACrzG,KAAK6mK,KAAKl6J,YAAYqnH,cAG3E,MAAM8sI,EAAc9gQ,KAAK29P,eAAeoD,yBAAyB1tJ,GACjE,GAAIytJ,EAAa,CACb,IAAK,MAAMp6P,KAAWm6P,EAAU,CAC5B,MAAMG,QAAyBhhQ,KAAK6mK,KAAKo6F,oBAAoB5tJ,EAAOzmG,GAC9DysI,EAAUr5I,KAAK29P,eAAe8C,WAAWptJ,IAAU2tJ,GAAoB,EACvEhhQ,KAAK29P,eAAesB,QAAQ5rJ,EAAQ2tJ,EAAmB,GACvD,OAAOhhQ,KAAK6mK,KAAKq6F,uBAAuBt0P,EAAMymG,IACpD,GAAIgmC,EACA,IAAK,MAAMxyI,KAASwyI,EAAQ,CAExBr5I,KAAK29P,eAAe+B,aAAarsJ,IAAS,EAC1C,IAAK,MAAM8tJ,KAAiBL,EACpBK,EAAcn0J,QACdhtG,KAAK29P,eAAeyD,SAAS/tJ,EAAOrzG,KAAK6mK,KAAKl6J,YAAYnG,KAAK26P,EAAcv6P,OAAQu6P,EAAcx6P,UAAWD,EAASG,IAGvH7G,KAAK29P,eAAeyD,SAAS/tJ,EAAOrzG,KAAK6mK,KAAKl6J,YAAYnG,KAAKE,EAASy6P,EAAcx6P,UAAWw6P,EAAcv6P,OAAQC,QAKlI,CAED,MAAMw6P,EAAiBrhQ,KAAK29P,eAAe2D,+BAA+BjuJ,QAAcrzG,KAAK6mK,KAAKo6F,oBAAoB5tJ,EAAOzmG,GAAQ,GACrI,IAAK,MAAMu0P,KAAiBL,EACpBK,EAAcn0J,QACdq0J,EAAe57P,KAAK,CAChBmB,OAAQF,EACRC,UAAWw6P,EAAcx6P,UACzBD,QAASy6P,EAAcv6P,SAI3By6P,EAAe57P,KAAK,CAChBmB,OAAQu6P,EAAcv6P,OACtBD,UAAWw6P,EAAcx6P,UACzBD,QAAAA,KAMpB1G,KAAK29P,eAAeoD,yBAAyBhpP,OAAOs7F,EAAO,GAC3DrzG,KAAK29P,eAAeiD,aAAa7oP,OAAOs7F,EAAO,GAC/CrzG,KAAK29P,eAAegD,iBAAiB5oP,OAAOs7F,EAAO,GAGvD,MAAMkuJ,EAAcvhQ,KAAK29P,eAAe6D,yBAAyBnuJ,GACjE,GAAIkuJ,EAAa,CACb,IAAK,MAAM76P,KAAWm6P,EAAU,CAI5B,MAAMh6P,EAAkB,IAAVwsG,GAAoC,cAArB3sG,EAAQI,UAC7B9G,KAAK29P,eAAe8D,mBAAmD/6P,EAA9B1G,KAAK6mK,KAAKi4F,kBAC3D9+P,KAAK29P,eAAe+B,aAAarsJ,IAAS,EAC1C,IAAK,MAAM8tJ,KAAiBI,EACxBvhQ,KAAK29P,eAAeyD,SAAS/tJ,EAAOrzG,KAAK6mK,KAAKl6J,YAAYnG,KAAK26P,EAAcz6P,QAASy6P,EAAcx6P,UAAWw6P,EAAcv6P,OAAQC,IAG7I7G,KAAK29P,eAAe6D,yBAAyBzpP,OAAOs7F,EAAO,IAUnEzzG,kBAAkBgN,EAAMymG,EAAOwsJ,GAC3B,IAAK,MAAMK,KAAgBpyD,EAAaqyD,eACpC,SAAUD,EAAalmN,SAASh6C,KAAK29P,eAAgB39P,KAAK6mK,KAAMj6J,EAAMymG,EAAOwsJ,GACzE,MAAO,CAAEjtP,OAAO,EAAMurL,SAAU0hE,GAAcK,EAAawB,qBAGnE,MAAO,CAAE9uP,OAAO,EAAOurL,UAAU,GAOrCigE,4BAEIp+P,KAAK69P,WAAWh1K,QAAWxpF,IACvB,MAAMg0G,EAAQrzG,KAAK69P,WAAW92K,MAAMhhF,OAC9B6G,EAAQ,IAAIkP,MAAMu3F,EAAQ,GAAG9xC,KAAK,GAAIv7D,KAAI,CAAC20B,EAAG/hB,IACzCA,IAAMy6F,EAAQrzG,KAAK69P,WAAW18P,IAAMnB,KAAK69P,WAAW92K,MAAMnuE,GAAGzX,MAExE,IAAKnB,KAAK2hQ,sBAAsBtuJ,GAAQ,CACpC,MAAMuuJ,EAAa,IAAM5hQ,KAAK6hQ,cAAcj1P,EAAMvN,EAAOg0G,GAAO,GAChE,GAAKrzG,KAAK29P,eAAeU,kBACjBr+P,KAAK29P,eAAemE,YAAYnF,WAAW/vP,EAAKyW,MAAM,GAAI,IAwB9DrjB,KAAKm+P,eAAiBn+P,KAAKm+P,eAAehyP,KAAKy1P,QAlB/C,GAAoB,aAAhBh1P,EAAKymG,GAAuB,CAC5B,IAAI0uJ,EAAO/hQ,KAAK89P,YAAYzqJ,GACvB0uJ,IACDA,EAAO/hQ,KAAK89P,YAAYzqJ,GAAS,IAErC0uJ,EAAKt8P,KAAKm8P,OAEW,UAAhBh1P,EAAKymG,IACgB,iBAAhBzmG,EAAKymG,IAA2C,UAApBzmG,EAAKymG,EAAQ,GAEnDrzG,KAAK+9P,SAASt4P,KAAK,CAAEu8P,IAAKJ,EAAYh1P,KAAMA,EAAKyW,MAAM,EAAGzW,EAAK7G,OAAS,KAGxE/F,KAAKg+P,oBAAoBv4P,KAAK,CAAEu8P,IAAKJ,EAAYh1P,KAAAA,IAQpD5M,KAAK29P,eAAeU,kBAA8B,IAAVhrJ,IACzCrzG,KAAKm+P,eAAiBn+P,KAAKm+P,eACtBhyP,MAAK,IAAMnM,KAAKiiQ,2BAIjCjiQ,KAAK69P,WAAWjnL,QAAW7qE,IACvB/L,KAAKgM,KAAK,QAASD,IAQ3B41P,sBAAsBtuJ,GAClB,IAAK,IAAIz6F,EAAIy6F,EAAOz6F,EAAI,EAAGA,IACvB,GAAyC,aAArC5Y,KAAK69P,WAAW92K,MAAMnuE,EAAI,GAAGzX,IAC7B,OAAO,EAGf,OAAO,EAMXvB,4BAEI,IAAK,MAAMmiQ,KAAQ/hQ,KAAK89P,YACpB,GAAIiE,EACA,IAAK,MAAMC,KAAOD,QACRC,IAKlBhiQ,KAAK29P,eAAe4C,2BAA2BxoP,OAAO,GAEtD,IAAK,MAAMiqP,KAAOhiQ,KAAKg+P,oBAAqB,CAGxC,GAAIh+P,KAAK+9P,SAASh4P,OAAS,EAAG,CAE1B,MAAMm8P,EAAqB,GACrBC,EAAuB,GAC7B,IAAK,IAAIvpP,EAAI,EAAGA,EAAI5Y,KAAK+9P,SAASh4P,OAAQ6S,IAAK,CAC3C,MAAMwpP,EAAUpiQ,KAAK+9P,SAASnlP,GAC1BkuN,EAAOt1N,KAAK6wP,cAAcD,EAAQx1P,KAAMo1P,EAAIp1P,QAC5Cs1P,EAAmBz8P,KAAK28P,GACxBD,EAAqB18P,KAAKmT,IAIlC,MAAM0pP,EAAiBJ,EAAmB/hN,MAAK,CAACoiN,EAAMC,IAASD,EAAK31P,KAAK7G,OAASy8P,EAAK51P,KAAK7G,SAE5F,IAAK,MAAMq8P,KAAWE,QACZF,EAAQJ,MAIlB,MAAMS,EAA6BN,EAAqBhiN,OAAO6sD,UAC/D,IAAK,MAAM01J,KAASD,EAChBziQ,KAAK+9P,SAAShmP,OAAO2qP,EAAO,SAG9BV,EAAIA,QAItB5iQ,EAAQ0uM,aAAeA,EACvBA,EAAayrD,wBAA0B,MACvCzrD,EAAaqyD,eAAiB,CAC1B,IAAIrD,EAAyB6F,uBAC7B,IAAIzF,EAA6B0F,2BACjC,IAAIxF,EAAwByF,sBAC5B,IAAIxF,EAA8ByF,4BAClC,IAAI3F,EAA2B4F,yBAC/B,IAAIzF,EAA0B0F,wBAC9B,IAAIzF,EAA0B0F,wBAC9B,IAAIxF,EAA2ByF,yBAC/B,IAAInG,EAAwBoC,sBAC5B,IAAI3B,EAAqC2F,mCACzC,IAAIlG,EAAwBmG,sBAC5B,IAAIpG,EAA8BqG,2DClctCnkQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQw+P,oBAAiB,EACzB,MAAM1vD,EAA0B,EAAQ,MAClC+lD,EAAe,EAAQ,OACvBqP,EAAgB,EAAQ,MACxBC,EAAiB,EAAQ,OAI/B,MAAM3F,EACFn+P,YAAY4R,GAERrR,KAAK2oO,cAAgB,IAAIz6B,EAAwB+7B,cAAc,CAAEr1N,eAAgBvD,EAAQuD,eAAgBy6I,eAAgBh+I,EAAQmyP,wBACjIxjQ,KAAKq+P,mBAAqBhtP,EAAQgtP,iBAClCr+P,KAAKsI,QAAU+I,EAAQ/I,QACvBtI,KAAKyjQ,wBAA0BpyP,EAAQoyP,sBACvCzjQ,KAAK0jQ,mBAAqBryP,EAAQqyP,iBAClC1jQ,KAAKq2P,eAAiBhlP,EAAQglP,gBAAkBkN,EAAez1D,aAAayrD,wBAC5Ev5P,KAAK6U,eAAiBxD,EAAQwD,aAC9B7U,KAAKsgQ,uBAAyBjvP,EAAQivP,qBACtCtgQ,KAAKq0H,aAAehjH,EAAQgjH,aAC5Br0H,KAAK2jQ,aAAetyP,EAAQsyP,aAC5B3jQ,KAAKs2P,sBAAwBjlP,EAAQilP,sBACrCt2P,KAAK4jQ,yCAA2CvyP,EAAQuyP,yCACxD5jQ,KAAKyhQ,oBAAqB,EAC1BzhQ,KAAK6jQ,qBAAuBpwO,WAAWzzB,KAAKq2P,gBAE5Cr2P,KAAKqgQ,gBAAkB,GACvBrgQ,KAAKwgQ,eAAiB,GACtBxgQ,KAAK0/P,aAAe,GACpB1/P,KAAKi/P,QAAU,GACfj/P,KAAKygQ,WAAa,GAClBzgQ,KAAK0gQ,wBAA0B,GAC/B1gQ,KAAK2+P,iBAAmB,GACxB3+P,KAAK8hQ,YAAc,IAAIwB,EAAc7G,YACrCz8P,KAAK4gQ,aAAe,GACpB5gQ,KAAK8/P,gBAAkB,GACvB9/P,KAAKugQ,2BAA6B,GAClCvgQ,KAAK2gQ,iBAAmB,GACxB3gQ,KAAK+gQ,yBAA2B,GAChC/gQ,KAAKwhQ,yBAA2B,GAChCxhQ,KAAKq/P,6BAA+B,GACpCr/P,KAAKwoF,OAASn3E,EAAQm3E,OAClBn3E,EAAQlR,SACRH,KAAK8jQ,YAAc9jQ,KAAK+jQ,aAAa1yP,EAAQlR,SAC7CH,KAAK8jQ,YAAY33P,MAAMhM,GAAYH,KAAKs0P,gBAAgBn0P,MAGxDH,KAAK8jQ,YAAc94P,QAAQC,QAAQ,IAAIijM,EAAwB6pD,wBAAwB/3P,KAAKsI,QAAU,CAAE,QAAStI,KAAKsI,QAAS,mBAAmB,GAAS,KAUnK1I,mBAAmBO,EAAS04P,EAAeK,GACvC,OAAOl5P,KAAK2oO,cAAc5gN,MAAM5nB,EAAS,CACrCmI,QAAStI,KAAKsI,QACd4wP,iBAAAA,EACA5C,sBAAuBt2P,KAAKs2P,sBAC5BuC,cAAAA,EACAxC,eAAgBr2P,KAAK6jQ,uBAQ7BvP,gBAAgBn0P,GACZ,MAAM6jQ,EAAgB7jQ,EAAQwrO,gBAAgB,YAC9C,GAAIq4B,EAAe,CACf,GAAIhkQ,KAAK6jQ,sBAAwBG,EAAgBhkQ,KAAK6jQ,qBAClD,MAAM,IAAI5P,EAAaW,WAAW,gCAAgCoP,mCAA+ChkQ,KAAK6jQ,wBAAyB5P,EAAaa,YAAYmP,0BAGxK,GAAIjkQ,KAAK6jQ,sBAAwBG,EAAgBhkQ,KAAK6jQ,qBAClD,MAAM,IAAI5P,EAAaW,WAAW,2BAA2BoP,kCAA8ChkQ,KAAK6jQ,wBAAyB5P,EAAaa,YAAY0C,uBAEtKx3P,KAAK6jQ,qBAAuBG,GAUxCpkQ,iBAAiBgN,EAAMuS,EAAS,GAC5B,MAAM+kP,EAAet3P,EAErB,KAAwC,iBAA1BA,EAAKA,EAAK7G,OAAS,IAC7B6G,EAAOA,EAAKyW,MAAM,EAAGzW,EAAK7G,OAAS,GAGnCoZ,IACAvS,EAAOA,EAAKyW,MAAM,GAAIlE,IAG1B,MAAMglP,QAAoBnkQ,KAAKokQ,2BAA2Bx3P,GAG1D,IAAI0oP,EAFY6O,EAAYhkQ,QAEHwrO,gBACzB,IAAK,IAAI/yN,EAAIurP,EAAY9wJ,MAAOz6F,EAAIsrP,EAAan+P,OAASoZ,EAAQvG,IAAK,CACnE,MAAMzX,EAAM+iQ,EAAatrP,GACnByrP,EAAkB/O,EAAWn0P,GACnC,GAAIkjQ,GAA8C,iBAApBA,GAAgC,aAAcA,EAAiB,CACzF,MAAMC,SAAuBtkQ,KAAK+jQ,aAAaM,EAAiB/O,GAAY,IAAO3pB,gBAC7E44B,IAAcpjQ,KAAOmjQ,IACpBA,EAAcnjQ,GAAK,YAAY,eACpB,IAAdojQ,GAAuB3rP,IAAMsrP,EAAan+P,OAAS,EAAIoZ,IACvDm2O,EAAagP,SAENhP,EAAW,cAClBA,EAAWn0P,GAAOjC,OAAO4W,OAAO,GAAIw/O,EAAWn0P,IAC3C,QAASkjQ,IACT/O,EAAWn0P,GAAK,OAASkjQ,EAAgB,eAEtC/O,EAAWn0P,GAAK,aACL,IAAdojQ,GACAvkQ,KAAK8hQ,YAAYlF,WAAWsH,EAAa7gP,MAAM,EAAGzK,EAAIuG,GAASnU,QAAQC,QAAQ,IAAIijM,EAAwB6pD,wBAAwBzC,OAKnJ,OAAO,IAAIpnD,EAAwB6pD,wBAAwBzC,GAc/D11P,iCAAiCgN,GAC7B,MAAM43P,EAAgB53P,EAAK7G,OAC3B,IACI0+P,EADAN,EAAc,KAElB,EAAG,CACCM,GAAqC,EACjCN,GAAe,yBAA0BA,EAAYhkQ,QAAQwrO,gBAG7Dw4B,EAAYhkQ,QAAU,IAAI+tM,EAAwB6pD,wBAAwBoM,EAAYhkQ,QAAQwrO,gBAAgB,0BAG1Gw4B,IAIAv3P,EAAOA,EAAKyW,MAAM,EAAG8gP,EAAY9wJ,MAAQ,IAE7C8wJ,QAAoBnkQ,KAAK8hQ,YAAYnF,WAAW/vP,IAAS,CAAEzM,cAAeH,KAAK8jQ,YAAazwJ,MAAO,IAKvG,MAAMqxJ,EAAU93P,EAAKA,EAAK7G,OAAS,GACnC,GAAI2+P,KAAWP,EAAYhkQ,QAAQwrO,gBAAiB,CAChD,MAAMg5B,EAAeR,EAAYhkQ,QAAQwrO,gBAAgB+4B,GACrDC,GAAwC,iBAAjBA,GAA6B,aAAcA,IAClEF,GAAqC,UAGxCN,EAAY9wJ,MAAQ,IACgC,IAAtD8wJ,EAAYhkQ,QAAQwrO,gBAAgB,eACpCw4B,EAAY9wJ,QAAUmxJ,IACrBC,GAQR,OAL0B,IAAtBN,EAAY9wJ,QAC6C,IAAtD8wJ,EAAYhkQ,QAAQwrO,gBAAgB,eACpCw4B,EAAY9wJ,QAAUmxJ,IACzBL,EAAYhkQ,QAAU,IAAI+tM,EAAwB6pD,wBAAwB,KAEvEoM,EAUXvkQ,oBAAoBgN,EAAMvN,EAAOg0G,EAAOmrJ,SAC9Bx+P,KAAKwoF,OAAOq5K,cAAcj1P,EAAMvN,EAAOg0G,EAAOmrJ,GAMxD5+P,2CACI,GAAII,KAAKq/P,6BAA6Bt5P,OAAS,EAAG,CAC9C,IAAK,MAAM6+P,KAAsB5kQ,KAAKq/P,mCAC5Br/P,KAAKwoF,OAAO82K,YAAYsF,EAAmBvxJ,MAAOuxJ,EAAmBh4P,MAC3E5M,KAAKwoF,OAAOi2K,YAAYmG,EAAmBvxJ,OAG/C,OADArzG,KAAKq/P,6BAA6BtnP,OAAO,EAAG/X,KAAKq/P,6BAA6Bt5P,SACvE,EAGP,OAAO,EAQfq7P,SAAS/tJ,EAAO7sG,GACE,IAAV6sG,IACArzG,KAAKyhQ,oBAAqB,GAE9BzhQ,KAAKwoF,OAAO/iF,KAAKe,GAMrBq+P,UAAU94P,GACN/L,KAAKwoF,OAAOx8E,KAAK,QAASD,GAM9B+4P,YAAY3kQ,GACRH,KAAKwoF,OAAOx8E,KAAK,UAAW7L,GAQhC4kQ,+BAA+B1xJ,GAC3B,IAAIx0F,EAAS7e,KAAK+gQ,yBAAyB1tJ,GAK3C,OAJKx0F,IACDA,EAAS,GACT7e,KAAK+gQ,yBAAyB1tJ,GAASx0F,GAEpCA,EAQXyiP,+BAA+BjuJ,GAC3B,IAAIx0F,EAAS7e,KAAKwhQ,yBAAyBnuJ,GAK3C,OAJKx0F,IACDA,EAAS,GACT7e,KAAKwhQ,yBAAyBnuJ,GAASx0F,GAEpCA,EAKXmmP,mBACI,OAAOpH,EAAeqH,eAAejlQ,KAAK6jQ,sBAW9CqB,WAAW7xJ,EAAO8xJ,GAEd,MAAMC,EAAgBplQ,KAAKi/P,QAAQ5rJ,EAAQ8xJ,GAO3C,GANIC,IACAplQ,KAAKi/P,QAAQ5rJ,GAAS+xJ,EACtBplQ,KAAK0/P,aAAarsJ,IAAS,SACpBrzG,KAAKi/P,QAAQ5rJ,EAAQ8xJ,IAG5BnlQ,KAAKq/P,6BAA6Bt5P,OAClC,IAAK,MAAM8Y,KAAU7e,KAAKq/P,6BAClBxgP,EAAOw0F,OAASA,EAAQ8xJ,IACxBtmP,EAAOw0F,OAAS8xJ,EAChBtmP,EAAOjS,KAAKmL,OAAOs7F,EAAO8xJ,IAKlCnlQ,KAAK+gQ,yBAAyB1tJ,EAAQ8xJ,KACtCnlQ,KAAK+gQ,yBAAyB1tJ,GAASrzG,KAAK+gQ,yBAAyB1tJ,EAAQ8xJ,UACtEnlQ,KAAK+gQ,yBAAyB1tJ,EAAQ8xJ,KAKzD/lQ,EAAQw+P,eAAiBA,EACzBA,EAAeqH,eAAiB,CAC5B,EAAK,CACDnK,oBAAoB,EACpBC,yBAAyB,EACzBC,0BAA0B,GAE9B,IAAK,CACDF,oBAAoB,EACpBC,yBAAyB,EACzBC,0BAA0B,kCC7TlC97P,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoS,UAAO,EACf,MAAM08L,EAA0B,EAAQ,MAClC//L,EAAqB,EAAQ,OAC7B4uP,EAA0B,EAAQ,OAElC3I,EAAmB,EAAQ,OAIjC,MAAM5iP,EACF/R,YAAY4R,GACRrR,KAAK29P,eAAiBtsP,EAAQssP,eAC9B39P,KAAK2M,YAAc0E,EAAQ1E,aAAe,IAAIwB,EAAmBE,YACjErO,KAAKqlQ,SAAWrlQ,KAAK2M,YAAYmnH,UAAUtiH,EAAKwiJ,IAAM,SACtDh0J,KAAK4+P,QAAU5+P,KAAK2M,YAAYmnH,UAAUtiH,EAAKwiJ,IAAM,QACrDh0J,KAAK6+P,OAAS7+P,KAAK2M,YAAYmnH,UAAUtiH,EAAKwiJ,IAAM,OACpDh0J,KAAKslQ,QAAUtlQ,KAAK2M,YAAYmnH,UAAUtiH,EAAKwiJ,IAAM,QACrDh0J,KAAKulQ,QAAUvlQ,KAAK2M,YAAYmnH,UAAUtiH,EAAKwiJ,IAAM,QAazD5pJ,uBAAuBjK,EAASqlQ,EAAYrkQ,EAAKskQ,GAC7C,MAAMlzP,EAAQpS,EAAQwrO,gBAAgBxqO,GACtC,IAAKoR,EACD,OAAOkzP,EAEX,MAAMt/P,EAAOoM,EAAMizP,GACnB,YAAgB1jQ,IAATqE,EAAqBs/P,EAAWt/P,EAa3CiE,gCAAgCjK,EAASgB,GACrC,OAAOqQ,EAAKk0P,gBAAgBvlQ,EAAS,aAAcgB,EAAK,CAAE,QAAQ,IAQtEiJ,2BAA2BjK,EAASgB,GAChC,MAAMg2P,EAAY3lP,EAAKk0P,gBAAgBvlQ,EAAS,QAASgB,EAAK,MAC9D,MAAkB,UAAdg2P,EACO,KAEJA,EAQX/sP,+BAA+BjK,EAASgB,GACpC,OAAOqQ,EAAKk0P,gBAAgBvlQ,EAAS,YAAagB,EAAKhB,EAAQwrO,gBAAgB,cAAgB,MAQnGvhO,gCAAgCjK,EAASgB,GACrC,OAAOqQ,EAAKk0P,gBAAgBvlQ,EAAS,aAAcgB,EAAKhB,EAAQwrO,gBAAgB,eAAiB,MAQrGvhO,6BAA6BjK,EAASgB,GAClC,QAASqQ,EAAKk0P,gBAAgBvlQ,EAAS,WAAYgB,EAAK,MAQ5DiJ,4BAA4BjK,EAASgB,GACjC,OAAOqQ,EAAKk0P,gBAAgBvlQ,EAAS,SAAUgB,EAAKhB,EAAQwrO,gBAAgB,WAAa,MAS7FvhO,yBAAyBjK,EAASgB,EAAKq+P,GAEnC,MAAqB,aAAdA,IAA6BhuP,EAAKm0P,sBAAsBxlQ,EAASgB,GAO5EiJ,kBAAkB26E,GACd,OAAe,OAARA,GAAgBmpH,EAAwB18L,KAAK0kP,WAAWnxK,GAOnE36E,qBAAqBw7P,EAAQC,GACzB,GAAID,EAAO7/P,OAAS8/P,EAAS9/P,OACzB,OAAO,EAEX,IAAK,IAAI6S,EAAI,EAAGA,EAAIgtP,EAAO7/P,OAAQ6S,IAC/B,GAAIgtP,EAAOhtP,KAAOitP,EAASjtP,GACvB,OAAO,EAGf,OAAO,EAQXhZ,2BAA2BP,GACvB,GAAIW,KAAK29P,eAAe2C,qBAAsB,CAC1C,MAAMwF,EAAc,GACpB,IAAK,MAAMvzP,KAASlT,EAChB,GAAIkT,GAA0B,iBAAVA,EAAoB,CACpC,MAAMswB,EAAKtwB,EAAM,OACXnR,EAAQmR,EAAM,UACpB,GAAIswB,GAAMzhC,EAAO,CACb,MAAM2kQ,EAAqBD,EAAYjjO,GACvC,GAAIkjO,GAAsBA,IAAuB3kQ,EAC7C,MAAM,IAAI8sM,EAAwB0mD,WAAW,gCAAgC/xN,IAAMqrK,EAAwB4mD,YAAYkR,qBAE3HF,EAAYjjO,GAAMzhC,KAetCxB,kBAAkBO,EAASgB,EAAK9B,EAAOg0G,EAAOzmG,GAE1C,GAA+C,UAA3C4E,EAAKy0P,oBAAoB9lQ,EAASgB,GAClC,MAAO,CAACnB,KAAK2M,YAAYsnH,QAAQj0H,KAAKkmQ,kBAAkB7mQ,GAAQW,KAAKulQ,UAEzE,MAAMp/P,SAAc9G,EACpB,OAAQ8G,GACJ,IAAK,SAED,GAAI9G,MAAAA,EACA,MAAO,GAGX,GAAIyc,MAAMC,QAAQ1c,GAGd,MAAI,UAAWmS,EAAK20P,yBAAyBhmQ,EAASgB,GAC7B,IAAjB9B,EAAM0G,OACC,CAAC/F,KAAK6+P,QAGN7+P,KAAK29P,eAAesB,QAAQ5rJ,EAAQ,IAAM,UAGnDrzG,KAAKsgQ,qBAAqBjhQ,GACzB,IAUX,GAPAc,QAAgBH,KAAKomQ,+BAA+BjmQ,EAASgB,GAEzD,aAAc9B,IACdc,QAAgBH,KAAK29P,eAAeoG,aAAa1kQ,EAAM,mBAAoBW,KAAK29P,eAAehB,WAAW/vP,EAAM,IAAI++N,kBAIpH,WADJtsO,QAAcW,KAAKqmQ,gBAAgBhnQ,EAAOuN,EAAMymG,EAAOlzG,IAChC,CACnB,IAAI4sF,EACAu5K,EACAC,EACApP,EACAqP,EACJ,IAAKrlQ,KAAO9B,EAAO,CACf,MAAMmwO,EAAWnwO,EAAM8B,GACvB,OAAQA,GACJ,IAAK,SACD4rF,EAAMyiJ,EACN,MACJ,IAAK,YACD82B,EAAgB92B,EAChB,MACJ,IAAK,aACD+2B,EAAiB/2B,EACjB,MACJ,IAAK,QACD2nB,EAAY3nB,EACZ,MACJ,IAAK,SACDg3B,EAAah3B,EACb,MACJ,QACI,MAAM,IAAIthC,EAAwB0mD,WAAW,wBAAwBzzP,iBAAmBiL,KAAKC,UAAUhN,KAAU6uM,EAAwB4mD,YAAY2R,uBAIjK,GAAyE,gBAA/DzmQ,KAAKu/P,eAAepI,EAAWvqP,EAAMymG,GAAO,EAAMlzG,GACxD,MAAO,CAACH,KAAK2M,YAAYsnH,QAAQj0H,KAAKkmQ,kBAAkBn5K,GAAM/sF,KAAKulQ,UAGvE,GAAY,OAARx4K,EACA,MAAO,GAEX,GAAmB,iBAARA,EACP,MAAM,IAAImhH,EAAwB0mD,WAAW,uDAAuDxoP,KAAKC,UAAU0gF,MAASmhH,EAAwB4mD,YAAY4R,4BAGpK,GAAI1mQ,KAAK29P,eAAe2C,sBAAwBkG,GAAoC,iBAAfA,EACjE,MAAM,IAAIt4D,EAAwB0mD,WAAW,mDAAmDxoP,KAAKC,UAAUm6P,MAAgBt4D,EAAwB4mD,YAAY6R,qBAGvK,GAAIL,EAAe,CACf,GAAmB,iBAARv5K,EACP,MAAM,IAAImhH,EAAwB0mD,WAAW,4EAA4ExoP,KAAKC,UAAU0gF,MAASmhH,EAAwB4mD,YAAY8R,+BAEzL,IAAK14D,EAAwB+7B,cAAcqtB,iBAAiBgP,EAAetmQ,KAAK29P,eAAe9oP,aAAcq5L,EAAwB4mD,YAAY+R,gCAC7I,MAAO,IAGP7mQ,KAAK29P,eAAerH,uBAAsE,IAA7Ct2P,KAAK29P,eAAekG,wBACjEyC,EAAgBA,EAAc5yO,eAGtC,GAAI6yO,EAAgB,CAChB,GAAmB,iBAARx5K,EACP,MAAM,IAAIvsF,MAAM,6EAA6E4L,KAAKC,UAAU0gF,OAEhH,IAAKmhH,EAAwB+7B,cAAcwtB,kBAAkB8O,EAAgBvmQ,KAAK29P,eAAe9oP,cAC7F,MAAO,GAIf,GAAIyxP,GAAiBC,GAAkBvmQ,KAAK29P,eAAegG,aAAc,CACrE,GAAIxM,EACA,MAAM,IAAIjpD,EAAwB0mD,WAAW,mEAAmExoP,KAC3GC,UAAUhN,MAAW6uM,EAAwB4mD,YAAY2R,sBAElE,OAAOzmQ,KAAK8mQ,oBAAoB9mQ,KAC3B+mQ,+BAA+B1zJ,EAAOtmB,EAAKu5K,EAAeC,IAE9D,GAAID,EAAe,CACpB,GAAInP,EACA,MAAM,IAAIjpD,EAAwB0mD,WAAW,0DAA0DxoP,KAAKC,UAAUhN,MAAW6uM,EAAwB4mD,YAAY2R,sBAEzK,MAAO,CAACzmQ,KAAK2M,YAAYsnH,QAAQlnC,EAAKu5K,IAErC,GAAIC,GAAkBvmQ,KAAK29P,eAAegG,aAAc,CACzD,GAAIxM,EACA,MAAM,IAAIjpD,EAAwB0mD,WAAW,2DAA2DxoP,KAAKC,UAAUhN,MAAW6uM,EAAwB4mD,YAAY2R,sBAE1K,OAAOzmQ,KAAK8mQ,oBAAoB9mQ,KAC3B+mQ,+BAA+B1zJ,EAAOtmB,EAAKu5K,EAAeC,IAE9D,GAAIpP,EAAW,CAChB,GAAyB,iBAAdA,EACP,MAAM,IAAIjpD,EAAwB0mD,WAAW,kDAAkDxoP,KAAKC,UAAU8qP,MAAejpD,EAAwB4mD,YAAYkS,qBAErK,MAAMC,EAAWjnQ,KAAKknQ,sBAAsB/mQ,EAASg3P,GACrD,IAAK8P,EACD,MAAM,IAAI/4D,EAAwB0mD,WAAW,+BAA+BxoP,KAAKC,UAAU8qP,MAAejpD,EAAwB4mD,YAAYkS,qBAElJ,GAA0B,cAAtBC,EAASngQ,SACT,MAAM,IAAIonM,EAAwB0mD,WAAW,uBAAuBqS,EAASngQ,cAAcqwP,IAAajpD,EAAwB4mD,YAAYkS,qBAEhJ,MAAO,CAAChnQ,KAAK2M,YAAYsnH,QAAQlnC,EAAKk6K,IAG1C,aAAajnQ,KAAKmnQ,YAAY,IAAIj5D,EAAwB6pD,wBAAwB,IAAK52P,EAAK4rF,EAAKsmB,EAAOzmG,GAEvG,GAAI,SAAUvN,EAAO,CAEtB,GAAIH,OAAO0N,KAAKvN,GAAO0G,OAAS,EAC5B,MAAM,IAAImoM,EAAwB0mD,WAAW,6DAA6DzzP,KAAQ+sM,EAAwB4mD,YAAYsS,4BAG1J,MAAO,GAEN,GAAI,UAAW/nQ,EAAO,CAEvB,GAAIH,OAAO0N,KAAKvN,GAAO0G,OAAS,EAC5B,MAAM,IAAImoM,EAAwB0mD,WAAW,8DAA8DzzP,KAAQ+sM,EAAwB4mD,YAAYsS,4BAE3J,MAAMz2B,EAAYtxO,EAAM,SAGxB,OAAIyc,MAAMC,QAAQ40N,GACW,IAArBA,EAAU5qO,OACH,CAAC/F,KAAK6+P,QAGN7+P,KAAK29P,eAAesB,QAAQ5rJ,EAAQ,IAAM,SAKxCrzG,KAAKmnQ,kBAAkBnnQ,KAAK29P,eAAehB,WAAW/vP,GAAOzL,EAAKwvO,EAAWt9H,EAAQ,EAAGzmG,EAAKyW,MAAM,GAAI,IAGvH,GAAI,aAAchkB,GAAsC,kBAAtBA,EAAM,YAGzC,MAAO,GAEN,GAAI,WAAYmS,EAAK20P,+BAA+BnmQ,KAAK29P,eAAehB,WAAW/vP,GAAOzL,GAAM,CAEjG,MAAMkmQ,EAAwBrnQ,KAAK29P,eAAe+C,wBAAwBrtJ,EAAQ,GAClF,OAAOg0J,EAAwBnoQ,OAAO6N,OAAOs6P,GAAyB,CAACrnQ,KAAK2M,YAAYqnH,aAEvF,MAAI,QAAS30H,GAEVH,OAAO0N,KAAKvN,GAAO0G,OAAS,IAC5B5F,QAAgBH,KAAK29P,eAAehB,WAAW/vP,EAAM,IAGrD,aAAcvN,IACdc,QAAgBH,KAAK29P,eAAeoG,aAAa1kQ,EAAM,YAAac,EAAQwrO,kBAEzD,WAAnBtsO,EAAM,SACCW,KAAK8mQ,oBAAoB9mQ,KAAKknQ,sBAAsB/mQ,EAASd,EAAM,SAGnEW,KAAK8mQ,oBAAoB9mQ,KAAKsnQ,eAAennQ,EAASd,EAAM,UAKnEW,KAAK29P,eAAe+B,aAAarsJ,EAAQ,IACrCh0G,GAA0B,iBAAVA,GAAoD,IAA9BH,OAAO0N,KAAKvN,GAAO0G,OACrD/F,KAAK29P,eAAesB,QAAQ5rJ,EAAQ,KACpCrzG,KAAK29P,eAAesB,QAAQ5rJ,EAAQ,GAAK,CAACrzG,KAAK2M,YAAYqnH,cAG5D,GAGnB,IAAK,SACD,OAAOh0H,KAAK8mQ,oBAAoB9mQ,KAAKunQ,kBAAkBl0J,QAAarzG,KAAKomQ,+BAA+BjmQ,EAASgB,GAAMA,EAAK9B,EAAO,OACvI,IAAK,UACD,OAAOW,KAAK8mQ,oBAAoB9mQ,KAAKunQ,kBAAkBl0J,QAAarzG,KAAKomQ,+BAA+BjmQ,EAASgB,GAAMA,EAAKqR,QAAQnT,GAAOwO,WAAY7N,KAAK2M,YAAYmnH,UAAUtiH,EAAK0gJ,eAC3L,IAAK,SACD,OAAOlyJ,KAAK8mQ,oBAAoB9mQ,KAAKunQ,kBAAkBl0J,QAAarzG,KAAKomQ,+BAA+BjmQ,EAASgB,GAAMA,EAAK9B,EAAOW,KAAK2M,YAAYmnH,UAAUz0H,EAAQ,GAAM,GAAKA,EAAQ,KAAOmS,EAAKugJ,YAAcvgJ,EAAKygJ,cAC5N,QAEI,OADAjyJ,KAAK29P,eAAekH,UAAU,IAAIrkQ,MAAM,yCAAyC2F,MAC1E,IAYnBvG,qCAAqCO,EAASgB,GAC1C,MAAMkjQ,EAAkBlkQ,EAAQwrO,gBAAgBxqO,GAIhD,OAHIkjQ,GAA8C,iBAApBA,GAAgC,aAAcA,IACxElkQ,QAAgBH,KAAK29P,eAAeoG,aAAaM,EAAiBlkQ,EAAQwrO,iBAAiB,IAExFxrO,EAMX2mQ,oBAAoB11P,GAChB,OAAOA,EAAO,CAACA,GAAQ,GAS3Bo2P,gBAAgBrnQ,EAASgB,GACrB,MAAMsmQ,EAAWtnQ,EAAQkrO,WAAWlqO,GAAK,EAAMnB,KAAK29P,eAAeqH,oBAEnE,OAAKyC,EAIe,MAAhBA,EAAS,IAA8B,MAAhBA,EAAS,GAC5BznQ,KAAK29P,eAAe8F,sBACbzjQ,KAAK2M,YAAYqnH,UAAUyzI,EAASxlP,OAAO,IAG3C,KAIXzQ,EAAK0kP,WAAWuR,GACTznQ,KAAK2M,YAAYmnH,UAAU2zI,GAG9BA,GAAYznQ,KAAK29P,eAAe9oP,cAChC7U,KAAK29P,eAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,0BAA0B6S,IAAYv5D,EAAwB4mD,YAAYK,sBAMhJ,MAHQ,KApBJ,KAgCfmS,eAAennQ,EAASgB,GACpB,GAAIA,EAAImmB,WAAW,MACf,OAAOtnB,KAAK2M,YAAYqnH,UAAU7yH,EAAI8gB,OAAO,IAEjD,MAAM8iE,EAAM5kF,EAAQkrO,WAAWlqO,GAAK,EAAOnB,KAAK29P,eAAeqH,oBAC/D,IAAKxzP,EAAK0kP,WAAWnxK,GAAM,CACvB,IAAIA,IAAO/kF,KAAK29P,eAAe9oP,aAI3B,OAAO,KAHP7U,KAAK29P,eAAekH,UAAU,IAAIrkQ,MAAM,yBAAyBukF,MAMzE,OAAO/kF,KAAK2M,YAAYmnH,UAAU/uC,GAUtCmiL,sBAAsB/mQ,EAASgB,GAC3B,GAAIA,EAAImmB,WAAW,MACf,OAAOtnB,KAAK2M,YAAYqnH,UAAU7yH,EAAI8gB,OAAO,IAEjD,MAAM60O,EAAgB92P,KAAK29P,eAAeqH,mBAC1C,IAAIyC,EAAWtnQ,EAAQkrO,WAAWlqO,GAAK,EAAM21P,GAI7C,GAHI2Q,IAAatmQ,IACbsmQ,EAAWtnQ,EAAQkrO,WAAWlqO,GAAK,EAAO21P,KAEzCtlP,EAAK0kP,WAAWuR,GAAW,CAC5B,IAAIA,IAAYznQ,KAAK29P,eAAe9oP,cAAiB4yP,EAASngP,WAAW,KAIrE,OAAO,KAHPtnB,KAAK29P,eAAekH,UAAU,IAAIrkQ,MAAM,qBAAqBinQ,MAMrE,OAAOznQ,KAAK2M,YAAYmnH,UAAU2zI,GAQtCC,YAAYroQ,EAAOs1H,GACf,MAAqB,iBAAVt1H,EACHgE,OAAO0+D,SAAS1iE,GACEA,EAAQ,GAAM,GACbs1H,GAAYA,EAASt1H,QAAUmS,EAAKygJ,WAI5C5yJ,EAAMg8H,cAAc,IAAI56G,QAAQ,aAAc,OAH9Cpd,OAAOhE,GAAOwO,WAOlBxO,EAAQ,EAAI,MAAQ,OAIxBA,EAYfkoQ,kBAAkBl0J,EAAOlzG,EAASgB,EAAK9B,EAAOsoQ,GAE1C,MAAMC,EAAcp2P,EAAKy0P,oBAAoB9lQ,EAASgB,GACtD,GAAIymQ,EACA,GAAoB,QAAhBA,GACA,IAAKD,EACD,OAAO3nQ,KAAKsnQ,eAAennQ,EAASH,KAAK0nQ,YAAYroQ,EAAOsoQ,SAG/D,GAAoB,WAAhBC,GACL,IAAKD,EACD,OAAO3nQ,KAAKknQ,sBAAsB/mQ,EAASH,KAAK0nQ,YAAYroQ,EAAOsoQ,SAIvEA,EAAkB3nQ,KAAK2M,YAAYmnH,UAAU8zI,GAIrD,IAAKD,EAAiB,CAClB,MAAME,EAAkBr2P,EAAKs2P,wBAAwB3nQ,EAASgB,GACxD4mQ,EAAmBv2P,EAAKw2P,yBAAyB7nQ,EAASgB,GAChE,OAAI4mQ,GAAoB/nQ,KAAK29P,eAAegG,aACjC3jQ,KAAK+mQ,+BAA+B1zJ,EAAOrzG,KAAK0nQ,YAAYroQ,EAAOsoQ,GAAkBE,EAAiBE,GAGtG/nQ,KAAK2M,YAAYsnH,QAAQj0H,KAAK0nQ,YAAYroQ,EAAOsoQ,GAAkBE,GAIlF,OAAO7nQ,KAAK2M,YAAYsnH,QAAQj0H,KAAK0nQ,YAAYroQ,EAAOsoQ,GAAkBA,GAW9EZ,+BAA+B1zJ,EAAOh0G,EAAO2I,EAAUgkL,GACnD,GAAyC,kBAArChsL,KAAK29P,eAAegG,aAKpB,OAHK37P,IACDA,EAAW,IAERhI,KAAK2M,YAAYsnH,QAAQ50H,EAAOW,KAAK2M,YAAYmnH,UAAU,8BAA8B9rH,KAAYgkL,MAE3G,CAED,MAAM8jD,EAAY9vO,KAAK2M,YAAYqnH,YAC7BntH,EAAQ7G,KAAK8+P,kBAMnB,OALA9+P,KAAK29P,eAAeyD,SAAS/tJ,EAAOrzG,KAAK2M,YAAYnG,KAAKspO,EAAW9vO,KAAK2M,YAAYmnH,UAAUtiH,EAAKwiJ,IAAM,SAAUh0J,KAAK2M,YAAYsnH,QAAQ50H,GAAQwH,IAClJmB,GACAhI,KAAK29P,eAAeyD,SAAS/tJ,EAAOrzG,KAAK2M,YAAYnG,KAAKspO,EAAW9vO,KAAK2M,YAAYmnH,UAAUtiH,EAAKwiJ,IAAM,YAAah0J,KAAK2M,YAAYsnH,QAAQjsH,GAAWnB,IAEhK7G,KAAK29P,eAAeyD,SAAS/tJ,EAAOrzG,KAAK2M,YAAYnG,KAAKspO,EAAW9vO,KAAK2M,YAAYmnH,UAAUtiH,EAAKwiJ,IAAM,aAAch0J,KAAK2M,YAAYsnH,QAAQ+3D,GAAYnlL,IACvJipO,GAQfo2B,kBAAkB7mQ,GACd,OAAO+0P,EAAiB/0P,GAa5BO,qBAAqBuB,EAAKyL,EAAMymG,EAAO40J,EAAc9nQ,GAEjD,GAAIkD,OAAOihD,UAAUnjD,GACjB,OAAOA,EAGX,IAAK8mQ,EAAc,CACf,MAAMC,EAAyBloQ,KAAK29P,eAAe4C,2BAA2BltJ,GAC9E,GAAI60J,EACA,OAAOA,EAGf,IAAKh6D,EAAwB18L,KAAK4jP,mBAAmBj0P,GAAM,CAEvD,IAAIgnQ,GADJhoQ,EAAUA,SAAiBH,KAAK29P,eAAehB,WAAW/vP,IACnC++N,gBAAgBxqO,GACnCgnQ,GAAgC,iBAAbA,IACnBA,EAAWA,EAAS,QAEpBj6D,EAAwB18L,KAAK0jP,eAAeiT,KAC5ChnQ,EAAMgnQ,GAGd,OAAOF,EAAe9mQ,EAAOnB,KAAK29P,eAAe4C,2BAA2BltJ,GAASlyG,EASzFvB,2BAA2BgN,EAAMymG,GAC7B,aAAarzG,KAAKu/P,eAAelsJ,EAAQ,GAAKzmG,EAAKymG,EAAQ,GAAIzmG,EAAMymG,EAAQ,GAWjFzzG,sBAAsBmP,EAAMnC,EAAMymG,EAAOlzG,GACrC,MAAMioQ,EAAU,GAChB,IAAK,MAAMjnQ,KAAO4N,EACdq5P,QAAcpoQ,KAAKu/P,eAAep+P,EAAKyL,EAAMymG,EAAQ,GAAG,EAAMlzG,IAAY4O,EAAK5N,GAEnF,OAAOinQ,EAUXnI,UAAU5sJ,GACN,IAAK,IAAIz6F,EAAIy6F,EAAOz6F,GAAK,EAAGA,IACxB,GAAI5Y,KAAK29P,eAAeiD,aAAahoP,IAAM5Y,KAAK29P,eAAegD,iBAAiB/nP,GAC5E,OAAO,EAGf,OAAO,EASXhZ,0BAA0ByzG,EAAOzmG,GAC7B,IAAK,IAAIgM,EAAIy6F,EAAQ,EAAGz6F,EAAI,EAAGA,IAC3B,GAAoD,iBAA1C5Y,KAAKu/P,eAAe3yP,EAAKgM,GAAIhM,EAAMgM,GAAiB,CAE1D,MAAMyvP,SAAoBtL,EAAwBoC,sBAAsBmJ,oBAAoBtoQ,KAAK29P,eAAgB/wP,EAAMgM,IAAIyvP,WAC3H,OAAItL,EAAwBoC,sBAAsBoJ,wBAAwBF,IAC9D,EAELh1J,EAAQz6F,EAAI,EAG3B,OAAQ,EAOZ4vP,uBAAuB9hQ,GACnB,GAAyB,YAArBA,EAAQI,SACR,MAAM,IAAIonM,EAAwB0mD,WAAW,8CAA8CluP,EAAQrH,QAAS6uM,EAAwB4mD,YAAY2T,gCAOxJ3J,kBACI,OAAO9+P,KAAK29P,eAAetpI,cAAgBr0H,KAAK2M,YAAY0nH,eAQhEz0H,6BAA6BgN,EAAMymG,GAE/B,IAAIxsG,EAAQ7G,KAAK8+P,kBAEjB,MAAM,WAAEuJ,EAAYh1J,MAAOq1J,SAAyB3L,EAAwBoC,sBACvEmJ,oBAAoBtoQ,KAAK29P,eAAgB/wP,EAAMymG,GACpD,GAAI,WAAYg1J,EAAY,CAExB,MAAMM,EAAsB5L,EAAwBoC,sBAAsByJ,uBAAuBP,EAAYK,EAAgB97P,GACvH2F,EAAQvS,KAAK29P,eAAe+C,wBAAwBgI,GAG1D,GAFA7hQ,EAAQ0L,EAAQA,EAAMo2P,GAAuB,MAExC9hQ,EAAO,CACR,IAAIgiQ,EAAU,KACd,GAAI,QAASR,EAAY,CACrB,MAAMS,QAAqB9oQ,KAAK+oQ,gBAAgBn8P,EAAK87P,GAAiB97P,EAAM87P,GACvD,OAAjBI,IACAD,QAAgB7oQ,KAAKsnQ,qBAAqBtnQ,KAAK29P,eAAehB,WAAW/vP,GAAOk8P,IAGnFD,IACDA,EAAU7oQ,KAAK2M,YAAYqnH,aAE1Bh0H,KAAK29P,eAAe+C,wBAAwBgI,KAC7C1oQ,KAAK29P,eAAe+C,wBAAwBgI,GAAkB,IAElE7hQ,EAAQ7G,KAAK29P,eAAe+C,wBAAwBgI,GAAgBC,GAAuBE,GAGnG,OAAOhiQ,EAgBXjH,yBAAyBgN,EAAMymG,GAC3B,IAAI21J,EAAiB31J,EACrB,IAAK,IAAIz6F,EAAIy6F,EAAQ,EAAGz6F,EAAI,EAAGA,IAC3B,GAAuB,iBAAZhM,EAAKgM,GAAiB,CAC7B,MAAM4mP,QAAkBx/P,KAAKu/P,eAAe3yP,EAAKgM,GAAIhM,EAAMgM,GAC3D,GAAkB,aAAd4mP,EACA,OAAO5mP,EAEN,GAAkB,UAAd4mP,EAIL,OAAOwJ,EAHPA,EAAiBpwP,EAO7B,OAAOowP,EAUXppQ,sBAAsBuB,EAAKyL,EAAMymG,GAC7B,MAAMy1J,QAAqB9oQ,KAAKu/P,eAAep+P,EAAKyL,EAAMymG,GAC1D,MAAwB,UAAjBy1J,EAA2B,KAAOA,GAGjD1pQ,EAAQoS,KAAOA,EACfA,EAAKyiJ,IAAM,oCACXziJ,EAAK0gJ,YAAc1gJ,EAAKyiJ,IAAM,UAC9BziJ,EAAKugJ,YAAcvgJ,EAAKyiJ,IAAM,UAC9BziJ,EAAKygJ,WAAazgJ,EAAKyiJ,IAAM,SAC7BziJ,EAAKwiJ,IAAM,0EC5xBX90J,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6pQ,gCAA6B,EAiDrC7pQ,EAAQ6pQ,2BA1CR,MACIC,sBACI,OAAO,EAEXtpQ,aAAayoQ,EAAY1K,EAAgB92F,EAAMj6J,EAAMvN,EAAOg0G,GACxD,IAAIxwE,EAEJ,GAAI86N,EAAe+B,aAAarsJ,EAAQ,IAAMsqJ,EAAesB,QAAQ5rJ,EAAQ,GAEzExwE,EAAK86N,EAAesB,QAAQ5rJ,EAAQ,GAAG,OAEtC,CAED,MACM81J,EAA2B,aADNtiG,EAAKkiG,gBAAgBn8P,EAAKymG,GAAQzmG,EAAMymG,SAEvDwzD,EAAKygG,qBAAqB3J,EAAehB,WAAW/vP,GAAOA,EAAKymG,IACtEwzD,EAAKl6J,YAAYqnH,YAEvB,IAAKm1I,EAED,YADAxL,EAAe+B,aAAarsJ,IAAS,GAGzCxwE,EAAKsmO,EAELxL,EAAesB,QAAQ5rJ,EAAQ,GAAK,CAACxwE,GAIzC,IAAIumO,EAAMzL,EAAesB,QAAQ5rJ,GAC5B+1J,IACDA,EAAMzL,EAAesB,QAAQ5rJ,GAAS,IAGrC+1J,EAAI5/O,MAAMpY,GAASA,EAAKhE,OAAOy1B,MAChCumO,EAAI3jQ,KAAKo9B,SAGF86N,EAAe0L,uCACtB1L,EAAe+B,aAAarsJ,IAAS,mCC9CjDn0G,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQkqQ,2BAAwB,EAChC,MAAMp7D,EAA0B,EAAQ,MAClC+uD,EAA0B,EAAQ,OAClCn2B,EAAS,EAAQ,OAgEvB1nO,EAAQkqQ,sBA1DR,MACIJ,sBACI,OAAO,EAEXtpQ,aAAayoQ,EAAY1K,EAAgB92F,EAAMj6J,EAAMvN,EAAOg0G,GACxD,IAAKv3F,MAAMC,QAAQ1c,GAAQ,CACvB,MAAMkqQ,EAAiB,WAAYlB,EAE7BloQ,QAAgBw9P,EAAehB,WAAW/vP,GAC1C48P,EAAW58P,EAAKymG,EAAQ,GACxBo2J,EAAmB3iC,EAAOt1N,KAAKk4P,qBAAqBvpQ,EAASqpQ,GACnE,GAAIC,EAAkB,CAElB,GAAIv7D,EAAwB18L,KAAK4jP,mBAAmBqU,GAChD,MAAM,IAAIv7D,EAAwB0mD,WAAW,kDAAkD6U,IAAoBv7D,EAAwB4mD,YAAYiB,yBAE3J,GAAgC,iBAArB0T,EACP,MAAM,IAAIv7D,EAAwB0mD,WAAW,uCAAuC6U,IAAoBv7D,EAAwB4mD,YAAYiB,yBAGhJ,GAAqB,iBAAV12P,EAAoB,CAE3B,GAA2D,QAAvDynO,EAAOt1N,KAAKy0P,oBAAoB9lQ,EAASqpQ,GACzC,MAAM,IAAIt7D,EAAwB0mD,WAAW,gGAAgGv1P,IAAS6uM,EAAwB4mD,YAAY2R,sBAG9L,MAAM5jO,EAAKgkI,EAAKygG,eAAennQ,EAASd,GACpCwjC,IACA86N,EAAesB,QAAQ5rJ,EAAQ,GAAK,CAACxwE,IAI7C,MAAM8mO,EAAgB9iG,EAAKqgG,sBAAsB/mQ,EAASspQ,GAC1D,GAAIE,EAAe,CACf,MAAMC,QAAoB/iG,EAAKsgG,YAAYhnQ,EAASspQ,QAAwB5iG,EAAKkiG,gBAAgBn8P,EAAKymG,GAAQzmG,EAAMymG,GAAQA,EAAOzmG,GACnI,GAAI28P,EAAgB,CAEhB,MAAMV,QAAgBhiG,EAAKq6F,uBAAuBt0P,EAAMymG,EAAQ,GAChE,IAAK,MAAMw2J,KAAcD,EACrBjM,EAAeyD,SAAS/tJ,EAAOwzD,EAAKl6J,YAAYnG,KAAKqiQ,EAASc,EAAeE,EAAYhjG,EAAKi4F,yBAKlG,IAAK,MAAM+K,KAAcD,QACf3M,EAAwBmG,sBAAsB0G,sBAAsBnM,EAAgB92F,EAAMj6J,EAAMymG,EAAQ,EAAGs2J,EAAeE,GAAY,IAK5J,MAAM1E,EAAcoE,EAAiB,EAAI,QACnC5L,EAAekE,cAAcj1P,EAAKyW,MAAM,EAAGzW,EAAK7G,OAASo/P,GAAc9lQ,EAAOg0G,EAAQ8xJ,GAAa,SAEnGxH,EAAe0L,qCAEzB1L,EAAe+B,aAAarsJ,IAAS,kCCjE7Cn0G,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2qQ,8BAA2B,EACnC,MAAM77D,EAA0B,EAAQ,MA2BxC9uM,EAAQ2qQ,yBApBR,MACIb,sBACI,OAAO,EAEXtpQ,aAAayoQ,EAAY1K,EAAgB92F,EAAMj6J,EAAMvN,EAAOg0G,GACxD,MAAMrrG,QAAiB6+J,EAAKkiG,gBAAgBn8P,EAAKymG,GAAQzmG,EAAMymG,GAC/D,GAAIv3F,MAAMC,QAAQ1c,GAEdA,EAAQA,EAAM2G,KAAKwpO,IAAa,CAAG,SAAUA,EAAU,YAAaxnO,UAEnE,CACD,GAAqB,iBAAV3I,EACP,MAAM,IAAI6uM,EAAwB0mD,WAAW,wCAAwCxoP,KAAKC,UAAUhN,2BAAgC6uM,EAAwB4mD,YAAYkV,4BAE5K3qQ,EAAQ,CAAE,SAAUA,EAAO,YAAa2I,SAEtC21P,EAAekE,cAAcj1P,EAAKyW,MAAM,EAAGzW,EAAK7G,OAAS,GAAI1G,EAAOg0G,EAAQ,GAAG,GACrFsqJ,EAAe+B,aAAarsJ,IAAS,kCC1B7Cn0G,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6qQ,0BAAuB,EAC/B,MAAMhN,EAA0B,EAAQ,OAClCn2B,EAAS,EAAQ,OAwDvB1nO,EAAQ6qQ,qBAlDR,MACIf,sBACI,OAAO,EAEXtpQ,aAAayoQ,EAAY1K,EAAgB92F,EAAMj6J,EAAMvN,EAAOg0G,GACxD,IAAKv3F,MAAMC,QAAQ1c,GAAQ,CACvB,GAAqB,iBAAVA,EAAoB,CAE3B,MAAMc,QAAgBw9P,EAAehB,WAAW/vP,GAG1Ci2B,EAA2B,WAFPikM,EAAOt1N,KAAKy0P,oBAAoB9lQ,EAASyM,EAAKymG,EAAQ,UAGpEwzD,EAAKqgG,sBAAsB/mQ,EAASd,SACpCwnK,EAAKygG,eAAennQ,EAASd,GACzC,GAAIwjC,EAAI,CAEJ,MAAM2sM,EAAW,CAAE,MAAuB,cAAhB3sM,EAAG/7B,SAA2B+7B,EAAGxjC,MAAQA,SAC7Ds+P,EAAekE,cAAcj1P,EAAKyW,MAAM,EAAGzW,EAAK7G,OAAS,GAAIypO,EAAUn8H,EAAQ,GAAG,GAExFsqJ,EAAesB,QAAQ5rJ,EAAQ,GAAK,CAACxwE,QAGxC,CAGD,MAAMqnO,IAAuBvM,EAAesB,QAAQ5rJ,EAAQ,GAEvD62J,UACMvM,EAAesB,QAAQ5rJ,SAE5BsqJ,EAAekE,cAAcj1P,EAAKyW,MAAM,EAAGzW,EAAK7G,OAAS,GAAI1G,EAAOg0G,EAAQ,GAAG,GAChF62J,IACDvM,EAAesB,QAAQ5rJ,EAAQ,GAAKsqJ,EAAesB,QAAQ5rJ,IAInE,MAAM82J,QAAoBtjG,EAAKkiG,gBAAgBn8P,EAAKymG,GAAQzmG,EAAMymG,GAC5DltG,EAAuB,OAAhBgkQ,EACPtjG,EAAKqgG,4BAA4BvJ,EAAehB,WAAW/vP,GAAOu9P,GAClE,KACFhkQ,SAEM82P,EAAwBmG,sBAAsB0G,sBAAsBnM,EAAgB92F,EAAMj6J,EAAMymG,EAAQ,EAAGwzD,EAAKy+F,QAASn/P,GAAM,SAGnIw3P,EAAe0L,qCAEzB1L,EAAe+B,aAAarsJ,IAAS,kCCxD7Cn0G,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQujQ,4BAAyB,EACjC,MAAM77B,EAAS,EAAQ,OAsHvB1nO,EAAQujQ,uBAlHR,MACIjB,oBACI,OAAO,EAEXtB,mBACI,OAAO,EAEXxgQ,eAAe+9P,EAAgB92F,EAAMj6J,EAAMymG,EAAOwsJ,GAC9C,OAAO7/P,KAAKmY,KAAKwlP,EAAgB92F,EAAM,KAAMj6J,EAAMymG,GAEvDzzG,WAAW+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMymG,GACxC,MAA8B,iBAAhBzmG,EAAKymG,GAEvBzzG,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,GACjD,IAAImsJ,QAAkB34F,EAAK44F,qBAAqB7yP,EAAMymG,GAEtD,GAAkB,UAAdmsJ,EAAuB,CAGvB,IAAI4K,EAAc,KACdlL,EAAgB,EACpB,IAAK,IAAItmP,EAAIy6F,EAAQ,EAAGz6F,EAAI,EAAGA,IAAK,CAChC,MAAMyxP,EAAYz9P,EAAKgM,GACvB,GAAyB,iBAAdyxP,GAA+C,iBAAdA,EAAwB,CAChEnL,EAAgBtmP,EAChBwxP,EAAcC,EACd,OAGR,GAAoB,OAAhBD,EAAsB,CAEtB,MAAMr9P,QAAe85J,EAAKsgG,kBAAkBxJ,EAAehB,WAAW/vP,GAAOw9P,EAAa/qQ,EAAOg0G,EAAOzmG,GACxG,IAAK,MAAMhG,KAAUmG,QACX/M,KAAKsqQ,kBAAkB3M,EAAgB92F,EAAMjgK,EAAQvH,EAAOg0G,EAAOzmG,EAAKyW,MAAM,EAAG67O,GAAgBA,GAGrF,IAAlBnyP,EAAOhH,cACD/F,KAAKsqQ,kBAAkB3M,EAAgB92F,EAAM,KAAMxnK,EAAOg0G,EAAOzmG,EAAKyW,MAAM,EAAG67O,GAAgBA,SAI5G,GAAkB,SAAdM,QAEC7B,EAAekE,cAAcj1P,EAAKyW,MAAM,GAAI,GAAIhkB,EAAOg0G,EAAQ,GAAG,QAEvE,QAAkBvxG,IAAd09P,GAAyC,UAAdA,EAAuB,CAKvD,IAAK,IAAI5mP,EAAIy6F,EAAQ,EAAGz6F,EAAI,EAAGA,IAC3B,GAAuB,iBAAZhM,EAAKgM,GAAiB,CAC7B4mP,QAAkB34F,EAAK04F,eAAe3yP,EAAKgM,GAAIhM,EAAMgM,GACrD,MAIR,MAAMigP,QAAsB8E,EAAehB,WAAW/vP,EAAKyW,MAAM,GAAI,IACrE,GAAI,UAAWyjN,EAAOt1N,KAAK20P,yBAAyBtN,EAAe2G,GAAY,CAG3E7B,EAAe+B,aAAarsJ,EAAQ,IAAK,EACzC,MAAMtmG,QAAe85J,EAAKsgG,kBAAkBxJ,EAAehB,WAAW/vP,GAAO4yP,EAAWngQ,EAAOg0G,EAAOzmG,GACtG,IAAK,MAAMhG,KAAUmG,QACX/M,KAAKsqQ,kBAAkB3M,EAAgB92F,EAAMjgK,EAAQvH,EAAOg0G,EAAOzmG,EAAKyW,MAAM,GAAI,GAAIgwF,EAAQ,GAGlF,IAAlBtmG,EAAOhH,cACD/F,KAAKsqQ,kBAAkB3M,EAAgB92F,EAAM,KAAMxnK,EAAOg0G,EAAOzmG,EAAKyW,MAAM,GAAI,GAAIgwF,EAAQ,QAKtGsqJ,EAAeuH,WAAW7xJ,EAAO,SAE3BsqJ,EAAekE,cAAcj1P,EAAKyW,MAAM,GAAI,GAAIhkB,EAAOg0G,EAAQ,GAAG,GAExEsqJ,EAAemE,YAAYjF,cAAcjwP,EAAKyW,MAAM,GAAI,KAIpEzjB,wBAAwB+9P,EAAgB92F,EAAMxnK,EAAOkrQ,EAAel3J,EAAOm3J,EAActL,GAErF,IAAIR,EAAcf,EAAegB,iBAAiBtrJ,GAClD,GAAsB,OAAlBk3J,GAAyG,cAAxE1jG,EAAKw/F,gBAAgBkE,EAAeC,EAAcn3J,IAAQ,UAAoB,CAC/G,GAAKqrJ,GAAgBA,EAAYr/P,MAI5B,CAID,MAAMorQ,EAAc5jG,EAAKl6J,YAAYqnH,YACrC2pI,EAAeyD,SAAS/tJ,EAAOwzD,EAAKl6J,YAAYnG,KAAKk4P,EAAYr/P,MAAOwnK,EAAK+3F,QAAS6L,EAAa5jG,EAAKi4F,oBAExGJ,EAAYr/P,MAAQorQ,MAXgB,CACpC,MAAMC,EAAW7jG,EAAKl6J,YAAYqnH,YAClC0qI,EAAc,CAAEr/P,MAAOqrQ,EAAUxL,cAAAA,EAAeH,OAAQ2L,GAaxDrrQ,GACAs+P,EAAeyD,SAAS/tJ,EAAOwzD,EAAKl6J,YAAYnG,KAAKk4P,EAAYr/P,MAAOwnK,EAAKw+F,SAAUhmQ,EAAOwnK,EAAKi4F,yBAMlGJ,IACDA,EAAc,CAAEQ,cAAAA,EAAeH,OAAQl4F,EAAKg4F,SAGpDlB,EAAegB,iBAAiBtrJ,GAASqrJ,kCCrHjDx/P,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+/P,2BAAwB,EAChC,MAAMwL,EAA+B,EAAQ,OACvCC,EAA0B,EAAQ,OAClCC,EAA6B,EAAQ,OACrCC,EAAyB,EAAQ,OACjChkC,EAAS,EAAQ,OAKvB,MAAMq4B,EAMF/0P,8BAA8Bi+P,GAC1B,MAAO,WAAYA,IACV,SAAUA,GAAiD,IAAnCnpQ,OAAO0N,KAAKy7P,GAAYtiQ,QAAoD,IAAnC7G,OAAO0N,KAAKy7P,GAAYtiQ,QAOtGqE,+BAA+Bi+P,GAC3B,MAAO,WAAYA,IACV,SAAUA,GAAcnpQ,OAAO0N,KAAKy7P,GAAYtiQ,OAAS,KACpD,SAAUsiQ,IAAenpQ,OAAO0N,KAAKy7P,GAAYtiQ,OAAS,GAS5EqE,8BAA8Bi+P,EAAYh1J,EAAOzmG,GAC7C,IAAIm+P,EAAyB5L,EAAsB4L,uBAAuB1C,GACtEjnQ,EAAQ,GACZ,IAAK,IAAIwX,EAAIy6F,EAAOz6F,EAAIhM,EAAK7G,OAAQ6S,IAC5BmyP,GAA6C,iBAAZn+P,EAAKgM,KACvCxX,GAAS,IAAMwL,EAAKgM,IAGnBmyP,GAA6C,iBAAZn+P,EAAKgM,KACvCmyP,GAAyB,GAGjC,OAAO3pQ,EAgBXgJ,iCAAiCuzP,EAAgB/wP,EAAMymG,GACnD,MAAMoyJ,EAAW,CACb4C,WAAY,CAAE,QAAQ,GACtBh1J,MAAAA,EACAoyJ,UAAU,GAGd,IAAIuF,GAAsB,EAE1B,MAAM7qQ,QAAgBw9P,EAAehB,WAAW/vP,EAAM,GACtD,IAAK,IAAIgM,EAAIy6F,EAAQ,EAAGz6F,GAAK,EAAGA,IAC5B,GAAuB,iBAAZhM,EAAKgM,GAAiB,CAE7B,MAAMqyP,EAAiBnkC,EAAOt1N,KAAKk0P,gBAAgBvlQ,EAAS,aAAcyM,EAAKgM,IAAI,GACnF,GAAIqyP,GAAkB9L,EAAsB4L,uBAAuBE,GAC/D,MAAO,CACH5C,WAAY4C,EACZ53J,MAAOz6F,EAAI,EACX6sP,UAAU,GAGlB,MAAMyF,EAAmBpkC,EAAOt1N,KAAKk0P,gBAAgBvlQ,EAAS,aAAcyM,EAAKgM,EAAI,IAAI,GACzF,GAAKsyP,EAQA,CAED,MAAM3B,EAAiB,WAAY2B,EAEnC,IAAK,MAAMC,KAAuBhM,EAAsBiM,mBACpD,GAAIF,EAAiBC,GACjB,OAAI5B,EAEIpK,EAAsBiM,mBAAmBD,GAAqBjC,sBACvD,CACHb,WAAY6C,EACZ73J,MAAOz6F,EACP6sP,UAAU,GAIPA,EAKPuF,EACOvF,EAGA,CACH4C,WAAY6C,EACZ73J,MAAOz6F,EACP6sP,UAAU,GAO9B,OAAOA,EA1CP,GAAIuF,EAEA,OAAOvF,EAGXuF,GAAsB,EAyClC,OAAOvF,EAgBXr7P,0CAA0CuzP,EAAgB/wP,EAAMymG,GAC5D,MAAMnrB,QAAgBi3K,EAAsBmJ,oBAAoB3K,EAAgB/wP,EAAMymG,GACtF,OAAQnrB,EAAQu9K,YAAc,WAAYv9K,EAAQmgL,YAEtD3G,oBACI,OAAO,EAEXtB,mBACI,OAAO,EAEXxgQ,eAAe+9P,EAAgB92F,EAAMj6J,EAAMymG,EAAOwsJ,GAC9C,cAAe7/P,KAAKmY,KAAKwlP,EAAgB92F,EAAM,KAAMj6J,EAAMymG,GAE/DzzG,WAAW+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMymG,GACxC,MAAMg1J,EAAavhC,EAAOt1N,KAAK20P,+BAA+BxI,EAAehB,WAAW/vP,EAAM,GAAIA,EAAKymG,EAAQ,IAC/G,IAAK,MAAMg4J,KAAiBlM,EAAsBiM,mBAC9C,GAAI/C,EAAWgD,GACX,MAAO,CACHhD,WAAAA,EACAngL,QAASi3K,EAAsBiM,mBAAmBC,IAI9D,OAAO,KAEXzrQ,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,EAAO+tG,GACxD,OAAOA,EAAWl5H,QAAQnoF,OAAOqhN,EAAWinD,WAAY1K,EAAgB92F,EAAMj6J,EAAMvN,EAAOg0G,IAGnGj0G,EAAQ+/P,sBAAwBA,EAChCA,EAAsBiM,mBAAqB,CACvC,MAAO,IAAIT,EAA6B1B,2BACxC,SAAU,IAAI2B,EAAwBtB,sBACtC,YAAa,IAAIuB,EAA2Bd,yBAC5C,QAAS,IAAIe,EAAuBb,iDCzLxC/qQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQikQ,iCAA8B,EAsBtCjkQ,EAAQikQ,4BAjBR,MACI3B,oBACI,OAAO,EAEXtB,mBACI,OAAO,EAEXxgQ,eAAe+9P,EAAgB92F,EAAMj6J,EAAMymG,EAAOwsJ,GAC9C,OAAO,EAEXjgQ,WAAW+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMymG,GACxC,OAAO,EAEXzzG,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,GACjDsqJ,EAAe+B,aAAarsJ,IAAS,kCCpB7Cn0G,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgkQ,2BAAwB,EAChC,MAAMl1D,EAA0B,EAAQ,MAClC44B,EAAS,EAAQ,OAKvB,MAAMs8B,EAaFh5P,mCAAmCuzP,EAAgB92F,EAAMj6J,EAAMymG,EAAO1sG,EAAWC,EAAQomG,GACrF,MAAMs+J,QAAwBzkG,EAAK0kG,mBAAmB3+P,EAAMymG,GACtD2tJ,QAAyBn6F,EAAKo6F,oBAAoB5tJ,EAAOzmG,GACzD4+P,EAAuBn4J,EAAQ2tJ,EAC/BH,EAAWlD,EAAesB,QAAQqM,GACxC,GAAIzK,EAEA,IAAK,MAAMn6P,KAAWm6P,EAGlB,GADgBG,GAAoB,EACvB,CACT,MAAM3nH,EAASskH,EAAesB,QAAQuM,EAAuB,GAC7D,GAAInyH,EACA,IAAK,MAAMxyI,KAASwyI,EAEZrsC,GACA65D,EAAK2hG,uBAAuB5hQ,GAC5B+2P,EAAeyD,SAAS/tJ,EAAOwzD,EAAKl6J,YAAYnG,KAAKI,EAAQD,EAAWD,EAASG,KAGjF82P,EAAeyD,SAAS/tJ,EAAOwzD,EAAKl6J,YAAYnG,KAAKE,EAASC,EAAWC,EAAQC,SAMrFmmG,GACA65D,EAAK2hG,uBAAuB5hQ,GAC5B+2P,EAAe2D,+BAA+BkK,EAAuB,GAAG/lQ,KAAK,CAAEiB,QAASE,EAAQD,UAAAA,EAAWC,OAAQF,KAGnHi3P,EAAe2D,+BAA+BkK,EAAuB,GAChE/lQ,KAAK,CAAEiB,QAAAA,EAASC,UAAAA,EAAWC,OAAAA,QAIvC,CAED,MAAMC,QAAcggK,EAAKq6F,uBAAuBt0P,EAAM0+P,GAClDt+J,GACA65D,EAAK2hG,uBAAuB5hQ,GAC5B+2P,EAAeyD,SAAS/tJ,EAAOwzD,EAAKl6J,YAAYnG,KAAKI,EAAQD,EAAWD,EAASG,KAGjF82P,EAAeyD,SAAS/tJ,EAAOwzD,EAAKl6J,YAAYnG,KAAKE,EAASC,EAAWC,EAAQC,SAOzFmmG,GACA65D,EAAK2hG,uBAAuB5hQ,GAEhC+2P,EAAeoH,+BAA+BuG,GAAiB7lQ,KAAK,CAAEkB,UAAAA,EAAWC,OAAAA,EAAQomG,QAAAA,IAGjG00J,oBACI,OAAO,EAEXtB,mBACI,OAAO,EAEXxgQ,eAAe+9P,EAAgB92F,EAAMj6J,EAAMymG,EAAOwsJ,GAC9C,MAAM1+P,EAAMyL,EAAKymG,GACjB,GAAIlyG,EAAK,CACL,MAAMhB,QAAgBw9P,EAAehB,WAAW/vP,GAChD,IAAK+wP,EAAegD,iBAAiBttJ,UAAgBwzD,EAAK2gG,gBAAgBrnQ,EAASyM,EAAKymG,IAKpF,MAHsD,UAAlDyzH,EAAOt1N,KAAKy0P,oBAAoB9lQ,EAASgB,KACzCw8P,EAAegD,iBAAiBttJ,EAAQ,IAAK,IAE1C,EAGf,OAAO,EAEXzzG,WAAW+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMymG,GACxC,OAAOzmG,EAAKymG,GAEhBzzG,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,EAAO+tG,GACxD,MAAM+oD,EAAcv9P,EAAKymG,GACnBlzG,QAAgBw9P,EAAehB,WAAW/vP,GAC1CjG,QAAkBkgK,EAAK2gG,gBAAgBrnQ,EAASgB,GACtD,GAAIwF,EAAW,CACX,MAAMyqJ,QAAgByV,EAAKsgG,YAAYhnQ,EAASgB,EAAK9B,EAAOg0G,EAAOzmG,GACnE,GAAIwkJ,EAAQrrJ,OACR,IAAK,IAAIa,KAAUwqJ,EAAS,CACxB,MAAMpkD,EAAU85H,EAAOt1N,KAAKi6P,kBAAkBtrQ,EAASgqQ,QAAmBtjG,EAAK44F,qBAAqB7yP,EAAMymG,IAC1G,GAAIh0G,EAAO,CAGP,MAAMqsQ,EAAqB,UAAW5kC,EAAOt1N,KAAK20P,yBAAyBhmQ,EAASgB,GACpF,GAAIuqQ,GAAsBrsQ,EAAM,SAAU,CACtC,IAAMqsQ,IAAuB5vP,MAAMC,QAAQ1c,KAAWA,EAAM,UACpDA,EAAM,WAAayc,MAAMC,QAAQ1c,EAAM,YACxCuH,IAAWigK,EAAKg4F,OAAQ,CAC3B,MAAMH,EAAc73F,EAAKl6J,YAAYqnH,YACrC2pI,EAAeyD,SAAS/tJ,EAAOwzD,EAAKl6J,YAAYnG,KAAKk4P,EAAa73F,EAAK+3F,QAAS/3F,EAAKg4F,OAAQh4F,EAAKi4F,oBAClGnB,EAAeyD,SAAS/tJ,EAAOwzD,EAAKl6J,YAAYnG,KAAKk4P,EAAa73F,EAAKw+F,SAAUz+P,EAAQigK,EAAKi4F,oBAC9Fl4P,EAAS83P,EAGb,GAAI1xJ,IAAY2wJ,EAAe+F,iBAC3B,MAAM,IAAIx1D,EAAwB0mD,WAAW,mDAAmDzzP,IAAO+sM,EAAwB4mD,YAAY2T,uCAIjJrF,EAAsB0G,sBAAsBnM,EAAgB92F,EAAMj6J,EAAMymG,EAAO1sG,EAAWC,EAAQomG,MAM5H5tG,EAAQgkQ,sBAAwBA,8BCvIhClkQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQusQ,yBAAsB,EAqB9BvsQ,EAAQusQ,oBAjBR,MACIlsQ,YAAYgjJ,GACRziJ,KAAKyiJ,QAAUA,EAEnBi/G,oBACI,OAAO,EAEXtB,mBACI,OAAO,EAEXxgQ,eAAe+9P,EAAgB92F,EAAMj6J,EAAMymG,EAAOwsJ,GAC9C,OAAO,EAEXjgQ,WAAW+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMymG,GACxC,OAAOlyG,IAAQnB,KAAKyiJ,wCCnB5BvjJ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwjQ,gCAA6B,EACrC,MAAM10D,EAA0B,EAAQ,MAClC09D,EAAwB,EAAQ,OAItC,MAAMhJ,UAAmCgJ,EAAsBD,oBAC3DlsQ,cACIE,MAAM,YAEVygQ,mBACI,OAAO,EAEXxgQ,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,GAE7CsqJ,EAAeU,mBACXV,EAAe0C,gBAAgBhtJ,IAC5BsqJ,EAAe6C,eAAentJ,SACIvxG,IAAlC67P,EAAesB,QAAQ5rJ,KAC9BsqJ,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,yFAC5B1mD,EAAwB4mD,YAAY+W,8BAK5E,MAAMhT,EAAgB8E,EAAehB,WAAW/vP,GAE1CzM,EAAUw9P,EAAeoG,aAAa1kQ,SAAcw5P,GAAeltB,iBACzEgyB,EAAemE,YAAYlF,WAAWhwP,EAAKyW,MAAM,GAAI,GAAIljB,GACzDw9P,EAAemH,YAAYzlQ,SACrBs+P,EAAerJ,sBAAsBn0P,IAGnDf,EAAQwjQ,2BAA6BA,gCClCrC1jQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2jQ,8BAA2B,EACnC,MAAM6I,EAAwB,EAAQ,OAItC,MAAM7I,UAAiC6I,EAAsBD,oBACzDlsQ,cACIE,MAAM,UAEVC,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,GAEjDsqJ,EAAe8C,WAAWptJ,EAAQ,IAAK,GAG/Cj0G,EAAQ2jQ,yBAA2BA,gCCfnC7jQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQyjQ,2BAAwB,EAChC,MAAM30D,EAA0B,EAAQ,MAClC09D,EAAwB,EAAQ,OAItC,MAAM/I,UAA8B+I,EAAsBD,oBACtDlsQ,cACIE,MAAM,OAEVygQ,mBACI,OAAO,EAEXxgQ,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,GAC5B,iBAAVh0G,GACPs+P,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,sBAAsBv1P,KAAU6uM,EAAwB4mD,YAAYgX,mBAIxI,MAAMR,QAAwBzkG,EAAK0kG,mBAAmB3+P,EAAMymG,QAEZvxG,IAA5C67P,EAAesB,QAAQqM,KACnB3N,EAAesB,QAAQqM,GAAiB,GAAGtM,SAE3CrB,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,8DAA8DhoP,EAAKymG,EAAQ,MAAO66F,EAAwB4mD,YAAYsS,6BAItLzJ,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,yBAAyB+I,EACpFsB,QAAQqM,GAAiB,GAAGjsQ,eAAeA,KAAU6uM,EAAwB4mD,YAAYiX,sBAItGpO,EAAesB,QAAQqM,GAAmBzkG,EAAKigG,0BAA0BjgG,EAAKygG,qBAAqB3J,EAAehB,WAAW/vP,GAAOvN,KAG5ID,EAAQyjQ,sBAAwBA,+BCrChC3jQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0jQ,iCAA8B,EACtC,MAAM50D,EAA0B,EAAQ,MAClC09D,EAAwB,EAAQ,OAItC,MAAM9I,UAAoC8I,EAAsBD,oBAC5DlsQ,cACIE,MAAM,aAEVC,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,GAC5B,iBAAVh0G,GACPs+P,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,4BAA4Bv1P,KAAU6uM,EAAwB4mD,YAAYkX,yBAE9I,MAAMC,QAAsBplG,EAAKw/F,gBAAgBhnQ,EAAOuN,EAAMymG,QAAasqJ,EAAehB,WAAW/vP,IACjG,WAAYq/P,GACZtO,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,2CAA2CxoP,KAAKC,UAAUhN,MAAW6uM,EAAwB4mD,YAAYkX,yBAEzK,UAAWC,GACXtO,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,0CAA0CxoP,KAAKC,UAAUhN,MAAW6uM,EAAwB4mD,YAAYkX,yBAE5KrO,EAAe+B,aAAarsJ,IAAS,GAG7Cj0G,EAAQ0jQ,4BAA8BA,gCCzBtC5jQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4jQ,6BAA0B,EAClC,MAAM90D,EAA0B,EAAQ,MAClC09D,EAAwB,EAAQ,OAItC,MAAM5I,UAAgC4I,EAAsBD,oBACxDlsQ,cACIE,MAAM,SAEVC,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,GAC5B,iBAAVh0G,GACPs+P,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,kCAAkCzzP,QAAU9B,KAAU6uM,EAAwB4mD,YAAY4D,qBAE1J,iBAAkB7xF,EAAKw/F,gBAAgBhnQ,EAAOuN,EAAMymG,QAAasqJ,EAAehB,WAAW/vP,KAC3F+wP,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,qCAAqCzzP,KAAQ+sM,EAAwB4mD,YAAY4D,qBAErJiF,EAAe+B,aAAarsJ,IAAS,GAG7Cj0G,EAAQ4jQ,wBAA0BA,gCCrBlC9jQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6jQ,6BAA0B,EAClC,MAAM/0D,EAA0B,EAAQ,MAClC44B,EAAS,EAAQ,OACjBm2B,EAA0B,EAAQ,OAClC2O,EAAwB,EAAQ,OAItC,MAAM3I,UAAgC2I,EAAsBD,oBACxDlsQ,cACIE,MAAM,SAEVygQ,mBACI,OAAO,EAEXxgQ,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,GACjD,MAAM82J,EAAcv9P,EAAKymG,GAInBlzG,QAAgBw9P,EAAehB,WAAW/vP,GAC1CjG,EAAYkgK,EAAKy+F,QACjBt4J,EAAU85H,EAAOt1N,KAAKi6P,kBAAkBtrQ,EAASgqQ,QAAmBtjG,EAAK44F,qBAAqB7yP,EAAMymG,IAEpGwqB,EAAW/hH,MAAMC,QAAQ1c,GAASA,EAAQ,CAACA,GACjD,IAAK,MAAM+pF,KAAWy0C,EAAU,CACL,iBAAZz0C,GACPu0K,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,wBAAwBxrK,KAAY8kH,EAAwB4mD,YAAYoX,qBAE5I,MAAM/lQ,EAAO0gK,EAAKqgG,sBAAsB/mQ,EAASipF,GAC7CjjF,SACM82P,EAAwBmG,sBAAsB0G,sBAAsBnM,EAAgB92F,EAAMj6J,EAAMymG,EAAO1sG,EAAWR,EAAM6mG,GAItI,IAAIs3J,EAAgBt5P,QAAQC,QAAQ9K,GAChCgsQ,GAAwB,EAC5B,IAAK,MAAM/iL,KAAWy0C,EAAS19E,OAAQ,CACnC,MAAMisN,EAActlC,EAAOt1N,KAAKk0P,gBAAgBvlQ,EAAS,WAAYipF,EAAS,MAC1EgjL,IACAD,GAAwB,EACxB7H,EAAgBA,EAAcn4P,MAAM4U,GAAM48O,EAAeoG,aAAaqI,EAAarrP,EAAE4qN,qBAIzFgyB,EAAeU,mBACX8N,GAA0BxO,EAAeiG,2CACzCjG,EAAe0C,gBAAgBhtJ,KAAUsqJ,EAAesB,QAAQ5rJ,IACpEsqJ,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,qGAC5B1mD,EAAwB4mD,YAAY+W,8BAGxEM,IAEA7H,EAAgBA,EAAcn4P,MAAM4U,IAC1B,eAAgBA,EAAE4qN,kBACpB5qN,EAAE4qN,gBAAgB,eAAgB,IAKE,IAApC5qN,EAAE4qN,gBAAgB,gBAClB5qN,EAAE4qN,gBAAgB,wBAA0BxrO,EAAQwrO,iBAEjD5qN,KAGX48O,EAAemE,YAAYlF,WAAWhwP,EAAKyW,MAAM,EAAGzW,EAAK7G,OAAS,GAAIu+P,IAG1E3G,EAAe6C,eAAentJ,IAAS,GAG/Cj0G,EAAQ6jQ,wBAA0BA,gCC1ElC/jQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+jQ,wCAAqC,EAC7C,MAAMj1D,EAA0B,EAAQ,MAKxC,MAAMi1D,EACFzB,oBACI,OAAO,EAEXtB,mBACI,OAAO,EAEXxgQ,eAAe+9P,EAAgB92F,EAAMj6J,EAAMymG,EAAOwsJ,GAC9C,MAAM1+P,QAAY0lK,EAAK04F,eAAe3yP,EAAKymG,GAAQzmG,EAAMymG,GACzD,SAAI66F,EAAwB18L,KAAK4jP,mBAAmBj0P,KAE3C0+P,GACW,UAAR1+P,GAQhBvB,WAAW+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMymG,GACxC,OAAO66F,EAAwB18L,KAAK4jP,mBAAmBj0P,GAE3DvB,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,GACjD,MAAMg5J,EAAclJ,EAAmCmJ,qBAAqBnrQ,QACxDW,IAAhBuqQ,EACIA,UAAsBhtQ,IAAUgtQ,EAAYlmQ,MAC5Cw3P,EAAekH,UAAU,IAAI32D,EAAwB0mD,WAAW,2BAA2BzzP,kBAAoB9B,KAAUgtQ,EAAY1X,YAGpIgJ,EAAe9oP,cACpB8oP,EAAekH,UAAU,IAAIrkQ,MAAM,oBAAoBW,kBAAoB9B,OAE/Es+P,EAAe+B,aAAarsJ,IAAS,GAG7Cj0G,EAAQ+jQ,mCAAqCA,EAC7CA,EAAmCmJ,qBAAuB,CACtD,SAAU,CAAEnmQ,KAAM,SAAUwuP,UAAWzmD,EAAwB4mD,YAAY6R,qBAC3E,QAAS,KACT,WAAY,CAAExgQ,KAAM,SAAUwuP,UAAWzmD,EAAwB4mD,YAAYyX,uBAC7E,OAAQ,KACR,SAAU,oCCjDdrtQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8jQ,8BAA2B,EACnC,MAAM0I,EAAwB,EAAQ,OAItC,MAAM1I,UAAiC0I,EAAsBD,oBACzDlsQ,cACIE,MAAM,UAEVC,eAAe+9P,EAAgB92F,EAAMj6J,EAAMymG,EAAOwsJ,GAE9C,MAAM1+P,EAAMyL,EAAKymG,GAIjB,OAHIlyG,IAAQw8P,EAAeiD,aAAavtJ,UAAgBrzG,KAAKmY,KAAKwlP,EAAgB92F,EAAM1lK,EAAKyL,EAAMymG,KAC/FsqJ,EAAeiD,aAAavtJ,IAAS,GAElC1zG,MAAMq6C,SAAS2jN,EAAgB92F,EAAMj6J,EAAMymG,EAAOwsJ,GAE7DjgQ,WAAW+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMymG,GACxC,MAAmG,iBAAtFwzD,EAAK04F,eAAe3yP,EAAKymG,GAAQzmG,EAAKyW,MAAM,EAAGzW,EAAK7G,OAAS,GAAIstG,EAAQ,GAAG,GAE7FzzG,aAAa+9P,EAAgB92F,EAAM1lK,EAAKyL,EAAMvN,EAAOg0G,GAMjDsqJ,EAAeiD,aAAavtJ,IAAS,SAE9BsqJ,EAAeoD,yBAAyB1tJ,UACxCsqJ,EAAe6D,yBAAyBnuJ,GAE/CsqJ,EAAe+B,aAAarsJ,IAAS,GAG7Cj0G,EAAQ8jQ,yBAA2BA,sCCnCnC,IAAI1hQ,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA2BlD,GAChDkD,EAAa,EAAQ,OAAelD,iCCZpCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQg5M,sBAAmB,EAC3B,MAAMlK,EAA0B,EAAQ,MAClCvjM,EAAW,EAAQ,OACnB6hQ,EAAkB,EAAQ,OAC1B1lC,EAAS,EAAQ,OAIvB,MAAM1uB,UAAyBztM,EAAS41H,UACpC9gI,YAAY4R,EAAU,IAClB1R,MAAM,CAAE+hI,YAAY,IACpB1hI,KAAKy1O,YAAc,EACnBz1O,KAAKqR,QAAUA,EAEXrR,KAAKqR,QAAQ/I,UAAYtI,KAAKqR,QAAQlR,UACtCH,KAAKqR,QAAQlR,QAAU,CAAE,QAASH,KAAKqR,QAAQ/I,UAE/CtI,KAAKqR,QAAQlR,SACbH,KAAKysQ,gBAAkBzsQ,KAAKqR,QAAQlR,QACpCH,KAAKG,SAAU,IAAI+tM,EAAwB+7B,eAAgBliN,MAAM/nB,KAAKqR,QAAQlR,QAAS,CAAEmI,QAAStI,KAAKqR,QAAQ/I,WAG/GtI,KAAKG,QAAU6K,QAAQC,QAAQ,IAAIijM,EAAwB6pD,wBAAwB,KAQ3F9pD,OAAOxlH,GACH,MAAM/kF,EAAS,IAAIiH,EAAS21H,YAAY,CAAEoB,YAAY,IACtDj5C,EAAOj9E,GAAG,SAAUO,GAAU2hF,EAAO1hF,KAAK,QAASD,KACnD08E,EAAOj9E,GAAG,QAAStC,GAASxF,EAAO+B,KAAKyD,KACxCu/E,EAAOj9E,GAAG,OAAO,IAAM9H,EAAO+B,KAAK,QACnC,MAAMioF,EAAShqF,EAAOupH,KAAK,IAAImrF,EAAiBp4M,KAAKqR,UACrD,OAAOq8E,EASX8/B,WAAWhnH,EAAM6kF,EAAUr9E,GACvBhO,KAAKG,QAAQgM,MAAMhM,IACfH,KAAK0sQ,cAAclmQ,EAAMrG,GACzB6N,OACD1B,MAAM0B,GASbpO,WAAWmN,GACP,MAAM5M,QAAgBH,KAAKG,QAC3B,MAAO,CACH,QAAS4M,EAAO/G,KAAK3G,GAAUynO,EAAOt1N,KAAKm7P,YAAYttQ,EAAOc,EAASH,KAAKqR,YAQpF01H,OAAO/4H,GAeH,OAbKhO,KAAK4sQ,QACN5sQ,KAAK6sQ,oBAEL7sQ,KAAK8sQ,eACL9sQ,KAAK+sQ,eAEL/sQ,KAAKgtQ,aACLhtQ,KAAKitQ,aAELjtQ,KAAKktQ,WAAyC,iBAA5BltQ,KAAKktQ,UAAUpmQ,UACjC9G,KAAKmtQ,WAETntQ,KAAKotQ,cACEp/P,EAAS,KAAM,MAO1B0+P,cAAclmQ,EAAMrG,GAEXH,KAAK4sQ,QACN5sQ,KAAK6sQ,oBAIT,MAAMQ,EAA0BrtQ,KAAKktQ,WAAyC,iBAA5BltQ,KAAKktQ,UAAUpmQ,UAC1D9G,KAAKktQ,UAAU9/P,OAAO5G,EAAKE,SAElC,KAAK2mQ,GAA6BrtQ,KAAKktQ,WAAc1mQ,EAAKK,MAAMuG,OAAOpN,KAAKktQ,YAAa,CAGrF,IAAII,EAAkD,iBAAxB9mQ,EAAKK,MAAMC,UAClC9G,KAAKgtQ,aAAehtQ,KAAKgtQ,YAAY5/P,OAAO5G,EAAKK,OACpD7G,KAAKktQ,YAC2B,iBAA5BltQ,KAAKktQ,UAAUpmQ,UAEf9G,KAAK+sQ,eACL/sQ,KAAKitQ,aACLjtQ,KAAKmtQ,UAAS,GACdG,GAA0B,GAIrBA,GAKDttQ,KAAK+sQ,cAAa,GAClB/sQ,KAAKgtQ,YAAc,OALnBhtQ,KAAK+sQ,eACL/sQ,KAAKitQ,YAAW,KASA,iBAAxBzmQ,EAAKK,MAAMC,WACNwmQ,GACDttQ,KAAKutQ,OAAO/mQ,EAAKK,MAAO1G,GAE5BH,KAAKwtQ,cAAcxtQ,KAAKqR,QAAQgnM,MAC1Bm0D,EAAgBiB,cAAcC,uBAAyBlB,EAAgBiB,cAAcE,qBAC3F3tQ,KAAKy1O,eAETz1O,KAAKktQ,UAAY1mQ,EAAKK,MAGrB7G,KAAKgtQ,aAAgBxmQ,EAAKE,QAAQ0G,OAAOpN,KAAKgtQ,eAC3CK,GACArtQ,KAAK+sQ,eACL/sQ,KAAKitQ,aACLjtQ,KAAKy1O,cACLz1O,KAAKwtQ,cAAchB,EAAgBiB,cAAcG,iBACjD5tQ,KAAKktQ,UAAY1mQ,EAAKK,QAGlB7G,KAAKgtQ,cACLhtQ,KAAK+sQ,eACL/sQ,KAAKitQ,YAAW,IAGpBjtQ,KAAKutQ,OAAO/mQ,EAAKE,QAASvG,IAE9BH,KAAKgtQ,YAAcxmQ,EAAKE,SAGvB1G,KAAK8sQ,eAAkBtmQ,EAAKG,UAAUyG,OAAOpN,KAAK8sQ,iBAC/C9sQ,KAAK8sQ,eACL9sQ,KAAK+sQ,cAAa,GAGtB/sQ,KAAK6tQ,cAAcrnQ,EAAKG,UAAWxG,IAGvCH,KAAK8tQ,WAAWtnQ,EAAKI,OAAQzG,GAEjC0sQ,oBACI7sQ,KAAK4sQ,QAAS,EACV5sQ,KAAKysQ,kBAAoBzsQ,KAAKqR,QAAQ08P,gBACtC/tQ,KAAKwtQ,cAAchB,EAAgBiB,cAAcO,cACjDhuQ,KAAKy1O,cACLz1O,KAAKwtQ,cAAchB,EAAgBiB,cAAcQ,eACjDjuQ,KAAKkuQ,aAAa9hQ,KAAKC,UAAUrM,KAAKysQ,gBAAiB,KAAMzsQ,KAAKqR,QAAQgnM,OAAS,KACnFr4M,KAAKwtQ,cAAcxtQ,KAAKqR,QAAQgnM,MAC1Bm0D,EAAgBiB,cAAcC,uBAAyBlB,EAAgBiB,cAAcE,qBAC3F3tQ,KAAKy1O,gBAGLz1O,KAAKwtQ,cAAchB,EAAgBiB,cAAcU,aACjDnuQ,KAAKy1O,eAQb83B,OAAOn8P,EAAMjR,GACT,MAAMiuQ,EAAiC,cAAlBh9P,EAAKtK,SACpB,KAAOsK,EAAK/R,MAAQc,EAAQ47P,WAAW3qP,EAAK/R,OAAO,GACzDW,KAAKwtQ,cAAchB,EAAgBiB,cAAcO,cACjDhuQ,KAAKy1O,cACLz1O,KAAKkuQ,aAAaluQ,KAAKqR,QAAQgnM,MAAQ,WAAW+1D,MAAmB,UAAUA,OAOnFP,cAAclnQ,EAAWxG,GACrB,IAAIg+L,EAAWx3L,EAAUtH,MAEpBW,KAAKqR,QAAQg9P,YAAclwE,IAAa2oC,EAAOt1N,KAAK2/I,WACrDgtC,EAAW,QACXn+L,KAAKsuQ,cAAgBpvQ,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI9V,KAAKqR,SAAU,CAAEk9P,YAAY,EAAM5S,OAAO,KAGnG,MAAM6S,EAAoBruQ,EAAQ47P,WAAW59D,GAAU,GACvDn+L,KAAKkuQ,aAAaluQ,KAAKqR,QAAQgnM,MAAQ,IAAIm2D,QAA0B,IAAIA,QACzExuQ,KAAKy1O,cACLz1O,KAAK8sQ,cAAgBnmQ,EAOzBmnQ,WAAWlnQ,EAAQzG,GASf,IAAId,EAPCW,KAAKyuQ,sBAINzuQ,KAAKwtQ,cAAchB,EAAgBiB,cAAcj/I,OAHjDxuH,KAAKyuQ,uBAAwB,EAOjC,IAEQpvQ,EADAuH,EAAO,SACCA,EAGAkgO,EAAOt1N,KAAKm7P,YAAY/lQ,EAAQzG,EAASH,KAAKsuQ,eAAiBtuQ,KAAKqR,SAGpF,MAAOod,GACH,OAAOzuB,KAAKgM,KAAK,QAASyiB,GAE9BzuB,KAAKkuQ,aAAa9hQ,KAAKC,UAAUhN,EAAO,KAAMW,KAAKqR,QAAQgnM,QAE/D+0D,cACIptQ,KAAK4sQ,QAAS,EACV5sQ,KAAKysQ,kBAAoBzsQ,KAAKqR,QAAQ08P,gBACtC/tQ,KAAKy1O,cACLz1O,KAAKwtQ,cAAchB,EAAgBiB,cAAciB,WACjD1uQ,KAAKy1O,cACLz1O,KAAKwtQ,cAAchB,EAAgBiB,cAAckB,cAGjD3uQ,KAAKy1O,cACLz1O,KAAKwtQ,cAAchB,EAAgBiB,cAAciB,YAOzD3B,aAAa6B,GAET5uQ,KAAKy1O,cACLz1O,KAAKwtQ,cAAcoB,EAAQpC,EAAgBiB,cAAcG,gBAAkBpB,EAAgBiB,cAAciB,WAEzG1uQ,KAAKyuQ,uBAAwB,EAC7BzuQ,KAAKsuQ,cAAgB,KAErBtuQ,KAAK8sQ,cAAgB,KAMzBG,WAAW2B,GAEP5uQ,KAAKy1O,cACLz1O,KAAKwtQ,cAAcoB,EAAQpC,EAAgBiB,cAAcoB,iBAAmBrC,EAAgBiB,cAAckB,YAE1G3uQ,KAAKgtQ,YAAc,KAMvBG,SAASyB,GAEL5uQ,KAAKy1O,cACLz1O,KAAKwtQ,cAAchB,EAAgBiB,cAAciB,WAEjD1uQ,KAAKy1O,cACLz1O,KAAKwtQ,cAAcoB,EAAQpC,EAAgBiB,cAAcoB,iBAAmBrC,EAAgBiB,cAAckB,YAE1G3uQ,KAAKktQ,UAAY,KAMrBM,cAAcrnQ,GACVnG,KAAKkuQ,aAAa/nQ,EAAKy6I,OAO3BstH,aAAahlQ,GACT,MAAMy3B,EAAS3gC,KAAK8uQ,kBACd/4G,EAAQ7sJ,EAAK4X,MAAM,MAAM9a,KAAKwxF,GAAS72D,EAAS62D,IAAMh3E,KAAK,MACjExgB,KAAKyF,KAAKswJ,GACN/1J,KAAKqR,QAAQgnM,OACbr4M,KAAKyF,KAAK,MAMlBqpQ,kBACI,OAAO9uQ,KAAKqR,QAAQgnM,MAAQr4M,KAAKqR,QAAQgnM,MAAMt2J,OAAO/hD,KAAKy1O,aAAe,IAGlFr2O,EAAQg5M,iBAAmBA,8BCjU3Bl5M,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQquQ,mBAAgB,EAIxB,MAAMA,EACFhuQ,YAAYmhJ,GACR5gJ,KAAK4gJ,MAAQA,GAGrBxhJ,EAAQquQ,cAAgBA,EACxBA,EAAcj/I,MAAQ,IAAIi/I,EAAc,KACxCA,EAAcO,aAAe,IAAIP,EAAc,KAC/CA,EAAckB,WAAa,IAAIlB,EAAc,KAC7CA,EAAcoB,iBAAmB,IAAIpB,EAAc,MACnDA,EAAcU,YAAc,IAAIV,EAAc,KAC9CA,EAAciB,UAAY,IAAIjB,EAAc,KAC5CA,EAAcG,gBAAkB,IAAIH,EAAc,MAClDA,EAAcC,uBAAyB,IAAID,EAAc,eACzDA,EAAcE,oBAAsB,IAAIF,EAAc,cACtDA,EAAcQ,cAAgB,IAAIR,EAAc,6CCpBhDvuQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoS,UAAO,EACf,MAAM08L,EAA0B,EAAQ,MAIxC,MAAM18L,EAQFpH,mBAAmBgH,EAAMjR,EAASkR,EAAU,CACxCk9P,YAAY,EACZQ,gBAAgB,IAEhB,OAAQ39P,EAAKtK,UACT,IAAK,YACD,MAAMkoQ,EAAY7uQ,EAAQ47P,WAAW3qP,EAAK/R,MAAOgS,EAAQsqP,OACzD,OAAOtqP,EAAQk9P,WAAaS,EAAY,CAAE,MAAOA,GACrD,IAAK,eACD,OAAO39P,EAAQk9P,WAAan9P,EAAK/R,MAAQ,CAAE,MAAO+R,EAAK/R,OAC3D,IAAK,YACD,MAAMwjC,EAAK,KAAKzxB,EAAK/R,QACrB,OAAOgS,EAAQk9P,WAAa1rO,EAAK,CAAE,MAAOA,GAC9C,IAAK,UAED,GAAIzxB,EAAKujH,SAASt1H,QAAUmS,EAAKy9P,SAAU,CACvC,IAAIC,EACJ,IACIA,EAAa9iQ,KAAK2b,MAAM3W,EAAK/R,OAEjC,MAAOovB,GACH,MAAM,IAAIy/K,EAAwB0mD,WAAW,yBAA2BnmO,EAAE/X,QAASw3L,EAAwB4mD,YAAYqa,sBAE3H,MAAO,CACH,SAAUD,EACV,QAAS,SAIjB,GAA6B,kBAAzB79P,EAAQsyP,cAAoCvyP,EAAKujH,SAASt1H,MAAMioB,WAAW9V,EAAK49P,MAAO,CACvF,MAAOpnQ,EAAUgkL,GAAa56K,EAAKujH,SAASt1H,MACvC4iB,OAAOzQ,EAAK49P,KAAKrpQ,OAAQqL,EAAKujH,SAASt1H,MAAM0G,QAC7C+a,MAAM,KACX,OAAO5hB,OAAO4W,OAAO5W,OAAO4W,OAAO,CAAE,SAAU1E,EAAK/R,OAAS2I,EAAW,CAAE,YAAaA,GAAa,IAAKgkL,EAAY,CAAE,aAAcA,GAAc,IAEvJ,MAAM97C,EAAa9+H,EAAKujH,SAASt1H,QAAUmS,EAAKojH,WAC1C0jC,EAAW,CACb,UAAWpoB,GAAc7+H,EAAQ09P,eAC3Bv9P,EAAK69P,mBAAmBj+P,EAAK/R,MAAO+R,EAAKujH,SAASt1H,OAAS+R,EAAK/R,OAE1E,OAAI+R,EAAKpJ,SACE9I,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIwiJ,GAAW,CAAE,YAAalnJ,EAAKpJ,WAEhEkoI,GAA4C,iBAAvBooB,EAAS,UAI7BA,EAHAp5J,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIwiJ,GAAW,CAAE,QAASlnJ,EAAKujH,SAASt1H,SAc3F+K,0BAA0B/K,EAAO8G,GAC7B,GAAIA,EAAKmhB,WAAW9V,EAAKyiJ,KAErB,OADgB9tJ,EAAK8b,OAAOzQ,EAAKyiJ,IAAIluJ,SAEjC,IAAK,UACD,GAAc,SAAV1G,EACA,OAAO,EAEN,GAAc,UAAVA,EACL,OAAO,EAEX,MAAM,IAAImB,MAAM,8BAA8BnB,MAClD,IAAK,UACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,OACD,MAAMiwQ,EAAYttP,SAAS3iB,EAAO,IAClC,GAAIuhE,MAAM0uM,GACN,MAAM,IAAI9uQ,MAAM,8BAA8BnB,MAElD,OAAOiwQ,EACX,IAAK,QACL,IAAK,SACD,MAAMC,EAAc97O,WAAWp0B,GAC/B,GAAIuhE,MAAM2uM,GACN,MAAM,IAAI/uQ,MAAM,4BAA4BnB,MAEhD,OAAOkwQ,EAGnB,OAAOlwQ,GAGfD,EAAQoS,KAAOA,EACfA,EAAKyiJ,IAAM,oCACXziJ,EAAKojH,WAAapjH,EAAKyiJ,IAAM,SAC7BziJ,EAAKwiJ,IAAM,8CACXxiJ,EAAK2/I,SAAW3/I,EAAKwiJ,IAAM,OAC3BxiJ,EAAKy9P,SAAWz9P,EAAKwiJ,IAAM,OAC3BxiJ,EAAK49P,KAAO,qEC/GRvzO,EAAI,GAEJsyF,EAAgBtyF,EAAEsyF,WAAgB,EAClCC,EAAgBvyF,EAAEuyF,YAAgB,EAClCC,EAAgBxyF,EAAEwyF,aAAgB,EAClCC,EAAgBzyF,EAAEyyF,cAAgB,EAClCC,EAAgB1yF,EAAE0yF,MAAgB,EAClCC,EAAgB3yF,EAAE2yF,MAAgB,EAClCC,EAAgB5yF,EAAE4yF,KAAgB,EAClCC,EAAgB7yF,EAAE6yF,MAAgB,EAClCC,EAAgB9yF,EAAE8yF,KAAgB,EAClCC,EAAgB/yF,EAAE+yF,OAAgB,GAClCC,EAAgBhzF,EAAEgzF,OAAgB,GAElCC,EAAUjzF,EAAEizF,MAAU,GACtBC,EAAUlzF,EAAEkzF,KAAU,GACtBC,EAAUnzF,EAAEmzF,MAAU,GACtBC,EAAUpzF,EAAEozF,MAAU,GACtBC,EAAUrzF,EAAEqzF,MAAU,GACtBC,EAAUtzF,EAAEszF,OAAU,GACtBC,EAAUvzF,EAAEuzF,OAAU,GACtBC,EAAUxzF,EAAEwzF,OAAU,GACtBC,EAAUzzF,EAAEyzF,OAAU,GACtBC,EAAU1zF,EAAE0zF,MAAU,GACtBC,EAAU3zF,EAAE2zF,MAAU,GACtBC,EAAU5zF,EAAE4zF,MAAU,GACtBC,EAAU7zF,EAAE6zF,QAAU,GACtBC,EAAU9zF,EAAE8zF,QAAU,GACtBC,EAAU/zF,EAAE+zF,QAAU,GACtBC,EAAUh0F,EAAEg0F,QAAU,GACtBC,EAAUj0F,EAAEi0F,QAAU,GACtBC,EAAUl0F,EAAEk0F,QAAU,IACtBC,EAAUn0F,EAAEm0F,QAAU,IACtBC,EAAUp0F,EAAEo0F,QAAU,IAEtBC,EAAUr0F,EAAEq0F,MAAU,IACtBC,EAAUt0F,EAAEs0F,IAAU,IAEtBC,EAAUv0F,EAAEu0F,OAAU,IACtBC,EAAUx0F,EAAEw0F,MAAU,IAEtBC,EAAkB,KAAKtvG,WAAW,GAClCuvG,EAAkB,IAAKvvG,WAAW,GAClCwvG,EAAkB,KAAKxvG,WAAW,GAClCyvG,EAAkB,KAAKzvG,WAAW,GAClC0vG,EAAkB,KAAK1vG,WAAW,GAClC2vG,EAAkB,KAAK3vG,WAAW,GAClC4vG,EAAkB,KAAK5vG,WAAW,GAElC6vG,EAAqB,MAEzB,SAASzoC,IACPpoF,KAAK8wH,OAAShC,EACd9uH,KAAKX,WAAQyC,EAEb9B,KAAKorF,YAAStpF,EACd9B,KAAK+wH,aAAezwD,EAAOU,MAAQV,EAAOU,MAAM6vD,GAAsB,IAAIvwD,EAAOuwD,GACjF7wH,KAAKgxH,mBAAqB,EAC1BhxH,KAAKixH,aAAUnvH,EACf9B,KAAKkxH,mBAAgBpvH,EAErB9B,KAAKmB,SAAMW,EACX9B,KAAK8wB,UAAOhvB,EACZ9B,KAAK+mF,MAAQ,GACb/mF,KAAKyiC,MAAQytF,EACblwH,KAAKmxH,gBAAkB,EACvBnxH,KAAKoxH,kBAAoB,EACzBpxH,KAAKqxH,WAAa,CAAE,EAAK,IAAI/wD,EAAO,GAAI,EAAK,IAAIA,EAAO,GAAI,EAAK,IAAIA,EAAO,IAG5EtgE,KAAKmf,QAAU,EAIjBipE,EAAOkpC,OAAS,SAAU70G,GAExB,IADA,IAAI7P,EAAO1N,OAAO0N,KAAKivB,GACdjjB,EAAI,EAAGye,EAAIzqB,EAAK7G,OAAQ6S,EAAIye,EAAGze,IAAK,CAC3C,IAAIzX,EAAMyL,EAAKgM,GACf,GAAIijB,EAAE16B,KAASsb,EAAQ,OAAOtb,EAEhC,OAAOsb,GAAS,KAAOA,EAAK5O,SAAS,KAGvC,IAAIsQ,EAAQiqE,EAAO5lF,UACnB2b,EAAMy4D,QAAU,SAAU1rD,GAAO,MAAMA,GACvC/M,EAAMozG,UAAY,SAAU1yG,EAAQjG,GAClC5Y,KAAK8wH,OAAS/B,EACd/uH,KAAK42E,QAAQ,IAAIp2E,MAAM,cAAgB4L,KAAKC,UAAU8T,OAAOC,aAAavB,EAAOjG,KAAO,gBAAkBA,EAAI,aAAewvE,EAAOkpC,OAAOtxH,KAAK8wH,WAElJ3yG,EAAMqzG,iBAAmB,SAAUC,GAC7BzxH,KAAKgxH,oBAAsBH,IAC7B7wH,KAAKorF,QAAUprF,KAAK+wH,aAAaljH,SAAS,QAC1C7N,KAAKgxH,mBAAqB,GAG5BhxH,KAAK+wH,aAAa/wH,KAAKgxH,sBAAwBS,GAEjDtzG,EAAMuzG,gBAAkB,SAAU/yG,EAAK+pB,EAAOkiD,GAC5C,IAAI39E,EAAO0R,EAAI5Y,OACM,iBAAV2iC,IAILz7B,EAHe,iBAAR29E,EACLA,EAAM,EAEDjsE,EAAI5Y,OAAS2iC,EAAQkiD,EAErBA,EAAMliD,EAGR/pB,EAAI5Y,OAAS2iC,GAIpBz7B,EAAO,IACTA,EAAO,GAGLjN,KAAKgxH,mBAAqB/jH,EAAO4jH,IACnC7wH,KAAKorF,QAAUprF,KAAK+wH,aAAaljH,SAAS,OAAQ,EAAG7N,KAAKgxH,oBAC1DhxH,KAAKgxH,mBAAqB,GAG5BryG,EAAI+hD,KAAK1gE,KAAK+wH,aAAc/wH,KAAKgxH,mBAAoBtoF,EAAOkiD,GAC5D5qF,KAAKgxH,oBAAsB/jH,GAE7BkR,EAAM1D,MAAQ,SAAUoE,GAEtB,IAAI6P,EADkB,iBAAX7P,IAAqBA,EAAS,IAAIyhD,EAAOzhD,IAEpD,IAAK,IAAIjG,EAAI,EAAGye,EAAIxY,EAAO9Y,OAAQ6S,EAAIye,EAAGze,IACxC,GAAI5Y,KAAK8wH,SAAWhC,GAGlB,GAFApgG,EAAI7P,EAAOjG,GACX5Y,KAAKmf,SACI,MAANuP,EAAa1uB,KAAKspF,QAAQ6kC,EAAY,UACnC,GAAS,MAANz/F,EAAa1uB,KAAKspF,QAAQ8kC,EAAa,UAC1C,GAAS,KAAN1/F,EAAa1uB,KAAKspF,QAAQ+kC,EAAc,UAC3C,GAAS,KAAN3/F,EAAa1uB,KAAKspF,QAAQglC,EAAe,UAC5C,GAAS,KAAN5/F,EAAa1uB,KAAKspF,QAAQilC,EAAO,UACpC,GAAS,KAAN7/F,EAAa1uB,KAAKspF,QAAQklC,EAAO,UACpC,GAAS,MAAN9/F,EAAa1uB,KAAK8wH,OAAS9B,OAC9B,GAAS,MAANtgG,EAAa1uB,KAAK8wH,OAAS3B,OAC9B,GAAS,MAANzgG,EAAa1uB,KAAK8wH,OAASvB,OAC9B,GAAS,KAAN7gG,EACP1uB,KAAKorF,OAAS,GACdprF,KAAKgxH,mBAAqB,EAC1BhxH,KAAK8wH,OAASlB,OACV,GAAS,KAANlhG,EAAa1uB,KAAKorF,OAAS,IAAKprF,KAAK8wH,OAASpB,OAErD,GAAIhhG,GAAK,IAAQA,EAAI,GACnB1uB,KAAKorF,OAASjrE,OAAOC,aAAasO,GAAI1uB,KAAK8wH,OAASnB,OAC/C,GAAU,KAANjhG,GAAoB,IAANA,GAAoB,KAANA,GAAoB,KAANA,EAGnD,OAAO1uB,KAAKuxH,UAAU1yG,EAAQjG,QAG9B,GAAI5Y,KAAK8wH,SAAWlB,EAIxB,GAHAlhG,EAAI7P,EAAOjG,GAGP5Y,KAAKmxH,gBAAkB,EAAG,CAC5B,IAAK,IAAIr0F,EAAI,EAAGA,EAAI98B,KAAKmxH,gBAAiBr0F,IACxC98B,KAAKqxH,WAAWrxH,KAAKoxH,mBAAmBpxH,KAAKoxH,kBAAoBpxH,KAAKmxH,gBAAkBr0F,GAAKje,EAAOie,GAGtG98B,KAAK0xH,gBAAgB1xH,KAAKqxH,WAAWrxH,KAAKoxH,oBAC1CpxH,KAAKoxH,kBAAoBpxH,KAAKmxH,gBAAkB,EAChDv4G,EAAIA,EAAIkkB,EAAI,OACP,GAA6B,IAAzB98B,KAAKmxH,iBAAyBziG,GAAK,IAAK,CACjD,GAAIA,GAAK,KAAOA,EAAI,IAClB,OAAO1uB,KAAK42E,QAAQ,IAAIp2E,MAAM,uCAAyCoY,EAAI,aAAewvE,EAAOkpC,OAAOtxH,KAAK8wH,UAK/G,GAHKpiG,GAAK,KAASA,GAAK,MAAM1uB,KAAKoxH,kBAAoB,GAClD1iG,GAAK,KAASA,GAAK,MAAM1uB,KAAKoxH,kBAAoB,GAClD1iG,GAAK,KAASA,GAAK,MAAM1uB,KAAKoxH,kBAAoB,GAClDpxH,KAAKoxH,kBAAoBx4G,EAAKiG,EAAO9Y,OAAQ,CAChD,IAAK,IAAInE,EAAI,EAAGA,GAAMid,EAAO9Y,OAAS,EAAI6S,EAAIhX,IAC5C5B,KAAKqxH,WAAWrxH,KAAKoxH,mBAAmBxvH,GAAKid,EAAOjG,EAAIhX,GAE1D5B,KAAKmxH,gBAAmBv4G,EAAI5Y,KAAKoxH,kBAAqBvyG,EAAO9Y,OAC7D6S,EAAIiG,EAAO9Y,OAAS,OAEpB/F,KAAK0xH,gBAAgB7yG,EAAQjG,EAAGA,EAAI5Y,KAAKoxH,mBACzCx4G,EAAIA,EAAI5Y,KAAKoxH,kBAAoB,OAE9B,GAAU,KAAN1iG,EACT1uB,KAAK8wH,OAAShC,EACd9uH,KAAKorF,QAAUprF,KAAK+wH,aAAaljH,SAAS,OAAQ,EAAG7N,KAAKgxH,oBAC1DhxH,KAAKgxH,mBAAqB,EAC1BhxH,KAAKspF,QAAQslC,EAAQ5uH,KAAKorF,QAC1BprF,KAAKmf,QAAUmhD,EAAOvB,WAAW/+D,KAAKorF,OAAQ,QAAU,EACxDprF,KAAKorF,YAAStpF,OAEX,GAAU,KAAN4sB,EACP1uB,KAAK8wH,OAASjB,MAEX,MAAInhG,GAAK,IAEV,OAAO1uB,KAAKuxH,UAAU1yG,EAAQjG,GAFZ5Y,KAAKwxH,iBAAiB9iG,QAIxC,GAAI1uB,KAAK8wH,SAAWjB,EAExB,GAAS,MADTnhG,EAAI7P,EAAOjG,IACK5Y,KAAKwxH,iBAAiB9iG,GAAI1uB,KAAK8wH,OAASlB,OAClD,GAAS,KAANlhG,EAAa1uB,KAAKwxH,iBAAiBlB,GAAatwH,KAAK8wH,OAASlB,OACjE,GAAS,KAANlhG,EAAa1uB,KAAKwxH,iBAAiBjB,GAAgBvwH,KAAK8wH,OAASlB,OACpE,GAAS,KAANlhG,EAAa1uB,KAAKwxH,iBAAiBhB,GAAYxwH,KAAK8wH,OAASlB,OAChE,GAAS,MAANlhG,EAAa1uB,KAAKwxH,iBAAiBf,GAAYzwH,KAAK8wH,OAASlB,OAChE,GAAS,MAANlhG,EAAa1uB,KAAKwxH,iBAAiBd,GAAU1wH,KAAK8wH,OAASlB,OAC9D,GAAS,MAANlhG,EAAa1uB,KAAKwxH,iBAAiBb,GAAkB3wH,KAAK8wH,OAASlB,OACtE,GAAS,MAANlhG,EAAa1uB,KAAKwxH,iBAAiBZ,GAAM5wH,KAAK8wH,OAASlB,MAC1D,IAAS,MAANlhG,EAEP,OAAO1uB,KAAKuxH,UAAU1yG,EAAQjG,GAFV5Y,KAAKixH,QAAU,GAAIjxH,KAAK8wH,OAAShB,OAInD,GAAI9vH,KAAK8wH,SAAWhB,GAAW9vH,KAAK8wH,SAAWf,GAAW/vH,KAAK8wH,SAAWd,GAAWhwH,KAAK8wH,SAAWb,EAAQ,CAGjH,MAFAvhG,EAAI7P,EAAOjG,KAED,IAAQ8V,EAAI,IAAUA,EAAI,IAAQA,GAAK,IAAUA,EAAI,IAAQA,GAAK,KAoB1E,OAAO1uB,KAAKuxH,UAAU1yG,EAAQjG,GAlB9B,GADA5Y,KAAKixH,SAAW9wG,OAAOC,aAAasO,GAChC1uB,KAAK8wH,WAAab,EAAS,CAC7B,IAAI0B,EAAS3vG,SAAShiB,KAAKixH,QAAS,IACpCjxH,KAAKixH,aAAUnvH,OACYA,IAAvB9B,KAAKkxH,eAA+BS,GAAU,OAAUA,EAAS,OACnE3xH,KAAK0xH,gBAAgB,IAAIpxD,EAAOngD,OAAOC,aAAapgB,KAAKkxH,cAAeS,KACxE3xH,KAAKkxH,mBAAgBpvH,QACWA,IAAvB9B,KAAKkxH,eAA+BS,GAAU,OAAUA,EAAS,MAC1E3xH,KAAKkxH,cAAgBS,QAEM7vH,IAAvB9B,KAAKkxH,gBACPlxH,KAAK0xH,gBAAgB,IAAIpxD,EAAOngD,OAAOC,aAAapgB,KAAKkxH,iBACzDlxH,KAAKkxH,mBAAgBpvH,GAEvB9B,KAAK0xH,gBAAgB,IAAIpxD,EAAOngD,OAAOC,aAAauxG,MAEtD3xH,KAAK8wH,OAASlB,QAKb,GAAI5vH,KAAK8wH,SAAWpB,GAAW1vH,KAAK8wH,SAAWnB,EAGlD,OAFAjhG,EAAI7P,EAAOjG,IAGT,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACH5Y,KAAKorF,QAAUjrE,OAAOC,aAAasO,GACnC1uB,KAAK8wH,OAASnB,EACd,MACF,QACE3vH,KAAK8wH,OAAShC,EACd,IAAIxnH,EAASjE,OAAOrD,KAAKorF,QAEzB,GAAIxqB,MAAMt5D,GACR,OAAOtH,KAAKuxH,UAAU1yG,EAAQjG,GAG3B5Y,KAAKorF,OAAOtiE,MAAM,WAAa9oB,KAAKorF,QAAY9jF,EAAOuG,YAAc7N,KAAKorF,OAE7EprF,KAAKspF,QAAQslC,EAAQ5uH,KAAKorF,QAE1BprF,KAAKspF,QAAQulC,EAAQvnH,GAGvBtH,KAAKmf,QAAUnf,KAAKorF,OAAOrlF,OAAS,EACpC/F,KAAKorF,YAAStpF,EACd8W,SAGF,GAAI5Y,KAAK8wH,SAAW9B,EAAM,CAC9B,GAAkB,MAAdnwG,EAAOjG,GACJ,OAAO5Y,KAAKuxH,UAAU1yG,EAAQjG,GADX5Y,KAAK8wH,OAAS7B,OAEpC,GAAIjvH,KAAK8wH,SAAW7B,EAAM,CAC9B,GAAkB,MAAdpwG,EAAOjG,GACJ,OAAO5Y,KAAKuxH,UAAU1yG,EAAQjG,GADX5Y,KAAK8wH,OAAS5B,OAEpC,GAAIlvH,KAAK8wH,SAAW5B,EAAM,CAC9B,GAAkB,MAAdrwG,EAAOjG,GACJ,OAAO5Y,KAAKuxH,UAAU1yG,EAAQjG,GADX5Y,KAAK8wH,OAAShC,EAAO9uH,KAAKspF,QAAQmlC,GAAM,GAAOzuH,KAAKmf,QAAS,OAEnF,GAAInf,KAAK8wH,SAAW3B,EAAO,CAC/B,GAAkB,KAAdtwG,EAAOjG,GACJ,OAAO5Y,KAAKuxH,UAAU1yG,EAAQjG,GADX5Y,KAAK8wH,OAAS1B,OAEpC,GAAIpvH,KAAK8wH,SAAW1B,EAAO,CAC/B,GAAkB,MAAdvwG,EAAOjG,GACJ,OAAO5Y,KAAKuxH,UAAU1yG,EAAQjG,GADX5Y,KAAK8wH,OAASzB,OAEpC,GAAIrvH,KAAK8wH,SAAWzB,EAAO,CAC/B,GAAkB,MAAdxwG,EAAOjG,GACJ,OAAO5Y,KAAKuxH,UAAU1yG,EAAQjG,GADX5Y,KAAK8wH,OAASxB,OAEpC,GAAItvH,KAAK8wH,SAAWxB,EAAO,CAC/B,GAAkB,MAAdzwG,EAAOjG,GACJ,OAAO5Y,KAAKuxH,UAAU1yG,EAAQjG,GADX5Y,KAAK8wH,OAAShC,EAAO9uH,KAAKspF,QAAQolC,GAAO,GAAQ1uH,KAAKmf,QAAS,OAErF,GAAInf,KAAK8wH,SAAWvB,EAAM,CAC9B,GAAkB,MAAd1wG,EAAOjG,GACJ,OAAO5Y,KAAKuxH,UAAU1yG,EAAQjG,GADX5Y,KAAK8wH,OAAStB,OAEpC,GAAIxvH,KAAK8wH,SAAWtB,EAAM,CAC9B,GAAkB,MAAd3wG,EAAOjG,GACJ,OAAO5Y,KAAKuxH,UAAU1yG,EAAQjG,GADX5Y,KAAK8wH,OAASrB,OAEpC,GAAIzvH,KAAK8wH,SAAWrB,EAAM,CAC9B,GAAkB,MAAd5wG,EAAOjG,GACJ,OAAO5Y,KAAKuxH,UAAU1yG,EAAQjG,GADX5Y,KAAK8wH,OAAShC,EAAO9uH,KAAKspF,QAAQqlC,EAAM,MAAO3uH,KAAKmf,QAAU,IAK9FhB,EAAMmrE,QAAU,SAAUn7D,EAAO9uB,KAIjC8e,EAAMyzG,WAAa,SAAUzjG,EAAO9uB,GAClCW,KAAK8wH,OAAS/B,EACd/uH,KAAK42E,QAAQ,IAAIp2E,MAAM,cAAgB4nF,EAAOkpC,OAAOnjG,IAAU9uB,EAAS,IAAM+M,KAAKC,UAAUhN,GAAS,IAAO,IAAM,aAAe+oF,EAAOkpC,OAAOtxH,KAAKyiC,UAEvJtkB,EAAM1Y,KAAO,WACXzF,KAAK+mF,MAAMthF,KAAK,CAACpG,MAAOW,KAAKX,MAAO8B,IAAKnB,KAAKmB,IAAK2vB,KAAM9wB,KAAK8wB,QAEhE3S,EAAMqE,IAAM,WACV,IAAInjB,EAAQW,KAAKX,MACbkrE,EAASvqE,KAAK+mF,MAAMvkE,MACxBxiB,KAAKX,MAAQkrE,EAAOlrE,MACpBW,KAAKmB,IAAMopE,EAAOppE,IAClBnB,KAAK8wB,KAAOy5C,EAAOz5C,KACnB9wB,KAAKgM,KAAK3M,GACLW,KAAK8wB,OAAQ9wB,KAAKyiC,MAAQytF,IAEjC/xG,EAAMnS,KAAO,SAAU3M,GACjBW,KAAK8wB,OAAQ9wB,KAAKyiC,MAAQ+rF,GAC9BxuH,KAAK6oF,QAAQxpF,IAEf8e,EAAM0qE,QAAU,SAAUxpF,KAG1B8e,EAAMmrE,QAAU,SAAUn7D,EAAO9uB,GAC/B,GAAGW,KAAKyiC,QAAUytF,EAChB,GAAG/hG,IAAUygG,GAAUzgG,IAAU0gG,GAAU1gG,IAAUsgG,GAAQtgG,IAAUugG,GAASvgG,IAAUwgG,EACpF3uH,KAAKX,QACPW,KAAKX,MAAMW,KAAKmB,KAAO9B,GAEzBW,KAAKgM,KAAK3M,QACN,GAAG8uB,IAAUggG,EACjBnuH,KAAKyF,OACDzF,KAAKX,MACPW,KAAKX,MAAQW,KAAKX,MAAMW,KAAKmB,KAAO,GAEpCnB,KAAKX,MAAQ,GAEfW,KAAKmB,SAAMW,EACX9B,KAAKyiC,MAAQ0tF,EACbnwH,KAAK8wB,KAAOs/F,OACR,GAAGjiG,IAAUkgG,EACjBruH,KAAKyF,OACDzF,KAAKX,MACPW,KAAKX,MAAQW,KAAKX,MAAMW,KAAKmB,KAAO,GAEpCnB,KAAKX,MAAQ,GAEfW,KAAKmB,IAAM,EACXnB,KAAK8wB,KAAOu/F,EACZrwH,KAAKyiC,MAAQytF,OACT,GAAG/hG,IAAUigG,EAAY,CAC7B,GAAIpuH,KAAK8wB,OAASs/F,EAGhB,OAAOpwH,KAAK4xH,WAAWzjG,EAAO9uB,GAF9BW,KAAKwiB,UAIH,IAAG2L,IAAUmgG,EAOjB,OAAOtuH,KAAK4xH,WAAWzjG,EAAO9uB,GAN9B,GAAIW,KAAK8wB,OAASu/F,EAGhB,OAAOrwH,KAAK4xH,WAAWzjG,EAAO9uB,GAF9BW,KAAKwiB,WAOL,GAAGxiB,KAAKyiC,QAAU0tF,EACtB,GAAIhiG,IAAUygG,EACZ5uH,KAAKmB,IAAM9B,EACXW,KAAKyiC,MAAQ8rF,MACR,IAAIpgG,IAAUigG,EAGnB,OAAOpuH,KAAK4xH,WAAWzjG,EAAO9uB,GAF9BW,KAAKwiB,WAIH,GAAGxiB,KAAKyiC,QAAU8rF,EAAM,CAC5B,GAAIpgG,IAAUogG,EACP,OAAOvuH,KAAK4xH,WAAWzjG,EAAO9uB,GADdW,KAAKyiC,MAAQytF,MAEhC,IAAGlwH,KAAKyiC,QAAU+rF,EAWtB,OAAOxuH,KAAK4xH,WAAWzjG,EAAO9uB,GAV9B,GAAI8uB,IAAUqgG,EACRxuH,KAAK8wB,OAASu/F,GAASrwH,KAAKmB,MAAOnB,KAAKyiC,MAAQytF,GAC3ClwH,KAAK8wB,OAASs/F,IAAUpwH,KAAKyiC,MAAQ0tF,OAEzC,MAAIhiG,IAAUmgG,GAAiBtuH,KAAK8wB,OAASu/F,GAASliG,IAAUigG,GAAepuH,KAAK8wB,OAASs/F,GAGlG,OAAOpwH,KAAK4xH,WAAWzjG,EAAO9uB,GAF9BW,KAAKwiB,SASX4lE,EAAOvsD,EAAIA,EAEXmwC,EAAO5sE,QAAUgpF,gCCzZjB,MAAMonL,EAAU,EAAQ,MAElBz/C,EAAM7iN,OAAO,OACbuiQ,EAASviQ,OAAO,UAChBwiQ,EAAoBxiQ,OAAO,oBAC3ByiQ,EAAcziQ,OAAO,cACrB0iQ,EAAU1iQ,OAAO,UACjB2iQ,EAAU3iQ,OAAO,WACjB4iQ,EAAoB5iQ,OAAO,kBAC3B6iQ,EAAW7iQ,OAAO,WAClB8iQ,EAAQ9iQ,OAAO,SACf+iQ,EAAoB/iQ,OAAO,kBAE3BgjQ,EAAc,IAAM,EAkPpB7tQ,EAAM,CAAC8Y,EAAMha,EAAKgvQ,KACtB,MAAMlrQ,EAAOkW,EAAK60P,GAAO3tQ,IAAIlB,GAC7B,GAAI8D,EAAM,CACR,MAAMmrQ,EAAMnrQ,EAAK5F,MACjB,GAAIgxQ,EAAQl1P,EAAMi1P,IAEhB,GADAn7D,EAAI95L,EAAMlW,IACLkW,EAAKw0P,GACR,YAEEQ,IACEh1P,EAAK80P,KACPhrQ,EAAK5F,MAAMgQ,IAAM7G,KAAK6G,OACxB8L,EAAK40P,GAAUO,YAAYrrQ,IAG/B,OAAOmrQ,EAAI/wQ,QAITgxQ,EAAU,CAACl1P,EAAMi1P,KACrB,IAAKA,IAASA,EAAIG,SAAWp1P,EAAKy0P,GAChC,OAAO,EAET,MAAM90F,EAAOtyK,KAAK6G,MAAQ+gQ,EAAI/gQ,IAC9B,OAAO+gQ,EAAIG,OAASz1F,EAAOs1F,EAAIG,OAC3Bp1P,EAAKy0P,IAAa90F,EAAO3/J,EAAKy0P,IAG9BvrM,EAAOlpD,IACX,GAAIA,EAAKs0P,GAAUt0P,EAAK40M,GACtB,IAAK,IAAIygD,EAASr1P,EAAK40P,GAAUxwJ,KAC/BpkG,EAAKs0P,GAAUt0P,EAAK40M,IAAmB,OAAXygD,GAAkB,CAI9C,MAAM3zJ,EAAO2zJ,EAAO3zJ,KACpBo4F,EAAI95L,EAAMq1P,GACVA,EAAS3zJ,IAKTo4F,EAAM,CAAC95L,EAAMlW,KACjB,GAAIA,EAAM,CACR,MAAMmrQ,EAAMnrQ,EAAK5F,MACb8b,EAAK00P,IACP10P,EAAK00P,GAASO,EAAIjvQ,IAAKivQ,EAAI/wQ,OAE7B8b,EAAKs0P,IAAWW,EAAIrqQ,OACpBoV,EAAK60P,GAAOnsQ,OAAOusQ,EAAIjvQ,KACvBga,EAAK40P,GAAUU,WAAWxrQ,KAI9B,MAAMyrQ,EACJjxQ,YAAa0B,EAAK9B,EAAO0G,EAAQsJ,EAAKkhQ,GACpCvwQ,KAAKmB,IAAMA,EACXnB,KAAKX,MAAQA,EACbW,KAAK+F,OAASA,EACd/F,KAAKqP,IAAMA,EACXrP,KAAKuwQ,OAASA,GAAU,GAI5B,MAAMI,EAAc,CAACx1P,EAAMnO,EAAI/H,EAAM2rQ,KACnC,IAAIR,EAAMnrQ,EAAK5F,MACXgxQ,EAAQl1P,EAAMi1P,KAChBn7D,EAAI95L,EAAMlW,GACLkW,EAAKw0P,KACRS,OAAMtuQ,IAENsuQ,GACFpjQ,EAAGtK,KAAKkuQ,EAAOR,EAAI/wQ,MAAO+wQ,EAAIjvQ,IAAKga,IAGvC6wD,EAAO5sE,QAnTP,MACEK,YAAa4R,GAOX,GANuB,iBAAZA,IACTA,EAAU,CAAE69B,IAAK79B,IAEdA,IACHA,EAAU,IAERA,EAAQ69B,MAA+B,iBAAhB79B,EAAQ69B,KAAoB79B,EAAQ69B,IAAM,GACnE,MAAM,IAAIhuB,UAAU,qCAEVlhB,KAAK+vN,GAAO1+M,EAAQ69B,KAAO4jD,EAAAA,EAAvC,MAEM+9K,EAAKx/P,EAAQtL,QAAUmqQ,EAG7B,GAFAlwQ,KAAK0vQ,GAAoC,mBAAPmB,EAAqBX,EAAcW,EACrE7wQ,KAAK2vQ,GAAet+P,EAAQy/P,QAAS,EACjCz/P,EAAQk/P,QAAoC,iBAAnBl/P,EAAQk/P,OACnC,MAAM,IAAIrvP,UAAU,2BACtBlhB,KAAK4vQ,GAAWv+P,EAAQk/P,QAAU,EAClCvwQ,KAAK6vQ,GAAWx+P,EAAQ0/P,QACxB/wQ,KAAK8vQ,GAAqBz+P,EAAQ2/P,iBAAkB,EACpDhxQ,KAAKiwQ,GAAqB5+P,EAAQ4/P,iBAAkB,EACpDjxQ,KAAKy3B,QAIHyX,QAAKgiO,GACP,GAAkB,iBAAPA,GAAmBA,EAAK,EACjC,MAAM,IAAIhwP,UAAU,qCAEtBlhB,KAAK+vN,GAAOmhD,GAAMp+K,EAAAA,EAClBzuB,EAAKrkE,MAEHkvC,UACF,OAAOlvC,KAAK+vN,GAGVohD,eAAYA,GACdnxQ,KAAK2vQ,KAAiBwB,EAEpBA,iBACF,OAAOnxQ,KAAK2vQ,GAGVY,WAAQa,GACV,GAAkB,iBAAPA,EACT,MAAM,IAAIlwP,UAAU,wCAEtBlhB,KAAK4vQ,GAAWwB,EAChB/sM,EAAKrkE,MAEHuwQ,aACF,OAAOvwQ,KAAK4vQ,GAIVyB,qBAAkBC,GACF,mBAAPA,IACTA,EAAKpB,GAEHoB,IAAOtxQ,KAAK0vQ,KACd1vQ,KAAK0vQ,GAAqB4B,EAC1BtxQ,KAAKyvQ,GAAU,EACfzvQ,KAAK+vQ,GAAU7uQ,SAAQkvQ,IACrBA,EAAIrqQ,OAAS/F,KAAK0vQ,GAAmBU,EAAI/wQ,MAAO+wQ,EAAIjvQ,KACpDnB,KAAKyvQ,IAAWW,EAAIrqQ,WAGxBs+D,EAAKrkE,MAEHqxQ,uBAAsB,OAAOrxQ,KAAK0vQ,GAElC3pQ,aAAY,OAAO/F,KAAKyvQ,GACxB8B,gBAAe,OAAOvxQ,KAAK+vQ,GAAUhqQ,OAEzCyrQ,SAAUxkQ,EAAI4jQ,GACZA,EAAQA,GAAS5wQ,KACjB,IAAK,IAAIwwQ,EAASxwQ,KAAK+vQ,GAAUxwJ,KAAiB,OAAXixJ,GAAkB,CACvD,MAAM3zJ,EAAO2zJ,EAAO3zJ,KACpB8zJ,EAAY3wQ,KAAMgN,EAAIwjQ,EAAQI,GAC9BJ,EAAS3zJ,GAIb37G,QAAS8L,EAAI4jQ,GACXA,EAAQA,GAAS5wQ,KACjB,IAAK,IAAIwwQ,EAASxwQ,KAAK+vQ,GAAUruJ,KAAiB,OAAX8uJ,GAAkB,CACvD,MAAM/5N,EAAO+5N,EAAO/5N,KACpBk6N,EAAY3wQ,KAAMgN,EAAIwjQ,EAAQI,GAC9BJ,EAAS/5N,GAIb7pC,OACE,OAAO5M,KAAK+vQ,GAAUpmQ,UAAU3D,KAAIpE,GAAKA,EAAET,MAG7C4L,SACE,OAAO/M,KAAK+vQ,GAAUpmQ,UAAU3D,KAAIpE,GAAKA,EAAEvC,QAG7Co4B,QACMz3B,KAAK6vQ,IACL7vQ,KAAK+vQ,IACL/vQ,KAAK+vQ,GAAUhqQ,QACjB/F,KAAK+vQ,GAAU7uQ,SAAQkvQ,GAAOpwQ,KAAK6vQ,GAASO,EAAIjvQ,IAAKivQ,EAAI/wQ,SAG3DW,KAAKgwQ,GAAS,IAAInrQ,IAClB7E,KAAK+vQ,GAAY,IAAIP,EACrBxvQ,KAAKyvQ,GAAU,EAGjB7rN,OACE,OAAO5jD,KAAK+vQ,GAAU/pQ,KAAIoqQ,IACxBC,EAAQrwQ,KAAMowQ,IAAe,CAC3BxuQ,EAAGwuQ,EAAIjvQ,IACPw5B,EAAGy1O,EAAI/wQ,MACPovB,EAAG2hP,EAAI/gQ,KAAO+gQ,EAAIG,QAAU,MAC3B5mQ,UAAU2D,QAAO0sB,GAAKA,IAG7By3O,UACE,OAAOzxQ,KAAK+vQ,GAGdxqQ,IAAKpE,EAAK9B,EAAOkxQ,GAGf,IAFAA,EAASA,GAAUvwQ,KAAK4vQ,KAEQ,iBAAXW,EACnB,MAAM,IAAIrvP,UAAU,2BAEtB,MAAM7R,EAAMkhQ,EAAS/nQ,KAAK6G,MAAQ,EAC5BqU,EAAM1jB,KAAK0vQ,GAAmBrwQ,EAAO8B,GAE3C,GAAInB,KAAKgwQ,GAAO9nQ,IAAI/G,GAAM,CACxB,GAAIuiB,EAAM1jB,KAAK+vN,GAEb,OADA9a,EAAIj1M,KAAMA,KAAKgwQ,GAAO3tQ,IAAIlB,KACnB,EAGT,MACMs9I,EADOz+I,KAAKgwQ,GAAO3tQ,IAAIlB,GACX9B,MAgBlB,OAZIW,KAAK6vQ,KACF7vQ,KAAK8vQ,IACR9vQ,KAAK6vQ,GAAS1uQ,EAAKs9I,EAAKp/I,QAG5Bo/I,EAAKpvI,IAAMA,EACXovI,EAAK8xH,OAASA,EACd9xH,EAAKp/I,MAAQA,EACbW,KAAKyvQ,IAAW/rP,EAAM+6H,EAAK14I,OAC3B04I,EAAK14I,OAAS2d,EACd1jB,KAAKqC,IAAIlB,GACTkjE,EAAKrkE,OACE,EAGT,MAAMowQ,EAAM,IAAIM,EAAMvvQ,EAAK9B,EAAOqkB,EAAKrU,EAAKkhQ,GAG5C,OAAIH,EAAIrqQ,OAAS/F,KAAK+vN,IAChB/vN,KAAK6vQ,IACP7vQ,KAAK6vQ,GAAS1uQ,EAAK9B,IAEd,IAGTW,KAAKyvQ,IAAWW,EAAIrqQ,OACpB/F,KAAK+vQ,GAAUv2N,QAAQ42N,GACvBpwQ,KAAKgwQ,GAAOzqQ,IAAIpE,EAAKnB,KAAK+vQ,GAAUruJ,MACpCr9C,EAAKrkE,OACE,GAGTkI,IAAK/G,GACH,IAAKnB,KAAKgwQ,GAAO9nQ,IAAI/G,GAAM,OAAO,EAClC,MAAMivQ,EAAMpwQ,KAAKgwQ,GAAO3tQ,IAAIlB,GAAK9B,MACjC,OAAQgxQ,EAAQrwQ,KAAMowQ,GAGxB/tQ,IAAKlB,GACH,OAAOkB,EAAIrC,KAAMmB,GAAK,GAGxBygH,KAAMzgH,GACJ,OAAOkB,EAAIrC,KAAMmB,GAAK,GAGxBqhB,MACE,MAAMvd,EAAOjF,KAAK+vQ,GAAUxwJ,KAC5B,OAAKt6G,GAGLgwM,EAAIj1M,KAAMiF,GACHA,EAAK5F,OAHH,KAMX41M,IAAK9zM,GACH8zM,EAAIj1M,KAAMA,KAAKgwQ,GAAO3tQ,IAAIlB,IAG5BulC,KAAMxmB,GAEJlgB,KAAKy3B,QAEL,MAAMpoB,EAAM7G,KAAK6G,MAEjB,IAAK,IAAIgoB,EAAInX,EAAIna,OAAS,EAAGsxB,GAAK,EAAGA,IAAK,CACxC,MAAM+4O,EAAMlwP,EAAImX,GACVq6O,EAAYtB,EAAI3hP,GAAK,EAC3B,GAAkB,IAAdijP,EAEF1xQ,KAAKuF,IAAI6qQ,EAAIxuQ,EAAGwuQ,EAAIz1O,OACjB,CACH,MAAM41O,EAASmB,EAAYriQ,EAEvBkhQ,EAAS,GACXvwQ,KAAKuF,IAAI6qQ,EAAIxuQ,EAAGwuQ,EAAIz1O,EAAG41O,KAM/BoB,QACE3xQ,KAAKgwQ,GAAO9uQ,SAAQ,CAAC7B,EAAO8B,IAAQkB,EAAIrC,KAAMmB,GAAK,2CC7PvD,IAAIK,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAA+ClD,GACpEkD,EAAa,EAAQ,OAAqDlD,GAC1EkD,EAAa,EAAQ,OAAoDlD,GACzEkD,EAAa,EAAQ,OAAkDlD,GACvEkD,EAAa,EAAQ,OAAiDlD,GACtEkD,EAAa,EAAQ,OAA6BlD,GAClDkD,EAAa,EAAQ,OAAqBlD,GAC1CkD,EAAa,EAAQ,OAAyBlD,GAC9CkD,EAAa,EAAQ,OAA6BlD,GAClDkD,EAAa,EAAQ,OAAelD,+BCpBpCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,gCCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,gCCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,kCCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8gM,wBAAqB,EAC7B,MAAMv1L,EAAW,EAAQ,OACnBinQ,EAAgB,EAAQ,OACxBC,EAA+B,EAAQ,OACvCC,EAA8B,EAAQ,OACtCC,EAA4B,EAAQ,OACpCC,EAA2B,EAAQ,OACnClrC,EAAS,EAAQ,OACjBmrC,EAAyB,EAAQ,MAIvC,MAAM/xE,UAA2Bv1L,EAAS41H,UACtC9gI,YAAY4R,GACR1R,MAAM,CAAEgiI,oBAAoB,IAE5B3hI,KAAKkyQ,eAAiB,GACtBlyQ,KAAKmyQ,gBAAkB,GAEvBnyQ,KAAKoyQ,sBAAuB,EAC5BpyQ,KAAKqyQ,sBAAwB,GAC7BryQ,KAAKsyQ,8BAAgC,GAErCtyQ,KAAKuyQ,+BAAiC,GACtClhQ,EAAUA,GAAW,GACrBrR,KAAKqR,QAAUA,EACfrR,KAAK6mK,KAAO,IAAIigE,EAAOt1N,KAAKH,EAAQ1E,YAAa0E,EAAQ/I,SACzDtI,KAAKq0H,aAAehjH,EAAQgjH,cAAgBr0H,KAAK6mK,KAAKl6J,YAAY0nH,eAClEr0H,KAAKigM,kBAAoB5uL,EAAQ4uL,kBACjCjgM,KAAKwyQ,cAAgBnhQ,EAAQmhQ,eAAiBP,EAC9CjyQ,KAAKwoF,OAASxoF,KAAKyyQ,mBAAmBphQ,EAAQ2uL,SAOlDiO,OAAOxlH,GACH,MAAM/kF,EAAS,IAAIiH,EAAS21H,YAAY,CAAEqB,oBAAoB,IAC9Dl5C,EAAOj9E,GAAG,SAAUO,GAAU2hF,EAAO1hF,KAAK,QAASD,KACnD08E,EAAOj9E,GAAG,QAAStC,GAASxF,EAAO+B,KAAKyD,KACxCu/E,EAAOj9E,GAAG,OAAO,IAAM9H,EAAO+B,KAAK,QACnC,MAAMioF,EAAShqF,EAAOupH,KAAK,IAAIizE,EAAmBlgM,KAAKqR,UACvD,OAAOq8E,EAEX8/B,WAAW9kC,EAAO2C,EAAUr9E,GACxBhO,KAAKwoF,OAAO/tE,MAAMiuE,GAClB16E,IAEJ+4H,OAAO/4H,GACHhO,KAAKwoF,OAAOoC,MACZ58E,IAOJ0kQ,aAAanoM,GACT,IAAIooM,EAAa3yQ,KAAKkyQ,eAAensQ,QAAUwkE,EAAS,EAAI,GAC5D,KAAOooM,EAAa,IAAM3yQ,KAAKkyQ,eAAeS,IAC1CA,IAEJ,OAAO3yQ,KAAKkyQ,eAAeS,GAK/BC,WACI,OAAO5yQ,KAAKkyQ,eAAensQ,OAE/Bi8L,UAAU9+L,EAAM++L,GACZ,IAAKjiM,KAAKoyQ,qBAAsB,CAE5B,GAAI,OAAQnwE,EAAY,CACpB,MAAMp/J,EAAKo/J,EAAWp/J,GACtB7iC,KAAKuyQ,+BAA+B1vO,GAAM,CACtCiF,OAAQ,GACR+4G,QAAS,EACTuoH,IAAK,IAIb,IAAK,MAAMvqP,KAAU3f,OAAO6N,OAAO/M,KAAKuyQ,gCACpC1zP,EAAOgiI,UACPhiI,EAAOipB,OAAOriC,KAAK,CAAEU,KAAM,OAAQjD,KAAAA,EAAM++L,WAAAA,IAQjD,IAAI4wE,EACJ,GAJA7yQ,KAAKmyQ,gBAAgB1sQ,UAAK3D,GAItB,cAAemgM,EAAY,CAE3B,IAAIv7L,EACJ,GAAI1G,KAAK8yQ,uCACLpsQ,EAAU1G,KAAK8yQ,6CAEd,CACDpsQ,EAAU,WAAYu7L,GAAcjiM,KAAK6mK,KAAKksG,cAAc9wE,EAAW+wE,SACnEhzQ,KAAK6mK,KAAKl6J,YAAYqnH,YAE1B,IAAK,MAAMn1G,KAAU3f,OAAO6N,OAAO/M,KAAKuyQ,gCACpC1zP,EAAOuqP,IAAI3jQ,KAAKiB,GAGxBmsQ,EAAY,CAAEnsQ,QAAAA,GAEV1G,KAAKoyQ,uBACLS,EAAUI,eAAgB,GAG9B,MAAMC,EAAkBlzQ,KAAK0yQ,eACzBQ,GAAmBA,EAAgBvX,QACnCkX,EAAUlX,MAAQuX,EAAgBvX,OAGtC37P,KAAKkyQ,eAAezsQ,KAAKotQ,QAIzBA,EAAY7yQ,KAAK0yQ,eAGjB1yQ,KAAKkyQ,eAAezsQ,UAAK3D,GAG7B,GAAI+wQ,EAAW,CAEX,GAAI,aAAc5wE,EACd,IAAK,MAAM97L,KAAQnG,KAAK6mK,KAAKssG,gBAAgBlxE,EAAWmxE,SAAUP,GAAW,GAEpEA,EAAUlX,QAEXkX,EAAUlX,MAAQ37P,KAAK6mK,KAAKwsG,YAAYltQ,EAAK9G,MAAOW,KAAKwyQ,gBAGxDK,EAAUI,eACXjzQ,KAAKszQ,WAAWT,EAAUnsQ,QAAS1G,KAAK6mK,KAAKl6J,YAAYmnH,UAAU,GAAGgzG,EAAOt1N,KAAKwiJ,WAAY7tJ,GAY1G,GAPI,SAAU87L,IACV4wE,EAAU7qQ,SAAWi6L,EAAW/9I,MAEhC,aAAc+9I,IACd4wE,EAAU7qQ,SAAWi6L,EAAW,aAGhC,cAAeA,IAEVjiM,KAAKoyQ,sBAAwB,YAAanwE,EAC3C,IAAK,MAAMvsH,KAAausH,EAAWsxE,QAAQzyP,MAAM,QACvC40D,KAAa11E,KAAKqyQ,wBACpBryQ,KAAKqyQ,sBAAsB38L,GAAa,IAE5C11E,KAAKqyQ,sBAAsB38L,GAAWjwE,KAAKotQ,GAC3C7yQ,KAAKwzQ,oBAAoB99L,EAAWm9L,GAMhD,aAAc5wE,GACdjiM,KAAKyzQ,qBAAqBxxE,EAAWyxE,UAAU,EAAOb,EAAW3vQ,EAAM++L,GAIvE,qBAAsBA,GACtBjiM,KAAKyzQ,qBAAqBxxE,EAAW,qBAAqB,EAAM4wE,EAAW3vQ,EAAM++L,GAGzFC,OAAOh5L,GAEH,IAAKlJ,KAAKoyQ,qBACN,IAAK,MAAMvzP,KAAU3f,OAAO6N,OAAO/M,KAAKuyQ,gCACpC1zP,EAAOipB,OAAOriC,KAAK,CAAEU,KAAM,OAAQ+C,KAAAA,IAI3C,IAAK,MAAMyqQ,KAAc3zQ,KAAKmyQ,gBACtBwB,GACAA,EAAWluQ,KAAKyD,GAI5Bu4L,aAEI,IAAKzhM,KAAKoyQ,qBACN,IAAK,MAAO18L,EAAW72D,KAAW3f,OAAO+B,QAAQjB,KAAKuyQ,gCAClD1zP,EAAOgiI,UACPhiI,EAAOipB,OAAOriC,KAAK,CAAEU,KAAM,UAEJ,IAAnB0Y,EAAOgiI,UACP7gJ,KAAKsyQ,8BAA8B58L,GAAa72D,SACzC7e,KAAKuyQ,+BAA+B78L,GAE3C11E,KAAKwzQ,oBAAoB99L,IAKrC,MAAMm9L,EAAY7yQ,KAAK0yQ,cAAa,GACpC,GAAIG,EAAW,CACX,MAAMx/J,EAAQrzG,KAAK4yQ,WACnB,GAAIC,EAAUn0E,YAAcrrF,KAASw/J,EAAUn0E,WAC3C,IAAK,MAAOk1E,EAAcl1E,KAAex/L,OAAO+B,QAAQ4xQ,EAAUn0E,WAAWrrF,IAAS,CAGlF,MAAMzsG,EAAS5G,KAAK6mK,KAAKgtG,cAAc7zQ,KAAKmyQ,gBAAgB9+J,GAAO7yF,KAAK,IAAKqyP,GAC7E7yQ,KAAK8zQ,qBAAqBjB,EAAWn0E,EAAY93L,EAAyB,YAAjBgtQ,UAClDf,EAAUn0E,WAAWrrF,GAAOugK,IAK/C5zQ,KAAKkyQ,eAAe1vP,MACpBxiB,KAAKmyQ,gBAAgB3vP,MAEzB49K,SAOAqyE,iBAAiBzyE,GACb,OAAO,IAAI4xE,EAAcxpL,OAAO,CAC5Bs6G,WAAY,KACR,IACI1iM,KAAKyhM,aACDzhM,KAAKigM,mBACLjgM,KAAKigM,kBAAkBwB,aAG/B,MAAO11L,GACH/L,KAAKgM,KAAK,QAASD,KAG3Bk0H,MAAO,KACH,IACIjgI,KAAKogM,QACDpgM,KAAKigM,mBACLjgM,KAAKigM,kBAAkBG,QAG/B,MAAOr0L,GACH/L,KAAKgM,KAAK,QAASD,KAG3B62L,UAAW,CAAC1/L,EAAM++L,KACd,IACIjiM,KAAKgiM,UAAU9+L,EAAM++L,GACjBjiM,KAAKigM,mBACLjgM,KAAKigM,kBAAkB+B,UAAU9+L,EAAM++L,GAG/C,MAAOl2L,GACH/L,KAAKgM,KAAK,QAASD,KAG3B82L,OAAS35L,IACL,IACIlJ,KAAKkiM,OAAOh5L,GACRlJ,KAAKigM,mBACLjgM,KAAKigM,kBAAkBiC,OAAOh5L,GAGtC,MAAO6C,GACH/L,KAAKgM,KAAK,QAASD,MAG5B,CACC+2L,gBAAgB,EAChBC,sBAAsB,EACtB/C,QAAAA,IAWRyzE,qBAAqBM,EAAe/mK,EAAS6lK,EAAW1zC,EAAS60C,GAC7D,MAAMd,EAAkBlzQ,KAAK0yQ,cAAa,GAC1C,GAAIQ,EAAiB,CAEjB,MAAM7/J,EAAQrzG,KAAK4yQ,WACbl0E,EAAa1+L,KAAK6mK,KAAKssG,gBAAgBY,EAAeb,GAAiB,GACxEA,EAAgBx0E,aACjBw0E,EAAgBx0E,WAAa,IAE5Bw0E,EAAgBx0E,WAAWrrF,KAC5B6/J,EAAgBx0E,WAAWrrF,GAAS,IAExC,MAAM4gK,EAAgBjnK,EAAU,UAAY,UAC5CkmK,EAAgBx0E,WAAWrrF,GAAO4gK,GAAiBv1E,EAEnD,IAAK,MAAMw1E,KAA2Bl0Q,KAAK6mK,KAAKstG,2BAA2BJ,EAAeb,EAAiBlzQ,KAAKwyQ,eAC5G9zE,EAAWj5L,KAAKyuQ,GAIpB,GAAIrB,GAAa,cAAemB,EAC5Bh0Q,KAAK8zQ,qBAAqBZ,EAAiBx0E,EAAYm0E,EAAUnsQ,QAASsmG,UAEnEkmK,EAAgBx0E,WAAWrrF,GAAO4gK,QAGzC,IAAK,MAAM/rL,KAAWg4G,EAAmBk0E,uBACrC,GAAIlsL,EAAQ3J,UAAU4gJ,EAAS60C,GAAgB,CAC3C,MAAMptQ,EAASshF,EAAQmsL,UAAUL,EAAeh0Q,KAAK6mK,KAAMqsG,GAC3DlzQ,KAAK8zQ,qBAAqBZ,EAAiBx0E,EAAY93L,EAAQomG,UAExDkmK,EAAgBx0E,WAAWrrF,GAAO4gK,GAKjDf,EAAgBx0E,WAAWrrF,GAAO4gK,KAClCj0Q,KAAKmyQ,gBAAgB9+J,GAAS,KAW1CygK,qBAAqBjB,EAAWn0E,EAAY93L,EAAQomG,GAChD,IAAK6lK,EAAUI,cACX,IAAK,MAAMtsQ,KAAa+3L,EAChB1xF,EAEwB,YAApBpmG,EAAOE,UACP9G,KAAKszQ,WAAW1sQ,EAAQD,EAAWksQ,EAAUnsQ,SAIjD1G,KAAKszQ,WAAWT,EAAUnsQ,QAASC,EAAWC,GAW9D0sQ,WAAW5sQ,EAASC,EAAWC,GAC3B5G,KAAKyF,KAAKzF,KAAK6mK,KAAKl6J,YAAYnG,KAAKE,EAASC,EAAWC,EAAQ5G,KAAKq0H,eAO1Em/I,oBAAoB99L,EAAW4+L,GAC3B,MAAM/hL,EAAQvyF,KAAKsyQ,8BAA8B58L,GACjD,GAAI6c,EAAO,CAEP,IAAIgiL,EACJ,GAAID,EAAiB,CACjBC,EAAuB,CAACD,GAGxB,MAAME,EAAuBx0Q,KAAKqyQ,sBAAsB38L,GAAW59D,QAAQw8P,GAC3Et0Q,KAAKqyQ,sBAAsB38L,GAAW39D,OAAOy8P,EAAsB,QAGnED,EAAuBv0Q,KAAKqyQ,sBAAsB38L,UAE3C11E,KAAKqyQ,sBAAsB38L,GAEtC,GAAI6+L,EAAsB,CAEtB,MAAME,EAAoBz0Q,KAAKkyQ,eACzBwC,EAAqB10Q,KAAKmyQ,gBAChCnyQ,KAAKoyQ,sBAAuB,EAE5B,IAAK,MAAMS,KAAa0B,EAAsB,CAC1Cv0Q,KAAKkyQ,eAAiB,CAACW,GACvB7yQ,KAAKmyQ,gBAAkB,MAACrwQ,GACxB,MAAM6yQ,EAAapiL,EAAM62K,IAAI/lP,QAC7BrjB,KAAK8yQ,uCAAyC,IAAM6B,EAAWx6N,QAC/D,IAAK,MAAMyrF,KAASrzC,EAAMzqD,OACtB,OAAQ89F,EAAMz/H,MACV,IAAK,OACDnG,KAAKgiM,UAAUp8D,EAAM1iI,KAAM0iI,EAAMq8D,YACjC,MACJ,IAAK,OACDjiM,KAAKkiM,OAAOt8D,EAAM18H,MAClB,MACJ,IAAK,QACDlJ,KAAKyhM,cAMrBzhM,KAAK8yQ,4CAAyChxQ,EAC9C9B,KAAKkyQ,eAAiBuC,EACtBz0Q,KAAKmyQ,gBAAkBuC,EACvB10Q,KAAKoyQ,sBAAuB,KAK5ChzQ,EAAQ8gM,mBAAqBA,EAC7BA,EAAmBk0E,uBAAyB,CACxC,IAAIvC,EAA6B+C,2BACjC,IAAI5C,EAAyB6C,uBAAuB,IAAK,QACzD,IAAI7C,EAAyB6C,uBAAuB,OAAQ,QAC5D,IAAI7C,EAAyB6C,uBAAuB,QAAS,OAC7D,IAAI7C,EAAyB6C,uBAAuB,QAAS,OAC7D,IAAI7C,EAAyB6C,uBAAuB,SAAU,OAC9D,IAAI7C,EAAyB6C,uBAAuB,MAAO,OAC3D,IAAI7C,EAAyB6C,uBAAuB,OAAQ,QAC5D,IAAI7C,EAAyB6C,uBAAuB,SAAU,QAC9D,IAAI7C,EAAyB6C,uBAAuB,SAAU,OAC9D,IAAI7C,EAAyB6C,uBAAuB,QAAS,OAC7D,IAAI7C,EAAyB6C,uBAAuB,QAAS,OAC7D,IAAI/C,EAA4BgD,0BAA0B,OAAQ,SAClE,IAAIhD,EAA4BgD,0BAA0B,QAAS,SACnE,IAAI/C,EAA0BgD,uDClblC71Q,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoS,UAAO,EACf,MAAMrD,EAAqB,EAAQ,OAC7B6wK,EAA6B,EAAQ,OAI3C,MAAMxtK,EACF/R,YAAYkN,EAAarE,GACrBtI,KAAK2M,YAAcA,GAAe,IAAIwB,EAAmBE,YACzDrO,KAAKsI,QAAUA,GAAW,GAO9B8B,kBAAkB26E,GACd,OAAOvzE,EAAK8qP,UAAUnkP,KAAK4sE,GAY/BouL,gBAAgB/6I,EAAOy6I,EAAWmC,GAC9B,OAAO58I,EAAMt3G,MAAM,QACdxT,QAAO8D,KAAUA,IACjBpL,KAAIm4L,IACL,IAAK3sL,EAAK0kP,WAAW/3D,GAAW,CAC5B,IAAK62E,EACD,OAEJ72E,EAAW,GAAG00E,EAAUlX,OAAS,GAAG37P,KAAKsI,aAAa61L,IAE1D,OAAOn+L,KAAK2M,YAAYmnH,UAAUqqE,MAEjC7wL,QAAO8D,KAAUA,IAQ1B+iQ,2BAA2B/7I,EAAOy6I,EAAWL,GAEzC,MAAM77O,EAAQyhG,EAAMt3G,MAAM,QAC1B,GAAI6V,EAAM7d,SAAS,kBAAoB6d,EAAM7d,SAAS,sBAClD,MAAO,CAAC9Y,KAAK2M,YAAYmnH,UAAU,GAAGtiH,EAAKwiJ,YAG/C,GAAI6+G,EAAUlX,OAASkX,EAAUlX,SAAS6W,GAAiBA,EAAcK,EAAUlX,OAAOsZ,WAAY,CAClG,IAAIv2E,EAAa,GACjB,IAAK,MAAOP,EAAU+2E,KAAeh2Q,OAChC+B,QAAQuxQ,EAAcK,EAAUlX,OAAOsZ,YACpCt+O,EAAM7d,SAASqlL,KACfO,EAAaA,EAAWjgL,OAAOvf,OAAO6N,OAAOmoQ,GAAYlvQ,KAAI++E,GAAO/kF,KAAK2M,YAAYmnH,UAAU/uC,OAGvG,OAAO25G,EAEX,MAAO,GAOXq0E,cAAchuL,GACV,IAAKvzE,EAAK0kP,WAAWnxK,GACjB,IACIA,EAAMi6F,EAA2B/zK,QAAQ85E,EAAK/kF,KAAKsI,SAEvD,MAAO2Y,GACH,OAGR,OAAOjhB,KAAK2M,YAAYmnH,UAAU/uC,GAQtC8uL,cAAc5/I,EAASkhJ,GACnB,OAAOn1Q,KAAK2M,YAAYsnH,QAAQA,EAASkhJ,EAAUntQ,UAQvDqrQ,YAAY+B,EAAS5C,GACjB,IAAI7W,EAEJ,IAAK,MAAM0Z,KAAa7C,EACpB,GAAI4C,EAAQ9tP,WAAW+tP,GAAY,CAC/B1Z,EAAQ0Z,EAEH1Z,EAAMj7K,SAAS,OAChBi7K,GAAS,KAEb,MAIR,IAAKA,EAAO,CACR,MAAM2Z,EAAUF,EAAQt9P,QAAQ,KAE5B6jP,EADA2Z,EAAU,EACFF,EAAQ/xP,MAAM,EAAGiyP,EAAU,GAG3Bt2F,EAA2B/zK,QAAQ,IAAKmqQ,GAGxD,OAAOzZ,GAGfv8P,EAAQoS,KAAOA,EACfA,EAAKwiJ,IAAM,8CACXxiJ,EAAKyiJ,IAAM,oCACXziJ,EAAK+jQ,KAAO,6BACZ/jQ,EAAK8qP,UAAY,8EClIjBp9P,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,gCCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQw1Q,gCAA6B,EAYrCx1Q,EAAQw1Q,2BARR,MACIr2L,UAAU4gJ,EAASl9B,GACf,MAAO,YAAaA,EAExBoyE,UAAUpyE,EAAYp7B,EAAMgsG,GACxB,OAAOhsG,EAAKgtG,cAAc5xE,EAAWt+D,QAASkvI,mCCVtD3zQ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ01Q,+BAA4B,EACpC,MAAMhuC,EAAS,EAAQ,OAwBvB1nO,EAAQ01Q,0BApBR,MACIr1Q,YAAY0/N,EAASq2C,GACjBx1Q,KAAKm/N,QAAUA,EACfn/N,KAAKw1Q,cAAgBA,EAEzBj3L,UAAU4gJ,EAASl9B,GACf,OAAOjiM,KAAKm/N,UAAYA,GAAWn/N,KAAKw1Q,iBAAiBvzE,EAE7DoyE,UAAUpyE,EAAYp7B,EAAMgsG,GACxB,MAAMxzQ,EAAQ4iM,EAAWjiM,KAAKw1Q,eAC9B,IAAI7gJ,EAOJ,OANKtxH,OAAOu9D,MAAMv9D,OAAO2e,SAAS3iB,EAAO,MAASA,EAAMyZ,SAAS,KAGvDzV,OAAOu9D,MAAMv9D,OAAOowB,WAAWp0B,MACrCs1H,EAAW,GAAGmyG,EAAOt1N,KAAKyiJ,aAH1Bt/B,EAAW,GAAGmyG,EAAOt1N,KAAKyiJ,aAKvB4S,EAAKl6J,YAAYsnH,QAAQ50H,EAAOs1H,GAAYkyC,EAAKl6J,YAAYmnH,UAAUa,oCCvBtFz1H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ21Q,6BAA0B,EAClC,MAAMjuC,EAAS,EAAQ,OAIvB,MAAMiuC,EACFx2L,UAAU4gJ,EAASl9B,GACf,MAAmB,SAAZk9B,GAAsB,aAAcl9B,EAE/CoyE,UAAUpyE,EAAYp7B,EAAMgsG,GACxB,MAAMxzQ,EAAQ4iM,EAAW9tL,SACzB,IAAIwgH,EACJ,IAAK,MAAMpiH,KAASwiQ,EAAwBU,aACxC,GAAIljQ,EAAMw0J,MAAMvzI,KAAKn0B,GAAQ,CACzBs1H,EAAWkyC,EAAKl6J,YAAYmnH,UAAUgzG,EAAOt1N,KAAKyiJ,IAAM1hJ,EAAMpM,MAC9D,MAGR,OAAO0gK,EAAKl6J,YAAYsnH,QAAQ50H,EAAOs1H,IAG/Cv1H,EAAQ21Q,wBAA0BA,EAClCA,EAAwBU,aAAe,CACnC,CACI1uG,MAAO,8DACP5gK,KAAM,YAEV,CACI4gK,MAAO,wDACP5gK,KAAM,YAEV,CAAE4gK,MAAO,qBAAsB5gK,KAAM,QACrC,CAAE4gK,MAAO,0CAA2C5gK,KAAM,QAC1D,CAAE4gK,MAAO,cAAe5gK,KAAM,cAC9B,CAAE4gK,MAAO,SAAU5gK,KAAM,wCCnC7BjH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQy1Q,4BAAyB,EACjC,MAAM71F,EAA6B,EAAQ,OAgB3C5/K,EAAQy1Q,uBAZR,MACIp1Q,YAAY0/N,EAASq2C,GACjBx1Q,KAAKm/N,QAAUA,EACfn/N,KAAKw1Q,cAAgBA,EAEzBj3L,UAAU4gJ,EAASl9B,GACf,OAAOjiM,KAAKm/N,UAAYA,GAAWn/N,KAAKw1Q,iBAAiBvzE,EAE7DoyE,UAAUpyE,EAAYp7B,EAAMgsG,GACxB,OAAOhsG,EAAKl6J,YAAYmnH,UAAUkrD,EAA2B/zK,QAAQg3L,EAAWjiM,KAAKw1Q,eAAgB3uG,EAAKv+J,uBCdlH,SAASg4F,EAAOvT,EAAKzqE,GACnB,IAAKyqE,EACH,MAAM,IAAIvsF,MAAM8hB,GAAO,oBAJ3B0pD,EAAO5sE,QAAUkhG,EAOjBA,EAAO7E,MAAQ,SAAqBpkE,EAAGF,EAAG7U,GACxC,GAAI+U,GAAKF,EACP,MAAM,IAAI32B,MAAM8hB,GAAQ,qBAAuB+U,EAAI,OAASF,ifCThE,MAAM68H,EAAO,8CACTC,EAAO,oCACPyhH,EAAO,kCAEX,GACEC,IAAK,CACHrhD,QAAS,GAAGrgE,WACZuE,QAAS,GAAGvE,WACZ2hH,OAAS,GAAG3hH,UACZ4hH,QAAS,GAAG5hH,WACZ7oE,OAAS,GAAG6oE,WAEd44D,IAAK,CACH1mN,KAAY,GAAG6tJ,QACfu8E,IAAY,GAAGv8E,OACftqE,MAAY,GAAGsqE,SACfjhI,KAAY,GAAGihI,QACf8hH,WAAY,GAAG9hH,eAEjB44D,IAAK,CACHmpD,OAAQ,wCAEV5+O,EAAG,CACD6+O,QAAS,GAAGN,iBACZO,OAAS,GAAGP,iBAEd9sQ,IAAK,CACHstQ,QAAS,GAAGR,2DCvBhB,MAAM,IAAEC,GAAQ,EAGV9gH,EAAiB,mDACjBzR,EAAqB,CACzB,KAAM,KAAM,IAAK,IAAK,IAAK,IAC3B,EAAK,KAAM,EAAK,KAAM,EAAK,KAAM,EAAK,KAAM,EAAK,KACjD,EAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEzC+yH,EAAkB,6BAElBC,EAAkB,CACtBC,MAAM,EACNC,eAAe,EACfC,qBAAqB,EACrBC,WAAW,EACXC,QAAQ,EACRj1H,UAAU,EACVk1H,UAAU,EACVC,aAAa,EACbC,YAAY,GAERC,EAAgB,MAGP,MAAMC,EACnBr3Q,YAAY4R,GAwBV,GArBArR,KAAKq2Q,KAAO,oCACZr2Q,KAAKs2Q,cAAgB,0CACrBt2Q,KAAKu2Q,oBAAsB,2BAC3Bv2Q,KAAK+2Q,wBAA0B,2BAC/B/2Q,KAAKw2Q,UAAY,4CACjBx2Q,KAAK8gC,QAAU,6XACf9gC,KAAKg3Q,UAAY,qjCACjBh3Q,KAAKi3Q,UAAY,gZACjBj3Q,KAAKy2Q,OAAS,+ZACdz2Q,KAAKk3Q,QAAU,kFACfl3Q,KAAKm3Q,SAAW,4CAChBn3Q,KAAKo3Q,SAAW,uBAChBp3Q,KAAKq3Q,eAAiB,oCACtBr3Q,KAAKs3Q,iBAAmB,4BACxBt3Q,KAAKwhJ,SAAW,4CAChBxhJ,KAAK02Q,SAAW,cAChB12Q,KAAK22Q,YAAc,UACnB32Q,KAAK42Q,WAAa,mBAClBvlQ,EAAUA,GAAW,GAGjBrR,KAAKu3Q,YAAclmQ,EAAQmmQ,SAAU,CACvCx3Q,KAAKy3Q,SAAU,EAEf,IAAK,MAAMt2Q,KAAOnB,OACVmB,KAAOi1Q,IAAoBp2Q,KAAKmB,aAAgB+4C,SACpDl6C,KAAKmB,GAAO01Q,QAKhB72Q,KAAKy3Q,SAAyB,IAAfpmQ,EAAQ2zN,GAGzBhlO,KAAK03Q,YAAcrmQ,EAAQsmQ,SAE3B33Q,KAAK43Q,mBAAqB,EAM5BC,eAAe7pQ,EAAU8pQ,GAEvB,IAAIt0Q,EAAQxD,KAAK01J,OACbqiH,EAAoBv0Q,EAAMuC,OAC9B,OAAa,CAEX,IAAIiyQ,EAAiBC,EACrB,KAAOD,EAAkBh4Q,KAAKwhJ,SAAShuH,KAAKhwB,IAEtCxD,KAAK03Q,YAAcO,EAAUj4Q,KAAK02Q,SAASljP,KAAKwkP,EAAgB,MAClExnB,EAAU,UAAWynB,EAAQ,GAAI,GAAIj4Q,KAAK48O,MAAOo7B,EAAgB,GAAGjyQ,QAEtEvC,EAAQA,EAAMye,OAAO+1P,EAAgB,GAAGjyQ,OAAQvC,EAAMuC,QACtDgyQ,EAAoBv0Q,EAAMuC,OAC1B/F,KAAK48O,QAOP,IAJKo7B,IAAoBA,EAAkBh4Q,KAAK22Q,YAAYnjP,KAAKhwB,MAC/DA,EAAQA,EAAMye,OAAO+1P,EAAgB,GAAGjyQ,OAAQvC,EAAMuC,SAGpD/F,KAAK42Q,WAAWz+P,KAAK3U,GASvB,OAPIs0Q,IAEE93Q,KAAK03Q,YAAcO,EAAUj4Q,KAAK02Q,SAASljP,KAAKhwB,KAClDgtP,EAAU,UAAWynB,EAAQ,GAAI,GAAIj4Q,KAAK48O,MAAOp5O,EAAMuC,QACzDvC,EAAQ,KACRgtP,EAAU,MAAO,GAAI,GAAIxwP,KAAK48O,MAAO,IAEhC58O,KAAK01J,OAASlyJ,EAIvB,MAAMg0F,EAAOx3F,KAAK48O,MAAOs7B,EAAY10Q,EAAM,GAC3C,IAAI2C,EAAO,GAAI9G,EAAQ,GAAIshC,EAAS,GAChC7X,EAAQ,KAAMqvP,EAAc,EAAGC,GAAe,EAClD,OAAQF,GACR,IAAK,IAEH,GAAI10Q,EAAMuC,OAAS,EACjB,MAEG,GAAiB,MAAbvC,EAAM,GAUV,CACCxD,KAAKy3Q,UACPU,EAAc,EACdhyQ,EAAO,KAET,MAXA,GAHAnG,KAAKq4Q,gBAAkB,KAEvB70Q,EAAQA,EAAMye,OAAO,GACJ,MAAbze,EAAM,GAAY,CACpB40Q,GAAe,EACf,MAYN,IAAK,IAEH,GAAItvP,EAAQ9oB,KAAKs2Q,cAAc9iP,KAAKhwB,GAClC2C,EAAO,MAAO9G,EAAQypB,EAAM,QAEzB,GAAIA,EAAQ9oB,KAAKq2Q,KAAK7iP,KAAKhwB,GAAQ,CAEtC,GADAnE,EAAQW,KAAKs4Q,UAAUxvP,EAAM,IACf,OAAVzpB,GAAkB82Q,EAAgBh+P,KAAK9Y,GACzC,OAAOk5Q,EAAkBv4Q,MAC3BmG,EAAO,WAGA3C,EAAMuC,OAAS,GAAkB,MAAbvC,EAAM,IACjC2C,EAAO,KAAMgyQ,EAAc,GAEpBn4Q,KAAKy3Q,SAAWj0Q,EAAMuC,OAAS,GAAkB,MAAbvC,EAAM,KACjD2C,EAAO,UAAWgyQ,EAAc,EAAG94Q,EAAQ,KAC7C,MAEF,IAAK,IACCmE,EAAMuC,OAAS,GAAkB,MAAbvC,EAAM,KAC5B2C,EAAO,KAAMgyQ,EAAc,GAC7B,MAEF,IAAK,MAIErvP,EAAQ9oB,KAAKy2Q,OAAOjjP,KAAKhwB,KAC1Bs0Q,IAAkBhvP,EAAQ9oB,KAAKy2Q,OAAOjjP,KAAK,GAAGhwB,UAChD2C,EAAO,QAASw6B,EAAS,IAAKthC,EAAQypB,EAAM,IAC9C,MAEF,IAAK,IAEH,GAAIA,EAAQ9oB,KAAKu2Q,oBAAoB/iP,KAAKhwB,GACxCnE,EAAQypB,EAAM,QAId,KADGzpB,MAAAA,EAAO84Q,YAAAA,GAAgBn4Q,KAAKw4Q,cAAch1Q,IAC/B,OAAVnE,EACF,OAAOk5Q,EAAkBv4Q,MAEf,OAAV8oB,GAAkC,IAAhBqvP,IACpBhyQ,EAAO,UACPnG,KAAK43Q,mBAAqB,GAE5B,MAEF,IAAK,IACH,IAAK53Q,KAAKu3Q,UAAW,CAEnB,GAAIzuP,EAAQ9oB,KAAK+2Q,wBAAwBvjP,KAAKhwB,GAC5CnE,EAAQypB,EAAM,QAId,KADGzpB,MAAAA,EAAO84Q,YAAAA,GAAgBn4Q,KAAKw4Q,cAAch1Q,IAC/B,OAAVnE,EACF,OAAOk5Q,EAAkBv4Q,MAEf,OAAV8oB,GAAkC,IAAhBqvP,IACpBhyQ,EAAO,UACPnG,KAAK43Q,mBAAqB,GAG9B,MAEF,IAAK,IAEC53Q,KAAKy3Q,UAAY3uP,EAAQ9oB,KAAKi3Q,UAAUzjP,KAAKhwB,MAC/C2C,EAAO,MAAO9G,EAAQypB,EAAM,IAC9B,MAEF,IAAK,IAE0B,YAAzB9oB,KAAKq4Q,kBAAkCvvP,EAAQ9oB,KAAKw2Q,UAAUhjP,KAAKhwB,KACrE2C,EAAO,WAAY9G,EAAQypB,EAAM,KAE1BA,EAAQ9oB,KAAKo3Q,SAAS5jP,KAAKhwB,MAClC2C,EAAO2iB,EAAM,IACf,MAEF,IAAK,IAEH,GAAqB,IAAjBtlB,EAAMuC,OAAe+xQ,EAAiBt0Q,EAAM,GAAK,KAAOA,EAAM,GAAK,IAAM,CAC3E2C,EAAO,IACPgyQ,EAAc,EACd,MAIJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAICrvP,EAAQ9oB,KAAKk3Q,QAAQ1jP,KAAKhwB,IAC1Bs0Q,IAAkBhvP,EAAQ9oB,KAAKk3Q,QAAQ1jP,KAAK,GAAGhwB,UACjD2C,EAAO,UAAW9G,EAAQypB,EAAM,GAChC6X,EAA8B,iBAAb7X,EAAM,GAAkB6sP,EAAIC,OACd,iBAAb9sP,EAAM,GAAkB6sP,EAAIrhD,QAAUqhD,EAAIE,SAE9D,MAEF,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAEC/sP,EAAQ9oB,KAAKq3Q,eAAe7jP,KAAKhwB,IACnC2C,EAAO2iB,EAAM,GAAGnO,cAEhBy9P,GAAe,EACjB,MAEF,IAAK,IACL,IAAK,KAECtvP,EAAQ9oB,KAAKm3Q,SAAS3jP,KAAKhwB,KAC7B2C,EAAO,UAAW9G,EAAQypB,EAAM,GAAI6X,EAASg1O,EAAIn9G,SAEjD4/G,GAAe,EACjB,MAEF,IAAK,KAECtvP,EAAQ9oB,KAAKs3Q,iBAAiB9jP,KAAKhwB,KACrC2C,EAAO,eAAgB9G,EAAQ,KAE/B+4Q,GAAe,EACjB,MAEF,IAAK,IAECp4Q,KAAKy3Q,SAAWj0Q,EAAMuC,OAAS,IACjCI,EAAO,eACU,MAAb3C,EAAM,IACR20Q,EAAc,EAAG94Q,EAAQ,MAEzB84Q,EAAc,EAAG94Q,EAAQ,MAE7B,MAEF,IAAK,IACH,IAAKW,KAAKy3Q,QACR,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACEz3Q,KAAKu3Q,YACRY,EAAc,EACdhyQ,EAAO+xQ,GAET,MAEF,QACEE,GAAe,EAkBjB,GAdIA,IAE4B,YAAzBp4Q,KAAKq4Q,iBAA0D,WAAzBr4Q,KAAKq4Q,mBAC3CvvP,EAAQ9oB,KAAK8gC,QAAQtN,KAAKhwB,MAKrBslB,EAAQ9oB,KAAKg3Q,UAAUxjP,KAAKhwB,KAC7Bs0Q,IAAkBhvP,EAAQ9oB,KAAKg3Q,UAAUxjP,KAAK,GAAGhwB,UACxD2C,EAAO,WAAYw6B,EAAS7X,EAAM,IAAM,GAAIzpB,EAAQW,KAAKs4Q,UAAUxvP,EAAM,MANzE3iB,EAAO,SAAU9G,EAAQypB,EAAM,IAAM,KAUZ,OAAzB9oB,KAAKq4Q,gBACP,OAAQlyQ,GACR,IAAK,WAAYA,EAAO,OAAW,MACnC,IAAK,MAAYA,EAAO,UAAW,MACnC,QAAiBA,EAAO,GAK1B,IAAKA,EAIH,OAAI2xQ,IAAmB,YAAY3/P,KAAK3U,IAAU,QAAQ2U,KAAK3U,GACtD+0Q,EAAkBv4Q,MAElBA,KAAK01J,OAASlyJ,EAIzB,MAAMuC,EAASoyQ,GAAervP,EAAM,GAAG/iB,OACjCooB,EAAQqiO,EAAUrqP,EAAM9G,EAAOshC,EAAQ62D,EAAMzxF,GACnD/F,KAAKy4Q,cAAgBtqP,EACrBnuB,KAAKq4Q,gBAAkBlyQ,EAGvB3C,EAAQA,EAAMye,OAAOlc,EAAQvC,EAAMuC,QAIrC,SAASyqP,EAAUrqP,EAAM9G,EAAOshC,EAAQ62D,EAAMzxF,GAC5C,MAAM2iC,EAAQllC,EAAQu0Q,EAAoBv0Q,EAAMuC,OAASgyQ,EAEnD5pP,EAAQ,CAAEhoB,KAAAA,EAAM9G,MAAAA,EAAOshC,OAAAA,EAAQ62D,KAAAA,EAAM9uD,MAAAA,EAAOkiD,IADtCliD,EAAQ3iC,GAGpB,OADAiI,EAAS,KAAMmgB,GACRA,EAGT,SAASoqP,EAAkBp9P,GAAQnN,EAASmN,EAAK2gO,aAAa,OAAOtoN,KAAKhwB,GAAO,MAInF80Q,UAAU75H,GACR,IAAIi6H,GAAU,EACd,MAAMC,EAAWl6H,EAAKh+H,QAAQo0I,GAAgB,CAACG,EAAUC,EAAUC,EAAUC,KAE3E,GAAwB,iBAAbF,EACT,OAAO90I,OAAOC,aAAa/c,OAAO2e,SAASizI,EAAU,KAEvD,GAAwB,iBAAbC,EAAuB,CAChC,IAAIE,EAAW/xJ,OAAO2e,SAASkzI,EAAU,IACzC,OAAOE,GAAY,MAASj1I,OAAOC,aAAa/c,OAAO2e,SAASkzI,EAAU,KACxE/0I,OAAOC,aAAa,QAAWg1I,GAAY,QAAY,IAAK,OAAqB,KAAXA,IAG1E,OAAID,KAAe/R,EACVA,EAAmB+R,IAE5BujH,GAAU,EACH,OAET,OAAOA,EAAU,KAAOC,EAI1BH,cAAch1Q,GAEZ,GAAIA,EAAMuC,QAAU,EAAG,CAErB,MAAM6yQ,EAAUp1Q,EAAMslB,MAAM,qBAAqB,GAC3C+vP,EAAgBD,EAAQ7yQ,OAG9B,IAAI+yQ,EAAav5P,KAAK2vB,IAAIlvC,KAAK43Q,mBAAoBiB,GACnD,MAAQC,EAAat1Q,EAAMsU,QAAQ8gQ,EAASE,IAAe,GAAG,CAE5D,IAAIC,EAAiB,EACrB,KAAkD,OAA3Cv1Q,EAAMs1Q,EAAaC,EAAiB,IACzCA,IAIF,GAAIA,EAAiB,GAAM,EAAG,CAE5B,MAAMtqQ,EAAMjL,EAAMyzB,UAAU4hP,EAAeC,GACrC/iH,EAAQtnJ,EAAIqS,MAAM,cAAc/a,OAAS,EACzCoyQ,EAAcW,EAAaD,EAEjC,GAAsB,IAAlBA,GAAiC,IAAV9iH,GACL,IAAlB8iH,GAAuB74Q,KAAKu3Q,UAC9B,MAEF,OADAv3Q,KAAK48O,OAAS7mF,EACP,CAAE12J,MAAOW,KAAKs4Q,UAAU7pQ,GAAM0pQ,YAAAA,GAEvCW,IAEF94Q,KAAK43Q,mBAAqBp0Q,EAAMuC,OAAS8yQ,EAAgB,EAE3D,MAAO,CAAEx5Q,MAAO,GAAI84Q,YAAa,GAInCr8B,aAAak9B,GACXh5Q,KAAK01J,OAAS,KACd,MAAMxqI,EAAM,IAAI1qB,MAAM,eAAew4Q,cAAkBh5Q,KAAK48O,UAM5D,OALA1xN,EAAI/qB,QAAU,CACZguB,WAAOrsB,EACP01F,KAAMx3F,KAAK48O,MACX67B,cAAez4Q,KAAKy4Q,eAEfvtP,EAIT+tP,iBAAiBz1Q,GACf,OAAOA,EAAM8jB,WAAW,UAAY9jB,EAAMye,OAAO,GAAKze,EAOxD01Q,SAAS11Q,EAAOwK,GAId,GAHAhO,KAAK48O,MAAQ,EAGQ,iBAAVp5O,EAAoB,CAG7B,GAFAxD,KAAK01J,OAAS11J,KAAKi5Q,iBAAiBz1Q,GAEZ,mBAAbwK,EAGN,CACH,MAAM4wE,EAAS,GACf,IAAI7yE,EAEJ,GADA/L,KAAK63Q,gBAAe,CAACppP,EAAG2I,IAAM3I,EAAK1iB,EAAQ0iB,EAAKmwD,EAAOn5E,KAAK2xB,KAAI,GAC5DrrB,EAAO,MAAMA,EACjB,OAAO6yE,EAPP,KAAe,IAAM5+E,KAAK63Q,eAAe7pQ,GAAU,UAYrDhO,KAAKm5Q,eAAiB,KACW,mBAAtB31Q,EAAMkgI,aACflgI,EAAMkgI,YAAY,QAEpBlgI,EAAMgI,GAAG,QAAQtC,IACK,OAAhBlJ,KAAK01J,QAAmC,IAAhBxsJ,EAAKnD,SAE3B/F,KAAKm5Q,iBACPjwQ,EAAOo3D,EAAO7hD,OAAO,CAACze,KAAKm5Q,eAAgBjwQ,IAC3ClJ,KAAKm5Q,eAAiB,MAGI,IAAxBjwQ,EAAKA,EAAKnD,OAAS,GACrB/F,KAAKm5Q,eAAiBjwQ,QAKK,IAAhBlJ,KAAK01J,OACd11J,KAAK01J,OAAS11J,KAAKi5Q,iBAAiC,iBAAT/vQ,EAAoBA,EAAOA,EAAK2E,YAE3E7N,KAAK01J,QAAUxsJ,EACjBlJ,KAAK63Q,eAAe7pQ,GAAU,QAKpCxK,EAAMgI,GAAG,OAAO,KACa,iBAAhBxL,KAAK01J,QACd11J,KAAK63Q,eAAe7pQ,GAAU,MAElCxK,EAAMgI,GAAG,QAASwC,ICjfjB,SAASorQ,EAAYhoQ,GAC1B,QAASA,GAA0B,cAAlBA,EAAKtK,SAIjB,SAASuyQ,EAAYjoQ,GAC1B,QAASA,GAA0B,cAAlBA,EAAKtK,SAIjB,SAASm5P,EAAU7uP,GACxB,QAASA,GAA0B,YAAlBA,EAAKtK,SAIjB,SAASy2I,EAAWnsI,GACzB,QAASA,GAA0B,aAAlBA,EAAKtK,SAIjB,SAASwyQ,EAAeloQ,GAC7B,QAASA,GAA0B,iBAAlBA,EAAKtK,SAIjB,SAASyyQ,EAAe/yQ,GAC7B,OAAO8yQ,EAAe9yQ,EAAKK,OAItB,SAAS85B,EAAOokD,EAAKnzE,GAC1B,OAAO8lI,EAAS,CAAE,GAAI3yD,EAAI1lF,OAAS0lF,GAAOnzE,EAAnC8lI,CAA4C,IAI9C,SAASA,EAAS8hI,EAAiB5nQ,GAExC,MAAM8lI,EAAWx4I,OAAOuC,OAAO,MAC/B,IAAK,MAAMk/B,KAAU64O,EACnBC,EAAc94O,EAAQ64O,EAAgB74O,IAMxC,SAAS84O,EAAc94O,EAAQokD,GAE7B,GAAmB,iBAARA,EAAkB,CAE3B,MAAMkoB,EAAQ/tG,OAAOuC,OAAO,MAC5Bi2I,EAAS/2G,GAAU46I,GACVtuE,EAAMsuE,KAAWtuE,EAAMsuE,GAAS3pK,EAAQkiH,UAAU/uC,EAAMw2F,SAG9D,KAAM56I,KAAU+2G,GACnB,MAAM,IAAIl3I,MAAM,mBAAmBmgC,KAErC,OAAO+2G,EAAS/2G,GAElB,OAlBA/uB,EAAUA,GAAW8nQ,EAkBdD,EC3DT,MAAM,IAAE5sD,EAAK8oD,IAAG,GAAK,EAGrB,IAAIgE,EACAC,EAAoB,EAExB,MAAMC,EAAiB,uBACjBC,EAAS,0HAGTzrQ,EAAc,CAClBylH,UAwTF,SAAmB/uC,GACjB,OAAO,IAAIgvC,EAAUhvC,IAxTrBivC,UA4TF,SAAmB9wH,GACjB,OAAO,IAAIkwH,EAAUlwH,GAAQ,MAAM02Q,MA5TnCrzQ,SA8VF,SAAkBrD,GAChB,OAAO,IAAIkxH,EAASlxH,IA9VpB+wH,QA+TF,SAAiB50H,EAAO06Q,GAEtB,GAAkC,iBAAvBA,EACT,OAAO,IAAI5lJ,EAAQ,IAAI90H,MAAU06Q,EAAmBrmP,iBAGtD,IAAIihG,EAAWolJ,EAAqBA,EAAmB16Q,MAAQ,GAkB/D,MAjBiB,KAAbs1H,IAEmB,kBAAVt1H,EACTs1H,EAAW,EAAI6jC,QAES,iBAAVn5J,IACVgE,OAAO0+D,SAAS1iE,GAClBs1H,EAAWtxH,OAAOihD,UAAUjlD,GAAS,EAAIw2Q,QAAU,EAAID,QAEvDjhJ,EAAW,EAAIihJ,OACVvyQ,OAAOu9D,MAAMvhE,KAChBA,EAAQA,EAAQ,EAAI,MAAQ,WAMf,KAAbs1H,GAAmBA,IAAa,EAAIvpC,OAC1C,IAAI+oC,EAAQ,IAAI90H,MAChB,IAAI80H,EAAQ,IAAI90H,OAAWs1H,MAxV7BN,aAiWF,WACE,OAAOslJ,GAjWPnzQ,KAAAA,EACAs3I,OAAQt3I,GAEV,IAGO,MAAMwzQ,EACXv6Q,YAAYojC,GACV7iC,KAAK6iC,GAAKA,EAIRxjC,YACF,OAAOW,KAAK6iC,GAIdz1B,OAAOC,GAGL,OAAIA,aAAiB2sQ,EACZh6Q,KAAK6iC,KAAOx1B,EAAMw1B,KAElBx1B,GAASrN,KAAK8G,WAAauG,EAAMvG,UACxB9G,KAAKX,QAAagO,EAAMhO,MAK5CsvG,WACE,OAAO,EAIT3sC,SACE,MAAO,CACLl7D,SAAU9G,KAAK8G,SACfzH,MAAUW,KAAKX,QAOd,MAAM00H,UAAkBimJ,EAEzBlzQ,eACF,MAAO,aAKJ,MAAMqtH,UAAgB6lJ,EAEvBlzQ,eACF,MAAO,UAILzH,YACF,OAAOW,KAAK6iC,GAAG5L,UAAU,EAAGj3B,KAAK6iC,GAAG/I,YAAY,MAI9C9xB,eAEF,MAAM66B,EAAK7iC,KAAK6iC,GAChB,IAAIo3O,EAAQp3O,EAAG/I,YAAY,KAAO,EAElC,OAAOmgP,EAAQp3O,EAAG98B,QAA0B,MAAhB88B,EAAGo3O,KAAmBp3O,EAAG5gB,OAAOg4P,GAAOvmP,cAAgB,GAIjFihG,eACF,OAAO,IAAIZ,EAAU/zH,KAAKk6Q,gBAIxBA,qBAEF,MAAMr3O,EAAK7iC,KAAK6iC,GAAIs3O,EAAQt3O,EAAG/I,YAAY,KAAO,EAC5C23F,EAAO0oJ,EAAQt3O,EAAG98B,OAAS88B,EAAGs3O,GAAS,GAE7C,MAAgB,MAAT1oJ,EAAe5uF,EAAG5gB,OAAOk4P,EAAQ,GAEvB,MAAT1oJ,EAAe,EAAIrmC,OAASyhI,EAAIipD,WAI1C1oQ,OAAOC,GAGL,OAAIA,aAAiB8mH,EACZn0H,KAAK6iC,KAAOx1B,EAAMw1B,KAElBx1B,KAAWA,EAAMsnH,UACR30H,KAAK8G,WAAauG,EAAMvG,UACxB9G,KAAKX,QAAagO,EAAMhO,OACxBW,KAAKgI,WAAaqF,EAAMrF,UACxBhI,KAAK20H,SAASt1H,QAAUgO,EAAMsnH,SAASt1H,MAG3D2iE,SACE,MAAO,CACLl7D,SAAU9G,KAAK8G,SACfzH,MAAUW,KAAKX,MACf2I,SAAUhI,KAAKgI,SACf2sH,SAAU,CAAE7tH,SAAU,YAAazH,MAAOW,KAAKk6Q,kBAM9C,MAAM9mJ,UAAkB4mJ,EAC7Bv6Q,YAAYyD,GACVvD,MAAM,KAAKuD,KAIT4D,eACF,MAAO,YAILzH,YACF,OAAOW,KAAK6iC,GAAG5gB,OAAO,IAInB,MAAMmyG,UAAiB4lJ,EAC5Bv6Q,YAAYyD,GACVvD,MAAM,IAAIuD,KAIR4D,eACF,MAAO,WAILzH,YACF,OAAOW,KAAK6iC,GAAG5gB,OAAO,IAKnB,MAAMqyG,UAAqB0lJ,EAChCv6Q,cAEE,OADAE,MAAM,IACCg6Q,GAAgB35Q,KAIrB8G,eACF,MAAO,eAITsG,OAAOC,GAIL,OAAQrN,OAASqN,KAAaA,GAAUrN,KAAK8G,WAAauG,EAAMvG,UAS7D,SAASszQ,EAAWv3O,EAAIjxB,GAI7B,GAHAA,EAAUA,GAAWvD,GAGhBw0B,EACH,OAAOjxB,EAAQyiH,eAGjB,OAAQxxF,EAAG,IACX,IAAK,IACH,OAAOjxB,EAAQrL,SAASs8B,EAAG5gB,OAAO,IACpC,IAAK,IACH,OAAOrQ,EAAQoiH,UAAUnxF,EAAG5gB,OAAO,IACrC,IAAK,IAEH,GAAIrQ,IAAYvD,EACd,OAAO,IAAI8lH,EAAQtxF,GAErB,GAA0B,MAAtBA,EAAGA,EAAG98B,OAAS,GACjB,OAAO6L,EAAQqiH,QAAQpxF,EAAG5gB,OAAO,EAAG4gB,EAAG98B,OAAS,IAElD,MAAMs0Q,EAASx3O,EAAG/I,YAAY,IAAK+I,EAAG98B,OAAS,GAC/C,OAAO6L,EAAQqiH,QAAQpxF,EAAG5gB,OAAO,EAAGo4P,EAAS,GAClB,MAAnBx3O,EAAGw3O,EAAS,GAAax3O,EAAG5gB,OAAOo4P,EAAS,GACnBzoQ,EAAQkiH,UAAUjxF,EAAG5gB,OAAOo4P,EAAS,KACxE,IAAK,IACH,MAAM7rP,EAAasrP,EAAOtmP,KAAKqP,GAC/B,OAAOjxB,EAAQpL,KACb4zQ,EAAWE,EAAe9rP,EAAW,IAAK5c,GAC1CwoQ,EAAWE,EAAe9rP,EAAW,IAAK5c,GAC1CwoQ,EAAWE,EAAe9rP,EAAW,IAAK5c,GAC1C4c,EAAW,IAAM4rP,EAAWE,EAAe9rP,EAAW,IAAK5c,IAE/D,QACE,OAAOA,EAAQkiH,UAAUjxF,IAKtB,SAAS03O,EAASnpQ,GACvB,GAAoB,iBAATA,EACT,OAAOA,EACT,GAAIA,aAAgB4oQ,GAA0B,SAAlB5oQ,EAAKtK,SAC/B,OAAOsK,EAAKyxB,GACd,IAAKzxB,EACH,OAAOuoQ,EAAa92O,GAGtB,OAAQzxB,EAAKtK,UACb,IAAK,YAAgB,OAAOsK,EAAK/R,MACjC,IAAK,YAAgB,MAAO,KAAK+R,EAAK/R,QACtC,IAAK,WAAgB,MAAO,IAAI+R,EAAK/R,QACrC,IAAK,eAAgB,MAAO,GAC5B,IAAK,UAAgB,MAAO,IAAI+R,EAAK/R,SACnC+R,EAAKpJ,SAAW,IAAIoJ,EAAKpJ,WACtBoJ,EAAKujH,UAAYvjH,EAAKujH,SAASt1H,QAAU,EAAI+rF,OAAS,KAAKh6E,EAAKujH,SAASt1H,QAAU,KACxF,IAAK,OAGH,MAAO,KACH2zP,EAAaunB,EAASnpQ,EAAK1K,aAE3BssP,EAAaunB,EAASnpQ,EAAKzK,eAE3BqsP,EAAaunB,EAASnpQ,EAAKxK,WAE1B0yQ,EAAeloQ,EAAKvK,OAAU,GAAK,IAAI0zQ,EAASnpQ,EAAKvK,aAE5D,QAAS,MAAM,IAAIrG,MAAM,wBAAwB4Q,EAAKtK,aAxExD6yQ,EAAe,IAAIrlJ,EA8EZ,MAAME,UAAawlJ,EACxBv6Q,YAAYiH,EAASC,EAAWC,EAAQC,GACtClH,MAAM,IACNK,KAAKw6Q,SAAa9zQ,EAClB1G,KAAKy6Q,WAAa9zQ,EAClB3G,KAAK6tG,QAAajnG,EAClB5G,KAAK06Q,OAAa7zQ,GAAS8yQ,EAIzB7yQ,eACF,MAAO,OAGLJ,cACF,OAAO1G,KAAKw6Q,SAGV7zQ,gBACF,OAAO3G,KAAKy6Q,WAGV7zQ,aACF,OAAO5G,KAAK6tG,QAGVhnG,YACF,OAAO7G,KAAK06Q,OAId14M,SACE,MAAO,CACLl7D,SAAW9G,KAAK8G,SAChBJ,QAAW1G,KAAKw6Q,SAASx4M,SACzBr7D,UAAW3G,KAAKy6Q,WAAWz4M,SAC3Bp7D,OAAW5G,KAAK6tG,QAAQ7rC,SACxBn7D,MAAW7G,KAAK06Q,OAAO14M,UAK3B50D,OAAOC,GACL,QAASA,GAASrN,KAAKw6Q,SAASptQ,OAAOC,EAAM3G,UAC3B1G,KAAKy6Q,WAAWrtQ,OAAOC,EAAM1G,YAC7B3G,KAAK6tG,QAAQzgG,OAAOC,EAAMzG,SAC1B5G,KAAK06Q,OAAOttQ,OAAOC,EAAMxG,QAMxC,SAASmsP,EAAanwN,GAC3B,OAAOA,EAAGpiB,QAAQo5P,GAAgB,CAAC9+O,EAAG4/O,IAAW,IAAIA,EAAOl6P,QAAQ,KAAM,UAIrE,SAAS65P,EAAez3O,GAC7B,OAAOA,EAAGpiB,QAAQo5P,GAAgB,CAAC9+O,EAAG4/O,IAAW,IAAIA,EAAOl6P,QAAQ,MAAO,SAsD7E,SAASja,EAAKE,EAASC,EAAWC,EAAQC,GACxC,OAAO,IAAI2tH,EAAK9tH,EAASC,EAAWC,EAAQC,GCtX9C,IAAIgtH,EAAkB,EAGP,MAAM+mJ,EACnBn7Q,YAAY4R,GACVrR,KAAK66Q,cAAgB,GACrB76Q,KAAK06Q,OAAS,KAGdrpQ,EAAUA,GAAW,GACrBrR,KAAK86Q,SAASzpQ,EAAQ/I,SACtB+I,EAAQO,SAAWmpQ,EAAgB/6Q,KAAMqR,EAAQO,SAGjD,MAAM0W,EAAoC,iBAAnBjX,EAAQiX,OAClBjX,EAAQiX,OAAOQ,MAAM,QAAQ,GAAG4K,cAAgB,GACzDsnP,EAAW,SAAS7iQ,KAAKmQ,GAAS2yP,EAAS,OAAO9iQ,KAAKmQ,GACvD4yP,EAAa,SAAS/iQ,KAAKmQ,GAAS6yP,EAAW,OAAOhjQ,KAAKmQ,GAC3D8yP,EAAOp7Q,KAAKy3Q,QAAU,KAAKt/P,KAAKmQ,GAChC+yP,EAAaH,GAAcC,GACzBn7Q,KAAKs7Q,uBAAyBN,GAAYI,MAC9Cp7Q,KAAKu7Q,2BAA6Bv7Q,KAAKw7Q,gBAEzCx7Q,KAAKy7Q,iBAAmBT,GAAYC,GAAUC,GAAcE,GAE5Dp7Q,KAAK07Q,iBAA8B,KAAXpzP,GAAiB,WAAWnQ,KAAKmQ,GAErD+yP,IACFr7Q,KAAK27Q,oBAAsB52L,GAAgB,MAC7C/kF,KAAK47Q,iBAAsD,iBAA5BvqQ,EAAQwiH,gBAA+B,GAC5CxiH,EAAQwiH,gBAAgBpzG,QAAQ,UAAW,MACrEzgB,KAAKw3O,OAASnmO,EAAQyhJ,OAAS,IAAIgkH,EAAQ,CAAEU,SAAU6D,EAAYr2C,GAAIo2C,IAEvEp7Q,KAAK67Q,uBAAyBxqQ,EAAQyqQ,oBAMxC1xQ,+BACEypH,EAAkB,EAMpBinJ,SAASxyQ,GACP,GAAKA,EAIA,CAEH,MAAMg5L,EAAch5L,EAAQwP,QAAQ,KAChCwpL,GAAe,IACjBh5L,EAAUA,EAAQ2Z,OAAO,EAAGq/K,IAE9BthM,KAAK+7Q,MAAQzzQ,EACbtI,KAAKg8Q,UAAc1zQ,EAAQwP,QAAQ,KAAO,EAAIxP,EAC3BA,EAAQmY,QAAQ,oBAAqB,IACxDnY,EAAUA,EAAQwgB,MAAM,8CACxB9oB,KAAKi8Q,UAAc3zQ,EAAQ,GAC3BtI,KAAKk8Q,YAAc5zQ,EAAQ,QAd3BtI,KAAK+7Q,MAAQ,GACb/7Q,KAAKg8Q,UAAY,GAmBrBG,aAAah2Q,EAAMU,EAAOH,EAASC,EAAWC,GAC5C,MAAMw1Q,EAASp8Q,KAAKy3Q,QACpBz3Q,KAAK66Q,cAAcp1Q,KAAK,CACtBiB,QAASA,EAASC,UAAWA,EAAWC,OAAQA,EAChDC,MAAOA,EAAOV,KAAMA,EACpBwiK,UAASyzG,GAASp8Q,KAAKq8Q,kBACvBC,YAAaF,EAASp8Q,KAAKu8Q,UAAUxhP,EAAI,GACzCyhP,WAAYJ,EAASp8Q,KAAKy8Q,YAAc,OAGtCL,IAEFp8Q,KAAKq8Q,mBAAoB,EAGzBr8Q,KAAKu8Q,UAAUxhP,EAAK/6B,KAAK06Q,OAAS,GAAG16Q,KAAK06Q,OAAO73O,GAAG5gB,OAAO,MAAQ,IAEnEjiB,KAAKy8Q,YAAcv9Q,OAAOuC,OAAOzB,KAAKy8Q,cAM1CC,kBACE,MAAMv8Q,EAAUH,KAAK66Q,cAAcr4P,MAAO45P,EAASp8Q,KAAKy3Q,QACxDz3Q,KAAKw6Q,SAAar6Q,EAAQuG,QAC1B1G,KAAKy6Q,WAAat6Q,EAAQwG,UAC1B3G,KAAK6tG,QAAa1tG,EAAQyG,OAC1B5G,KAAK06Q,OAAav6Q,EAAQ0G,MAEtBu1Q,IACFp8Q,KAAKq8Q,kBAAoBl8Q,EAAQwoK,QACjC3oK,KAAKu8Q,UAAUxhP,EAAI56B,EAAQm8Q,YAC3Bt8Q,KAAKy8Q,YAAct8Q,EAAQq8Q,YAK/BG,kBAAkBxuP,GAChB,OAAQA,EAAMhoB,MAEd,IAAK,MACH,OAAoB,OAAhBnG,KAAK06Q,OACA16Q,KAAKsrC,OAAO,iBAAkBnd,WAChCnuB,KAAKu8Q,UAAUxhP,EACf/6B,KAAK6oC,UAAU,KAAM,KAAM7oC,KAAKu8Q,YAEzC,IAAK,SACHv8Q,KAAK48Q,cAAe,EACtB,IAAK,UACH,OAAO58Q,KAAK68Q,YAEd,IAAK,OACH78Q,KAAK48Q,cAAe,EACtB,IAAK,QACH,OAAO58Q,KAAK88Q,aAEd,IAAK,IACH,GAAI98Q,KAAKs7Q,qBAGP,OAFAt7Q,KAAK06Q,OAAS,GACd16Q,KAAKw6Q,SAAW,KACTx6Q,KAAK+8Q,aAEhB,IAAK,QACH,GAAI/8Q,KAAKs7Q,qBACP,OAAOt7Q,KAAKg9Q,qBAEhB,QACE,OAAOh9Q,KAAK+8Q,aAAa5uP,IAK7B8uP,YAAY9uP,EAAO+uP,GACjB,IAAI79Q,EACJ,OAAQ8uB,EAAMhoB,MAEd,IAAK,MACL,IAAK,UACH,MAAM4+E,EAAM/kF,KAAKm9Q,YAAYhvP,EAAM9uB,OACnC,GAAY,OAAR0lF,EACF,OAAO/kF,KAAKsrC,OAAO,cAAend,GACpC9uB,EAAQW,KAAKo9Q,WAAWr4L,GACxB,MAEF,IAAK,OACL,IAAK,WACH,MAAMpkD,EAAS3gC,KAAKu8Q,UAAUpuP,EAAMwS,QACpC,QAAe7+B,IAAX6+B,EACF,OAAO3gC,KAAKsrC,OAAO,qBAAqBnd,EAAMwS,WAAYxS,GAC5D9uB,EAAQW,KAAKo9Q,WAAWz8O,EAASxS,EAAM9uB,OACvC,MAEF,IAAK,QACHA,EAAQW,KAAKq9Q,WAAWr9Q,KAAKu8Q,UAAUpuP,EAAMwS,QAAUxS,EAAM9uB,OAC7D,MAEF,IAAK,MACHA,EAAQW,KAAKi3Q,UAAU9oP,EAAM9uB,MAAM4iB,OAAO,IAC1C,MAEF,QACE,OAAOjiB,KAAKsrC,OAAO,2BAA2Bnd,EAAMhoB,OAAQgoB,GAK9D,OAFK+uP,GAAcl9Q,KAAKy3Q,SAAYp4Q,EAAMwjC,MAAM7iC,KAAKy8Q,cACnDp9Q,EAAQW,KAAKy8Q,YAAYp9Q,EAAMwjC,KAC1BxjC,EAIT09Q,aAAa5uP,GAEX,OADAnuB,KAAKy6Q,WAAa,KACVtsP,EAAMhoB,MACd,IAAK,IAIH,OAFAnG,KAAKm8Q,aAAa,QAASn8Q,KAAK06Q,OACd16Q,KAAKw6Q,SAAWx6Q,KAAKq9Q,aAAc,KAAM,MACpDr9Q,KAAKs9Q,mBACd,IAAK,IAIH,OAFAt9Q,KAAKm8Q,aAAa,OAAQn8Q,KAAK06Q,OAAQ16Q,KAAK0xJ,QAAS,KAAM,MAC3D1xJ,KAAKw6Q,SAAW,KACTx6Q,KAAKu9Q,cACd,IAAK,IAEH,OAAKv9Q,KAAKy3Q,SAEVz3Q,KAAKm8Q,aAAa,UAAWn8Q,KAAK06Q,OAChB16Q,KAAK06Q,OAAS16Q,KAAKq9Q,aAAc,KAAM,MAClDr9Q,KAAK+8Q,cAHH/8Q,KAAKsrC,OAAO,mBAAoBnd,GAI3C,IAAK,IAEH,OAAOnuB,KAAKw9Q,iBAAiBrvP,GAC/B,IAAK,WACH,OAAKnuB,KAAKy3Q,SAEVz3Q,KAAKw6Q,SAAW,KAChBx6Q,KAAKy6Q,WAAaz6Q,KAAKy9Q,WACvBz9Q,KAAK09Q,YAAc19Q,KAAKq9Q,WACjBr9Q,KAAK29Q,qBAJH39Q,KAAKsrC,OAAO,wBAAyBnd,GAKhD,IAAK,UACH,OAAKnuB,KAAKy3Q,SAEVz3Q,KAAKw6Q,SAAW,KAChBx6Q,KAAKy6Q,WAAaz6Q,KAAK49Q,UACvB59Q,KAAK09Q,YAAc19Q,KAAKi3Q,UACjBj3Q,KAAK29Q,qBAJH39Q,KAAKsrC,OAAO,uBAAwBnd,GAK/C,IAAK,UACH,IAAKnuB,KAAKy3Q,QACR,OAAOz3Q,KAAKsrC,OAAO,qBAAsBnd,GAE3C,GAA4B,IAAxBA,EAAMwS,OAAO56B,OAEf,OADA/F,KAAK69Q,cAAgB1vP,EAAM9uB,MACpBW,KAAK89Q,wBAGZ99Q,KAAKw6Q,SAAWx6Q,KAAK+9Q,SAAS5vP,EAAM9uB,MAAOW,KAAKo9Q,WAAWjvP,EAAMwS,SAEnE,MACF,IAAK,KACH,OAAK3gC,KAAK07Q,kBAEV17Q,KAAKm8Q,aAAa,KAAMn8Q,KAAK06Q,OAAQ,KAAM,KAAM,MACjD16Q,KAAK06Q,OAAS,KACP16Q,KAAK+8Q,cAHH/8Q,KAAKsrC,OAAO,yBAA0Bnd,GAIjD,QAEE,QAAkDrsB,KAA7C9B,KAAKw6Q,SAAWx6Q,KAAKi9Q,YAAY9uP,IACpC,OAEF,GAAInuB,KAAKy3Q,QACP,OAAOz3Q,KAAKg+Q,eAAeh+Q,KAAKu7Q,4BAKpC,OAAOv7Q,KAAKu7Q,2BAIdC,eAAertP,GACb,MAAMhoB,EAAOgoB,EAAMhoB,KACnB,OAAQA,GACR,IAAK,UACHnG,KAAKq8Q,mBAAoB,EAC3B,IAAK,eACHr8Q,KAAKy6Q,WAAaz6Q,KAAKi+Q,cAAc9vP,EAAM9uB,OAC3C,MACF,IAAK,IACL,IAAK,IACL,IAAK,IAEH,OAAwB,OAApBW,KAAKy6Q,WACAz6Q,KAAKsrC,OAAO,cAAcnlC,IAAQgoB,IAC3CnuB,KAAKw6Q,SAAW,KACA,MAATr0Q,EAAenG,KAAKk+Q,mBAAmB/vP,GAASnuB,KAAKw9Q,iBAAiBrvP,IAC/E,IAAK,IAEH,OAA2B,OAApBnuB,KAAKy6Q,WAAsBz6Q,KAAKw7Q,eAChCx7Q,KAAKsrC,OAAO,+BAAgCnd,GACrD,IAAK,IACH,GAAInuB,KAAKy3Q,QAIP,OAFAz3Q,KAAKm8Q,aAAa,QAASn8Q,KAAK06Q,OAAQ16Q,KAAKw6Q,SAC3Bx6Q,KAAKw6Q,SAAWx6Q,KAAKq9Q,aAAc,MAC9Cr9Q,KAAKs9Q,mBAEhB,IAAK,QACH,IAAKt9Q,KAAKy3Q,QACR,OAAOz3Q,KAAKsrC,OAAO,qCAAsCnd,GAC7D,QACE,QAAoDrsB,KAA/C9B,KAAKy6Q,WAAaz6Q,KAAKi9Q,YAAY9uP,IACtC,OAGJ,OAAOnuB,KAAKm+Q,YAIdA,YAAYhwP,GACV,OAAQA,EAAMhoB,MACd,IAAK,UAEH,GAA4B,IAAxBgoB,EAAMwS,OAAO56B,OAEf,OADA/F,KAAK69Q,cAAgB1vP,EAAM9uB,MACpBW,KAAKo+Q,oBAIZp+Q,KAAK6tG,QAAU7tG,KAAK+9Q,SAAS5vP,EAAM9uB,MAAOW,KAAKo9Q,WAAWjvP,EAAMwS,SAClE,MACF,IAAK,IAIH,OAFA3gC,KAAKm8Q,aAAa,QAASn8Q,KAAK06Q,OAAQ16Q,KAAKw6Q,SAAUx6Q,KAAKy6Q,WAC1Cz6Q,KAAKw6Q,SAAWx6Q,KAAKq9Q,cAChCr9Q,KAAKs9Q,mBACd,IAAK,IAIH,OAFAt9Q,KAAKm8Q,aAAa,OAAQn8Q,KAAK06Q,OAAQ16Q,KAAKw6Q,SAAUx6Q,KAAKy6Q,WAAYz6Q,KAAK0xJ,SAC5E1xJ,KAAKw6Q,SAAW,KACTx6Q,KAAKu9Q,cACd,IAAK,IAEH,OAAKv9Q,KAAKy3Q,SAEVz3Q,KAAKm8Q,aAAa,UAAWn8Q,KAAK06Q,OAAQ16Q,KAAKw6Q,SAAUx6Q,KAAKy6Q,WAC5Cz6Q,KAAK06Q,OAAS16Q,KAAKq9Q,cAC9Br9Q,KAAK+8Q,cAHH/8Q,KAAKsrC,OAAO,mBAAoBnd,GAI3C,IAAK,KACH,OAAKnuB,KAAK07Q,kBAEV17Q,KAAKm8Q,aAAa,KAAMn8Q,KAAK06Q,OAAQ16Q,KAAKw6Q,SAAUx6Q,KAAKy6Q,WAAY,MACrEz6Q,KAAK06Q,OAAS,KACP16Q,KAAK+8Q,cAHH/8Q,KAAKsrC,OAAO,yBAA0Bnd,GAIjD,QAEE,QAAiDrsB,KAA5C9B,KAAK6tG,QAAU7tG,KAAKi9Q,YAAY9uP,IACnC,OAEF,GAAInuB,KAAKy3Q,QACP,OAAOz3Q,KAAKg+Q,eAAeh+Q,KAAKq+Q,wBAEpC,OAAOr+Q,KAAKq+Q,uBAId9C,2BAA2BptP,GACzB,MAAsB,MAAfA,EAAMhoB,KAAenG,KAAKs+Q,WAAWnwP,GAASnuB,KAAKw7Q,eAAertP,GAI3EmwP,WAAWnwP,GACT,MAAmB,MAAfA,EAAMhoB,KACDnG,KAAKsrC,OAAO,0BAA0Bnd,EAAMhoB,OAAQgoB,IAE7DnuB,KAAK06Q,OAAS16Q,KAAKw6Q,SAAUx6Q,KAAKw6Q,SAAW,KACtCx6Q,KAAK+8Q,cAIdO,mBAAmBnvP,GACjB,MAAmB,MAAfA,EAAMhoB,MACRnG,KAAKw6Q,SAAW,KACTx6Q,KAAKk+Q,mBAAmB/vP,KAG/BnuB,KAAKy6Q,WAAa,KACXz6Q,KAAKw7Q,eAAertP,IAK/B+vP,mBAAmB/vP,GACjB,GAAmB,MAAfA,EAAMhoB,KACR,OAAOnG,KAAKu+Q,0BAA0BpwP,GAGlB,OAAlBnuB,KAAKw6Q,UACPx6Q,KAAKw+Q,MAAMx+Q,KAAKw6Q,SAAUx6Q,KAAKy6Q,WAAYz6Q,KAAK6tG,QAAS7tG,KAAK06Q,QAGhE,MAAMp9J,EAA4B,OAApBt9G,KAAKy6Q,WAGnB,OAFAz6Q,KAAK08Q,kBAEgB,OAAjB18Q,KAAK6tG,QACA7tG,KAAKq+Q,uBAEe,OAApBr+Q,KAAKy6Q,WACLz6Q,KAAKm+Q,YAIL7gK,EAAQt9G,KAAKu7Q,2BAA6Bv7Q,KAAKy+Q,yBAI1DA,yBAAyBtwP,GACvB,OAAQA,EAAMhoB,MACd,IAAK,IACL,IAAK,IAGH,OADAnG,KAAKw6Q,SAAW,KACTx6Q,KAAKw9Q,iBAAiBrvP,GAC/B,QACE,OAAOnuB,KAAKw7Q,eAAertP,IAK/BovP,cAAcpvP,GACZ,IAAIswH,EAAO,KACPxvD,EAAO,KACPx4C,EAAOz2C,KAAKu9Q,cAChB,MAAMmB,EAAe1+Q,KAAKw6Q,SACtBzzL,EAAQ/mF,KAAK66Q,cACbtwM,EAASwc,EAAMA,EAAMhhF,OAAS,GAElC,OAAQooB,EAAMhoB,MACd,IAAK,IAEHnG,KAAKm8Q,aAAa,QAASn8Q,KAAK06Q,OACdzrL,EAAOjvF,KAAKq9Q,aAAcr9Q,KAAKwxJ,UAC/BxxJ,KAAKw6Q,SAAW/7H,EAAOz+I,KAAKq9Q,cAC9C5mO,EAAOz2C,KAAKs9Q,mBACZ,MACF,IAAK,IAEHt9Q,KAAKm8Q,aAAa,OAAQn8Q,KAAK06Q,OACbzrL,EAAOjvF,KAAKq9Q,aAAcr9Q,KAAKwxJ,UAAWxxJ,KAAK0xJ,SACjE1xJ,KAAKw6Q,SAAW,KAChB,MACF,IAAK,IAQH,GANAx6Q,KAAK08Q,kBAGgB,IAAjB31L,EAAMhhF,QAAiD,SAAjCghF,EAAMA,EAAMhhF,OAAS,GAAGI,MAChDnG,KAAKw+Q,MAAMx+Q,KAAKw6Q,SAAUx6Q,KAAKy6Q,WAAYz6Q,KAAK6tG,QAAS7tG,KAAK06Q,QAExC,OAApB16Q,KAAKy6Q,YAIP,GAFAhkO,EAAOz2C,KAAKw7Q,eAERx7Q,KAAKw6Q,WAAax6Q,KAAK0xJ,QACzB,OAAOj7G,OAMT,GAFAA,EAAOz2C,KAAKq+Q,uBAERr+Q,KAAK6tG,UAAY7tG,KAAK0xJ,QACxB,OAAOj7G,EAGXw4C,EAAOjvF,KAAK0xJ,QACZ,MACF,IAAK,UAEyB,IAAxBvjI,EAAMwS,OAAO56B,QACf/F,KAAK69Q,cAAgB1vP,EAAM9uB,MAC3Bo3C,EAAOz2C,KAAK2+Q,8BAIZlgI,EAAOz+I,KAAK+9Q,SAAS5vP,EAAM9uB,MAAOW,KAAKo9Q,WAAWjvP,EAAMwS,SACxD8V,EAAOz2C,KAAKq+Q,wBAEd,MACF,IAAK,IAEH,OAAKr+Q,KAAKy3Q,SAEVz3Q,KAAKm8Q,aAAa,UAAWn8Q,KAAK06Q,OAAQ16Q,KAAKw6Q,SAAUx6Q,KAAKy6Q,WAC5Cz6Q,KAAK06Q,OAAS16Q,KAAKq9Q,cAC9Br9Q,KAAK+8Q,cAHH/8Q,KAAKsrC,OAAO,mBAAoBnd,GAI3C,QACE,QAAyCrsB,KAApC28I,EAAOz+I,KAAKi9Q,YAAY9uP,IAC3B,OAoBJ,GAhBa,OAAT8gE,IACFjvF,KAAKw6Q,SAAWvrL,EAAOjvF,KAAKq9Q,cAGT,OAAjBqB,EAEuB,OAArBn0M,EAAO5jE,UACT4jE,EAAO7jE,QAAUuoF,EAEjB1kB,EAAO3jE,OAASqoF,EAIlBjvF,KAAKw+Q,MAAME,EAAc1+Q,KAAKyxJ,SAAUxiE,EAAMjvF,KAAK06Q,QAGxC,OAATj8H,EAAe,CAEjB,GAAIz+I,KAAKy3Q,UAA2B,QAAftpP,EAAMhoB,MAAiC,aAAfgoB,EAAMhoB,MAKjD,OAHAnG,KAAKm8Q,aAAa,OAAQn8Q,KAAK06Q,OAAQzrL,EAAMjvF,KAAKwxJ,UAAW/S,GAC7Dz+I,KAAKw6Q,SAAW/7H,EAAMz+I,KAAKy6Q,WAAa,KAEjCz6Q,KAAKg+Q,eAAeh+Q,KAAKu9Q,eAGlCv9Q,KAAKw+Q,MAAMvvL,EAAMjvF,KAAKwxJ,UAAW/S,EAAMz+I,KAAK06Q,QAE9C,OAAOjkO,EAIT2nO,oBAAoBjwP,GAClB,OAAOnuB,KAAK4+Q,uBAAuBzwP,GAAO,GAK5CwwP,4BAA4BxwP,GAC1B,OAAOnuB,KAAK4+Q,uBAAuBzwP,GAAO,GAI5C0wP,iBAAiB1wP,GAEf,IAAI8lG,EAAUj0H,KAAK+9Q,SAAS/9Q,KAAK69Q,eAEjC,OAAQ1vP,EAAMhoB,MAEd,IAAK,OACL,IAAK,UACH,MAAMwuH,EAAW30H,KAAKi9Q,YAAY9uP,GAClC,QAAiBrsB,IAAb6yH,EAAwB,OAC5BV,EAAUj0H,KAAK+9Q,SAAS/9Q,KAAK69Q,cAAelpJ,GAC5CxmG,EAAQ,KACR,MAEF,IAAK,WACH8lG,EAAUj0H,KAAK+9Q,SAAS/9Q,KAAK69Q,cAAe1vP,EAAM9uB,OAClD8uB,EAAQ,KAIV,MAAO,CAAEA,MAAAA,EAAO8lG,QAAAA,GAIlB6pJ,wBAAwB3vP,GAEtB,OADAnuB,KAAKw6Q,SAAWx6Q,KAAK6+Q,iBAAiB1wP,GAAO8lG,QACtCj0H,KAAKu7Q,2BAIdqD,uBAAuBzwP,EAAO2wP,GAC5B,MAAMC,EAAY/+Q,KAAK6+Q,iBAAiB1wP,GACxC,GAAK4wP,EASL,OAPA/+Q,KAAK6tG,QAAUkxK,EAAU9qJ,QAIrB6qJ,GACF9+Q,KAAKw+Q,MAAMx+Q,KAAKw6Q,SAAUx6Q,KAAKwxJ,UAAWxxJ,KAAK6tG,QAAS7tG,KAAK06Q,QAEvC,OAApBqE,EAAU5wP,MACLnuB,KAAKq+Q,wBAGZr+Q,KAAKg/Q,cAAgBh/Q,KAAKq+Q,uBACnBr+Q,KAAKg/Q,cAAcD,EAAU5wP,QAKxC8wP,iBAAiB9wP,GACf,MAAmB,MAAfA,EAAMhoB,KACDnG,KAAKw9Q,iBAAiBrvP,IAGT,OAAlBnuB,KAAKw6Q,UACPx6Q,KAAKw+Q,MAAMx+Q,KAAKw6Q,SAAUx6Q,KAAKy6Q,WAAYz6Q,KAAK6tG,QAAS7tG,KAAK06Q,QAGhE16Q,KAAK08Q,kBAGmB,OAAjB18Q,KAAK6tG,QAAmB7tG,KAAKw7Q,eAAiBx7Q,KAAKq+Q,wBAI5Db,iBAAiBrvP,GACf,IAAIsoB,EAAM5vC,EAAQ7G,KAAK06Q,OACvB,MAAMh0Q,EAAU1G,KAAKw6Q,SAAU0E,EAAmBl/Q,KAAKq8Q,kBACvD,OAAQluP,EAAMhoB,MAEd,IAAK,IACH,GAAoB,OAAhBnG,KAAK06Q,OACP,OAAO16Q,KAAKsrC,OAAO,2BAA4Bnd,GACjD,GAAInuB,KAAKy3Q,QACP,OAAOz3Q,KAAKi/Q,iBAAiB9wP,GAC/BnuB,KAAK06Q,OAAS,KAEhB,IAAK,IACH16Q,KAAKw6Q,SAAW,KAChB/jO,EAAOz2C,KAAK66Q,cAAc90Q,OAAS/F,KAAK+8Q,aAAe/8Q,KAAK28Q,kBACxDuC,IAAkBl/Q,KAAKq8Q,mBAAoB,GAC/C,MAEF,IAAK,IACH5lO,EAAOz2C,KAAKw7Q,eACZ,MAEF,IAAK,IACH/kO,EAAOz2C,KAAKm+Q,YACZ,MACF,QAEE,GAAIn+Q,KAAKy7Q,gBAAkC,OAAhBz7Q,KAAK06Q,aAAyD54Q,KAArC+E,EAAQ7G,KAAKi9Q,YAAY9uP,IAAuB,CAClGsoB,EAAOz2C,KAAKm/Q,qBACZ,MAEF,OAAOn/Q,KAAKsrC,OAAO,mCAAmCtrC,KAAK6tG,QAAQhrE,MAAO1U,GAG5E,GAAgB,OAAZznB,EAAkB,CACpB,MAAMC,EAAY3G,KAAKy6Q,WAAY7zQ,EAAS5G,KAAK6tG,QAC5CqxK,EAGHl/Q,KAAKw+Q,MAAM53Q,EAASD,EAAWD,EAASG,GAFxC7G,KAAKw+Q,MAAM93Q,EAASC,EAAWC,EAASC,GAI5C,OAAO4vC,EAIT8nO,0BAA0BpwP,GACxB,IAAIsoB,EACJ,OAAQtoB,EAAMhoB,MAEd,IAAK,IACHswC,EAAOz2C,KAAKw7Q,eACZ,MAEF,IAAK,IACH/kO,EAAOz2C,KAAKm+Q,YACZ,MACF,QACE,OAAOn+Q,KAAKsrC,OAAO,mCAAmCtrC,KAAK6tG,QAAQhrE,MAAO1U,GAI5E,OADAnuB,KAAKw+Q,MAAMx+Q,KAAKw6Q,SAAUx6Q,KAAKy6Q,WAAYz6Q,KAAK6tG,QAAS7tG,KAAK06Q,QACvDjkO,EAIT0oO,qBAAqBhxP,GACnB,MAAmB,MAAfA,EAAMhoB,KACDnG,KAAKsrC,OAAO,8BAA+Bnd,GAC7CnuB,KAAK28Q,kBAIdE,YAAY1uP,GACV,MAAmB,WAAfA,EAAMhoB,KACDnG,KAAKsrC,OAAO,oCAAqCnd,IAC1DnuB,KAAK8gC,QAAU3S,EAAM9uB,MACdW,KAAKo/Q,gBAIdA,eAAejxP,GACb,GAAmB,QAAfA,EAAMhoB,KACR,OAAOnG,KAAKsrC,OAAO,kCAAkCtrC,KAAK8gC,YAAa3S,GACzE,MAAMkxP,EAAar/Q,KAAKi9Q,YAAY9uP,GAGpC,OAFAnuB,KAAKu8Q,UAAUv8Q,KAAK8gC,SAAWu+O,EAAWhgR,MAC1CW,KAAKs/Q,gBAAgBt/Q,KAAK8gC,QAASu+O,GAC5Br/Q,KAAKu/Q,4BAIdzC,aAAa3uP,GACX,MAAM42D,EAAqB,QAAf52D,EAAMhoB,MAAkBnG,KAAKm9Q,YAAYhvP,EAAM9uB,OAC3D,OAAK0lF,GAEL/kF,KAAK86Q,SAAS/1L,GACP/kF,KAAKu/Q,6BAFHv/Q,KAAKsrC,OAAO,gDAAiDnd,GAMxE6uP,qBAAqB7uP,GACnB,OAAQA,EAAMhoB,MACd,IAAK,MACL,IAAK,QACL,IAAK,WACH,OAAOnG,KAAK+8Q,aAAa5uP,GAAQnuB,KAAKs+Q,WACxC,IAAK,IACH,OAAOt+Q,KAAKw/Q,0BACd,QACE,OAAOx/Q,KAAKsrC,OAAO,sBAAuBnd,IAK9CqxP,0BAA0BrxP,GACxB,MAAmB,MAAfA,EAAMhoB,KACDnG,KAAKsrC,OAAO,sBAAuBnd,IAC5CnuB,KAAKw6Q,SAAWx6Q,KAAKq9Q,aACdr9Q,KAAKs+Q,YAIdiB,4BAA4BpxP,GAE1B,OAAInuB,KAAK48Q,cACP58Q,KAAK48Q,cAAe,EACb58Q,KAAK28Q,kBAAkBxuP,IAGb,MAAfA,EAAMhoB,KACDnG,KAAKsrC,OAAO,yCAA0Cnd,GACxDnuB,KAAK28Q,kBAIdgB,oBAAoBxvP,GAClB,IAAI4gI,EACJ,OAAQ5gI,EAAMhoB,MACd,IAAK,MACL,IAAK,WACH,QAAiDrE,KAA5CitJ,EAAS/uJ,KAAKi9Q,YAAY9uP,GAAO,IACpC,MACJ,QACE,OAAOnuB,KAAKsrC,OAAO,cAAcnd,EAAMhoB,OAAQgoB,GAkBjD,OAfKnuB,KAAK67Q,sBAKc,OAAlB77Q,KAAKw6Q,SACPx6Q,KAAKw+Q,MAAMx+Q,KAAK06Q,QAAU16Q,KAAK25Q,aAAc35Q,KAAKy6Q,WACvCz6Q,KAAKw6Q,SAAWx6Q,KAAKq9Q,aAAcr9Q,KAAKy/Q,mBAGnDz/Q,KAAKw+Q,MAAMx+Q,KAAKw6Q,SAAUx6Q,KAAKyxJ,SACpBzxJ,KAAKw6Q,SAAWx6Q,KAAKq9Q,aAAcr9Q,KAAKy/Q,mBAErDz/Q,KAAKw+Q,MAAMx+Q,KAAKw6Q,SAAUx6Q,KAAKwxJ,UAAWzC,EAAQ/uJ,KAAKy/Q,oBAZvDz/Q,KAAKy8Q,YAAY1tH,EAAOlsH,IAAM7iC,KAAK09Q,YAAY19Q,KAAKq9Q,aAAah+Q,OAc5DW,KAAK0/Q,2BAIdA,2BAA2BvxP,GAEzB,MAAmB,MAAfA,EAAMhoB,KACDnG,KAAK29Q,qBAIR39Q,KAAK67Q,uBACP77Q,KAAKw+Q,MAAMx+Q,KAAKw6Q,SAAUx6Q,KAAKyxJ,SAAUzxJ,KAAK0xJ,QAAS1xJ,KAAKy/Q,mBAC5Dz/Q,KAAKw6Q,SAAW,MAGlBx6Q,KAAKg/Q,cAAgBh/Q,KAAKq+Q,uBACnBr+Q,KAAKg/Q,cAAc7wP,IAK9B6vP,eAAe2B,GAEb,OADA3/Q,KAAK4/Q,WAAaD,EACX3/Q,KAAK6/Q,UAIdA,UAAU1xP,GACR,OAAQA,EAAMhoB,MAEd,IAAK,IAAK,OAAOnG,KAAK8/Q,iBAEtB,IAAK,IAAK,OAAO9/Q,KAAK+/Q,kBAEtB,QACE,MAAMh5L,EAAQ/mF,KAAK66Q,cAAetwM,EAASwc,EAAMhhF,QAAUghF,EAAMA,EAAMhhF,OAAS,GAEhF,GAAIwkE,GAA0B,SAAhBA,EAAOpkE,KAAiB,CAEpC,MAAMs4I,EAAOz+I,KAAKw6Q,SAElBx6Q,KAAK08Q,kBAEL18Q,KAAKw+Q,MAAMx+Q,KAAKw6Q,SAAUx6Q,KAAKwxJ,UAAW/S,EAAMz+I,KAAK06Q,QAEvD,OAAO16Q,KAAK4/Q,WAAWzxP,IAK3B2xP,iBAAiB3xP,GACf,IAAIznB,EAASC,EACb,MAAMC,EAAS5G,KAAKq9Q,aAEpB,QAA8Cv7Q,KAAzC6E,EAAY3G,KAAKi9Q,YAAY9uP,IAUlC,OAPwB,OAApBnuB,KAAKy6Q,YACP/zQ,EAAU1G,KAAKw6Q,SAAUx6Q,KAAKw6Q,SAAW5zQ,IAGzCF,EAAU1G,KAAK6tG,QAAU7tG,KAAK6tG,QAAWjnG,GAE3C5G,KAAKw+Q,MAAM93Q,EAASC,EAAWC,EAAQ5G,KAAK06Q,QACrC16Q,KAAK6/Q,UAIdE,kBAAkB5xP,GAChB,MAAMznB,EAAU1G,KAAKq9Q,aACrB,IAAI12Q,EAAWC,EAEf,QAA8C9E,KAAzC6E,EAAY3G,KAAKi9Q,YAAY9uP,IAUlC,OAPwB,OAApBnuB,KAAKy6Q,YACP7zQ,EAAS5G,KAAKw6Q,SAAUx6Q,KAAKw6Q,SAAW9zQ,IAGxCE,EAAS5G,KAAK6tG,QAAU7tG,KAAK6tG,QAAWnnG,GAE1C1G,KAAKw+Q,MAAM93Q,EAASC,EAAWC,EAAQ5G,KAAK06Q,QACrC16Q,KAAK6/Q,UAIdG,wBAAwB7xP,GACtB,MAAmB,OAAfA,EAAMhoB,KAEJnG,KAAKy7Q,gBAAkC,OAAhBz7Q,KAAK06Q,aAA+D54Q,KAA3C9B,KAAK06Q,OAAS16Q,KAAKi9Q,YAAY9uP,IAC1EnuB,KAAKigR,iBACPjgR,KAAKsrC,OAAO,0BAA0BtrC,KAAK6tG,QAAQhrE,MAAO1U,GAE5DnuB,KAAKigR,iBAAiB9xP,GAI/B8xP,iBAAiB9xP,GACf,GAAmB,OAAfA,EAAMhoB,KACR,OAAOnG,KAAKsrC,OAAO,uBAAuBnd,EAAMhoB,OAAQgoB,GAE1D,MAAM3nB,EAAOxG,KAAKm+H,MAAMn+H,KAAKw6Q,SAAUx6Q,KAAKy6Q,WAAYz6Q,KAAK6tG,QAC3D7tG,KAAK06Q,QAAU16Q,KAAK25Q,cAGtB,OAFA35Q,KAAK08Q,kBAEiB,OAAlB18Q,KAAKw6Q,UACPx6Q,KAAKw6Q,SAAWh0Q,EACTxG,KAAKw7Q,iBAIZx7Q,KAAK6tG,QAAUrnG,EACRxG,KAAKq+Q,wBAKhBA,uBACE,MAAM6B,EAAelgR,KAAK66Q,cAC1B,IAAKqF,EAAan6Q,OAChB,OAAO/F,KAAKw9Q,iBAEd,OAAQ0C,EAAaA,EAAan6Q,OAAS,GAAGI,MAC9C,IAAK,QACH,OAAOnG,KAAKk+Q,mBACd,IAAK,OACH,OAAOl+Q,KAAKu9Q,cACd,IAAK,UACH,OAAOv9Q,KAAKi/Q,iBACd,IAAK,KACH,OAAOj/Q,KAAKggR,yBAKhBxB,MAAM93Q,EAASC,EAAWC,EAAQC,GAChC7G,KAAK6oC,UAAU,KAAM7oC,KAAKm+H,MAAMz3H,EAASC,EAAWC,EAAQC,GAAS7G,KAAK25Q,eAI5EruO,OAAO50B,EAASyX,GACd,MAAMjD,EAAM,IAAI1qB,MAAM,GAAGkW,aAAmByX,EAAMqpE,SAClDtsE,EAAI/qB,QAAU,CACZguB,MAAOA,EACPqpE,KAAMrpE,EAAMqpE,KACZihL,cAAez4Q,KAAKw3O,OAAOihC,eAE7Bz4Q,KAAK6oC,UAAU3d,GACflrB,KAAK6oC,UAAY6pF,EAInByqJ,YAAYp4L,GACV,MAAO,uBAAuB5sE,KAAK4sE,GAAOA,EAAM/kF,KAAK27Q,oBAAoB52L,GAK3E42L,oBAAoB52L,GAElB,IAAKA,EAAIh/E,OACP,OAAO/F,KAAK+7Q,MAEd,OAAQh3L,EAAI,IAEZ,IAAK,IAAK,OAAO/kF,KAAK+7Q,MAAQh3L,EAE9B,IAAK,IAAK,OAAO/kF,KAAK+7Q,MAAMt7P,QAAQ,aAAcskE,GAElD,IAAK,IAEH,OAAmB,MAAXA,EAAI,GAAa/kF,KAAKk8Q,YAAcl8Q,KAAKi8Q,WAAaj8Q,KAAKmgR,mBAAmBp7L,GAExF,QAEE,MAAQ,WAAW5sE,KAAK4sE,GAAQ,KAAO/kF,KAAKmgR,mBAAmBngR,KAAKg8Q,UAAYj3L,IAKpFo7L,mBAAmBp7L,GAEjB,IAAK,uBAAuB5sE,KAAK4sE,GAC/B,OAAOA,EAGT,MAAMh/E,EAASg/E,EAAIh/E,OACnB,IAAIuB,EAAS,GAAIsR,GAAK,EAAGwnQ,GAAa,EAAGC,EAAe,EAAG5pO,EAAO,IAElE,KAAO79B,EAAI7S,GAAQ,CACjB,OAAQ0wC,GAER,IAAK,IACH,GAAI2pO,EAAY,GAEG,MAAbr7L,IAAMnsE,IAA2B,MAAbmsE,IAAMnsE,GAE5B,MAAQwnQ,EAAYxnQ,EAAI,GAAK7S,GAA6B,MAAnBg/E,EAAIq7L,IACzCxnQ,EAAIwnQ,EAEV,MAEF,IAAK,IACL,IAAK,IACHxnQ,EAAI7S,EACJ,MAEF,IAAK,IACH,GAAmB,MAAfg/E,EAAInsE,EAAI,GAEV,OADA69B,EAAOsuC,EAAU,KAAJnsE,GACL69B,GAER,IAAK,IACHnvC,GAAUy9E,EAAI9tD,UAAUopP,EAAcznQ,EAAI,GAC1CynQ,EAAeznQ,EAAI,EACnB,MAEF,UAAK9W,EACL,IAAK,IACL,IAAK,IACH,OAAOwF,EAASy9E,EAAI9tD,UAAUopP,EAAcznQ,GAAKmsE,EAAI9iE,OAAOrJ,EAAI,GAElE,IAAK,IAEH,GADA69B,EAAOsuC,EAAU,KAAJnsE,QACA9W,IAAT20C,GAA+B,MAATA,GAAyB,MAATA,GAAyB,MAATA,EAAc,CAMtE,GALAnvC,GAAUy9E,EAAI9tD,UAAUopP,EAAcznQ,EAAI,IAErCynQ,EAAe/4Q,EAAOwyB,YAAY,OAASsmP,IAC9C94Q,EAASA,EAAO2a,OAAO,EAAGo+P,IAEf,MAAT5pO,EACF,MAAO,GAAGnvC,KAAUy9E,EAAI9iE,OAAOrJ,EAAI,KACrCynQ,EAAeznQ,EAAI,IAK3B69B,EAAOsuC,IAAMnsE,GAEf,OAAOtR,EAASy9E,EAAI9tD,UAAUopP,GAMhCt4P,MAAMvkB,EAAO88Q,EAAcC,GAazB,GAVAvgR,KAAKg/Q,cAAgBh/Q,KAAK28Q,kBAC1B38Q,KAAK48Q,cAAe,EACpB58Q,KAAKu8Q,UAAYr9Q,OAAOuC,OAAO,MAC/BzB,KAAKu8Q,UAAUxhP,EAAI/6B,KAAK47Q,iBAAmB57Q,KAAK47Q,iBAAiB35P,OAAO,GAC7B,IAAI4xG,OAC/C7zH,KAAKs/Q,gBAAkBiB,GAAkB7tJ,EACzC1yH,KAAKq8Q,mBAAoB,EACzBr8Q,KAAKy8Q,YAAcv9Q,OAAOuC,OAAO,OAG5B6+Q,EAAc,CACjB,MAAMnoJ,EAAQ,GACd,IAAIpsH,EAKJ,GAJA/L,KAAK6oC,UAAY,CAACpa,EAAG2I,KAAQ3I,EAAK1iB,EAAQ0iB,EAAK2I,GAAK+gG,EAAM1yH,KAAK2xB,IAC/Dp3B,KAAKw3O,OAAO0hC,SAAS11Q,GAAOwqB,OAAMG,GACzBnuB,KAAKg/Q,cAAgBh/Q,KAAKg/Q,cAAc7wP,KAE7CpiB,EAAO,MAAMA,EACjB,OAAOosH,EAITn4H,KAAK6oC,UAAYy3O,EACjBtgR,KAAKw3O,OAAO0hC,SAAS11Q,GAAO,CAACuI,EAAOoiB,KACpB,OAAVpiB,GACF/L,KAAK6oC,UAAU98B,GAAQ/L,KAAK6oC,UAAY6pF,GACjC1yH,KAAKg/Q,gBACZh/Q,KAAKg/Q,cAAgBh/Q,KAAKg/Q,cAAc7wP,QAMhD,SAASukG,KAGT,SAASqoJ,EAAgBvyL,EAAQ52E,GAE/B,MAAMkiH,EAAYliH,EAAQkiH,UAC1BtrC,EAAO40L,WAAetpJ,EACtBtrC,EAAO60L,WAAezrQ,EAAQoiH,UAC9BxrC,EAAOu1L,SAAensQ,EAAQqiH,QAC9BzrC,EAAOyuL,UAAerlQ,EAAQrL,SAC9BiiF,EAAO21C,MAAevsH,EAAQpL,KAC9BgiF,EAAOmxL,aAAe/nQ,EAAQyiH,eAG9B7rC,EAAOgpE,UAAa19B,EAAU,aAC9BtrC,EAAOipE,SAAa39B,EAAU,YAC9BtrC,EAAOkpE,QAAa59B,EAAU,WAC9BtrC,EAAOo1L,UAAa9pJ,EAAU,YAC9BtrC,EAAOi1L,WAAa3pJ,EAAU,aAC9BtrC,EAAOy1L,cAAgB,CACrB,EAAKnqJ,EAAU,YACf,IAAKA,EAAU,cACf,IAAKA,EAAU,gBAEjBtrC,EAAOi3L,kBAAoB3rJ,EAAU,sBAEvCinJ,EAAgBH,EAASp4Q,UAAWk3Q,GCxhCpC,MAAM,EAAeA,EAAcrlJ,gBAE3Bw4F,IAAG,MAAK,GAAK,EAGf,EAAY,4CACd2zD,GAAY,+DACZC,GAAoB,CAClB,KAAM,OAAQ,IAAK,MAAO,KAAM,MAChC,KAAM,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,OAInD,MAAMC,WAAuB1G,EAG3B5sQ,SACE,OAAO,GAKI,MAAMuzQ,GACnBlhR,YAAYmhR,EAAcvvQ,GAWxB,GATArR,KAAKmhJ,aAAe,MAGhBy/H,GAA8C,mBAAvBA,EAAanmQ,QACtCpJ,EAAUuvQ,EAAcA,EAAe,MACzCvvQ,EAAUA,GAAW,GACrBrR,KAAK6gR,OAASxvQ,EAAQyvQ,MAGjBF,EASH5gR,KAAK+gR,cAAgBH,EACrB5gR,KAAKghR,gBAA6Bl/Q,IAAhBuP,EAAQu5E,OAA6Bv5E,EAAQu5E,QAV9C,CACjB,IAAIlnF,EAAS,GACb1D,KAAK+gR,cAAgB,CACnBtmQ,MAAMiuE,EAAO2C,EAAU0J,GAAQrxF,GAAUglF,EAAOqM,GAAQA,KACxDnK,IAAKmK,IAAUA,GAAQA,EAAK,KAAMrxF,KAEpC1D,KAAKghR,YAAa,EAQpBhhR,KAAKw6Q,SAAW,KACX,eAAiBriQ,KAAK9G,EAAQiX,SAYjCtoB,KAAKu3Q,WAAY,EACjBv3Q,KAAKihR,WAAajhR,KAAKkhR,iBAZvBlhR,KAAKu3Q,WAAY,EACjBv3Q,KAAK06Q,OAAS,EACd16Q,KAAKmhR,YAAcjiR,OAAOuC,OAAO,MACjC4P,EAAQqmI,UAAY13I,KAAKohR,YAAY/vQ,EAAQqmI,UACzCrmI,EAAQ/I,UACVtI,KAAKqhR,aAAe,IAAInnO,OAAO,IAAIonO,GAAYjwQ,EAAQ/I,WAChD+I,EAAQ/I,QAAQo4E,SAAS,KAAO,GAAK,UAC5C1gF,KAAKuhR,YAAclwQ,EAAQ/I,QAAQvC,SAYrCy7Q,sBACF,OAAO,EAAap0Q,OAAOpN,KAAK06Q,QAIlCxtJ,OAAO9hC,EAAQp9E,GACbhO,KAAK+gR,cAActmQ,MAAM2wE,EAAQ,OAAQp9E,GAI3CizQ,WAAWv6Q,EAASC,EAAWC,EAAQC,EAAOkuF,GAC5C,IAEOluF,EAAMuG,OAAOpN,KAAK06Q,UAErB16Q,KAAKktH,QAA0B,OAAlBltH,KAAKw6Q,SAAoB,GAAMx6Q,KAAKwhR,gBAAkB,MAAQ,UAC9D,EAAap0Q,OAAOvG,GAAS,GAAK,GAAG7G,KAAKyhR,kBAAkB56Q,WACzE7G,KAAK06Q,OAAS7zQ,EACd7G,KAAKw6Q,SAAW,MAGd9zQ,EAAQ0G,OAAOpN,KAAKw6Q,UAElB7zQ,EAAUyG,OAAOpN,KAAKy6Q,YACxBz6Q,KAAKktH,OAAO,KAAKltH,KAAK0hR,cAAc96Q,KAAWmuF,GAG/C/0F,KAAKktH,OAAO,UACAltH,KAAK2hR,iBAAiB3hR,KAAKy6Q,WAAa9zQ,MACxC3G,KAAK0hR,cAAc96Q,KAAWmuF,GAI5C/0F,KAAKktH,OAAO,IAAsB,OAAlBltH,KAAKw6Q,SAAoB,GAAK,OAClCx6Q,KAAK4hR,eAAe5hR,KAAKw6Q,SAAW9zQ,MACpC1G,KAAK2hR,iBAAiB3hR,KAAKy6Q,WAAa9zQ,MACxC3G,KAAK0hR,cAAc96Q,KAAWmuF,GAE9C,MAAOhpF,GAASgpF,GAAQA,EAAKhpF,IAI/Bm1Q,eAAex6Q,EAASC,EAAWC,EAAQC,EAAOkuF,UAEzC/0F,KAAK6hR,aACZ7hR,KAAKktH,OAAOltH,KAAKqG,aAAaK,EAASC,EAAWC,EAAQC,GAAQkuF,GAIpE1uF,aAAaK,EAASC,EAAWC,EAAQC,GACvC,MAAQ,GAAG7G,KAAK4hR,eAAel7Q,MACvB1G,KAAKyhR,kBAAkB96Q,MACvB3G,KAAK0hR,cAAc96Q,KAChBC,GAASA,EAAMxH,MAAQ,IAAIW,KAAKyhR,kBAAkB56Q,SAAe,SAI9Ei7Q,cAAc3pJ,GACZ,OAAOA,EAAMnyH,KAAIoxB,GACRp3B,KAAKqG,aAAa+wB,EAAE1wB,QAAS0wB,EAAEzwB,UAAWywB,EAAExwB,OAAQwwB,EAAEvwB,SAC5D2Z,KAAK,IAIVohQ,eAAe7yH,GACb,MAA2B,SAApBA,EAAOjoJ,SACZ9G,KAAK+hR,YAAYhzH,GAAU/uJ,KAAKyhR,kBAAkB1yH,GAItD0yH,kBAAkB1yH,GAEhB,GAAwB,cAApBA,EAAOjoJ,SAIT,OAFI9G,KAAK6gR,QAAW9xH,EAAO1vJ,SAASW,KAAK6gR,SACvC9xH,EAAS/uJ,KAAKivF,KAAKjvF,KAAK6gR,OAAO9xH,EAAO1vJ,SACjC,OAAQ0vJ,EAASA,EAAOlsH,GAAK,KAAKksH,EAAO1vJ,QAElD,IAAI0lF,EAAMgqE,EAAO1vJ,MAEbW,KAAKqhR,cAAgBrhR,KAAKqhR,aAAalpQ,KAAK4sE,KAC9CA,EAAMA,EAAI9iE,OAAOjiB,KAAKuhR,cAEpB,EAAOppQ,KAAK4sE,KACdA,EAAMA,EAAItkE,QAAQ+/P,GAAWwB,KAE/B,MAAMz+H,EAAcvjJ,KAAKmhJ,aAAa3tH,KAAKuxD,GAC3C,OAAQw+D,EACCA,EAAY,GAAWvjJ,KAAKmhR,YAAY59H,EAAY,IAAMA,EAAY,GAArDx+D,EADJ,IAAIA,KAK5Bk9L,eAAehuJ,GAEb,IAAI50H,EAAQ40H,EAAQ50H,MAKpB,GAJI,EAAO8Y,KAAK9Y,KACdA,EAAQA,EAAMohB,QAAQ+/P,GAAWwB,KAG/B/tJ,EAAQjsH,SACV,MAAO,IAAI3I,MAAU40H,EAAQjsH,WAG/B,GAAIhI,KAAKu3Q,WAEP,GAAItjJ,EAAQU,SAASt1H,QAAU,EAAI+rF,OACjC,MAAO,IAAI/rF,UAIb,OAAQ40H,EAAQU,SAASt1H,OACzB,KAAK,EAAI+rF,OACP,MAAO,IAAI/rF,KACb,KAAK,EAAIm5J,QACP,GAAc,SAAVn5J,GAA8B,UAAVA,EACtB,OAAOA,EACT,MACF,KAAK,EAAIw2Q,QACP,GAAI,aAAa19P,KAAK9Y,GACpB,OAAOA,EACT,MACF,KAAK,EAAIi1N,QACP,GAAI,kBAAkBn8M,KAAK9Y,GACzB,OAAOA,EACT,MACF,KAAK,EAAIu2Q,OACP,GAAI,yCAAyCz9P,KAAK9Y,GAChD,OAAOA,EAMb,MAAO,IAAIA,OAAWW,KAAKyhR,kBAAkBxtJ,EAAQU,YAIvDgtJ,iBAAiBh7Q,GACf,OAAOA,EAAUtH,QAAU,EAAI8G,KAAO,IAAMnG,KAAKyhR,kBAAkB96Q,GAIrE+6Q,cAAc96Q,GACZ,OAAQA,EAAOE,UACf,IAAK,OACH,OAAO9G,KAAK+hR,YAAYn7Q,GAC1B,IAAK,UACH,OAAO5G,KAAKiiR,eAAer7Q,GAC7B,QACE,OAAO5G,KAAKyhR,kBAAkB76Q,IAKlCm7Q,aAAY,QAAEr7Q,EAAO,UAAEC,EAAS,OAAEC,EAAM,MAAEC,IACxC,MAAO,KACL7G,KAAK4hR,eAAel7Q,MACpB1G,KAAK2hR,iBAAiBh7Q,MACtB3G,KAAK0hR,cAAc96Q,KACnB0yQ,EAAezyQ,GAAS,GAAK,IAAI7G,KAAKyhR,kBAAkB56Q,SAI5Dq7Q,gBACE,MAAM,IAAI1hR,MAAM,oDAIlB2hR,QAAQz7Q,EAASC,EAAWC,EAAQC,EAAOkuF,QAE1BjzF,IAAX8E,EACF5G,KAAKihR,WAAWv6Q,EAAQA,QAASA,EAAQC,UAAWD,EAAQE,OAAQF,EAAQG,MAAOF,GAE3D,mBAAVE,EACd7G,KAAKihR,WAAWv6Q,EAASC,EAAWC,EAAQ,EAAcC,GAG1D7G,KAAKihR,WAAWv6Q,EAASC,EAAWC,EAAQC,GAAS,EAAckuF,GAIvEqtL,SAASjqJ,GACP,IAAK,IAAIv/G,EAAI,EAAGA,EAAIu/G,EAAMpyH,OAAQ6S,IAChC5Y,KAAKmiR,QAAQhqJ,EAAMv/G,IAIvBypQ,UAAU1hP,EAAQokD,EAAKgQ,GACrB,MAAM2iD,EAAW,GACjBA,EAAS/2G,GAAUokD,EACnB/kF,KAAKohR,YAAY1pI,EAAU3iD,GAI7BqsL,YAAY1pI,EAAU3iD,GAEpB,IAAK/0F,KAAKmhR,YACR,OAAOpsL,GAAQA,IAGjB,IAAIutL,GAAc,EAClB,IAAK,IAAI3hP,KAAU+2G,EAAU,CAC3B,IAAI3yD,EAAM2yD,EAAS/2G,GACA,iBAARokD,IACTA,EAAMA,EAAI1lF,OACZijR,GAAc,EAEQ,OAAlBtiR,KAAKw6Q,WACPx6Q,KAAKktH,OAAOltH,KAAKwhR,gBAAkB,MAAQ,SAC3CxhR,KAAKw6Q,SAAW,KAAMx6Q,KAAK06Q,OAAS,IAGtC16Q,KAAKmhR,YAAYp8L,GAAQpkD,GAAU,IACnC3gC,KAAKktH,OAAO,WAAWvsF,MAAWokD,SAGpC,GAAIu9L,EAAa,CACf,IAAIC,EAAU,GAAIC,EAAa,GAC/B,IAAK,MAAMC,KAAaziR,KAAKmhR,YAC3BoB,GAAWA,EAAU,IAAIE,IAAcA,EACvCD,IAAeA,EAAa,IAAM,IAAMxiR,KAAKmhR,YAAYsB,GAE3DF,EAAUjB,GAAYiB,GACtBviR,KAAKmhJ,aAAe,IAAIjnG,OAAO,OAAOsoO,cACFD,iCAGtCviR,KAAKktH,OAAOo1J,EAAc,KAAO,GAAIvtL,GAIvCs8D,MAAM1qJ,EAAWC,GACf,IAA0BX,EAAOF,EAA7BnB,EAAW+B,EAWf,YATkB7E,IAAd6E,EACF/B,EAAW,GAEJ+B,EAAUG,SACjBlC,EAAW,CAAC,CAAE+B,UAAWA,EAAWC,OAAQA,IAEnC,WAAYD,IACrB/B,EAAW,CAAC+B,IAENZ,EAASnB,EAASmB,QAE1B,KAAK,EACH,OAAO,IAAI26Q,GAAe,MAE5B,KAAK,EAEH,GADAz6Q,EAAQrB,EAAS,KACXqB,EAAMW,kBAAkB85Q,IAC5B,OAAO,IAAIA,GAAe,KAAK1gR,KAAK2hR,iBAAiB17Q,EAAMU,cACjC3G,KAAK0hR,cAAcz7Q,EAAMW,aAEvD,QACE,IAAI87Q,EAAW,IAEf,IAAK,IAAI9pQ,EAAI,EAAGA,EAAI7S,EAAQ6S,IAC1B3S,EAAQrB,EAASgU,GAEb3S,EAAMU,UAAUyG,OAAOzG,GACzB+7Q,GAAY,KAAK1iR,KAAK0hR,cAAcz7Q,EAAMW,WAG1C87Q,GAAY,IAAI9pQ,EAAI,QAAU,QAClB5Y,KAAK2hR,iBAAiB17Q,EAAMU,cAC5B3G,KAAK0hR,cAAcz7Q,EAAMW,UACrCD,EAAYV,EAAMU,WAGtB,OAAO,IAAI+5Q,GAAe,GAAGgC,SAKjCzzL,KAAK4uC,GACH,MAAM93H,EAAS83H,GAAYA,EAAS93H,QAAU,EAAG28Q,EAAW,IAAI5mQ,MAAM/V,GACtE,IAAK,IAAI6S,EAAI,EAAGA,EAAI7S,EAAQ6S,IAC1B8pQ,EAAS9pQ,GAAK5Y,KAAK0hR,cAAc7jJ,EAASjlH,IAC5C,OAAO,IAAI8nQ,GAAe,IAAIgC,EAASliQ,KAAK,SAI9CoqE,IAAImK,GAEoB,OAAlB/0F,KAAKw6Q,WACPx6Q,KAAKktH,OAAOltH,KAAKwhR,gBAAkB,MAAQ,SAC3CxhR,KAAKw6Q,SAAW,MAGlBx6Q,KAAKktH,OAASltH,KAAKkiR,cAGnB,IAAIS,EAAa5tL,GAAQ,EAAEhpF,EAAOzE,KAAaq7Q,EAAa,KAAM5tL,EAAKhpF,EAAOzE,KAC9E,GAAItH,KAAKghR,WACP,IAAM,OAAOhhR,KAAK+gR,cAAcn2L,IAAI+3L,GACpC,MAAO52Q,IAET42Q,GAAcA,KAKlB,SAASX,GAAkBY,GAEzB,IAAIt7Q,EAASm5Q,GAAkBmC,GAc/B,YAbe9gR,IAAXwF,IAEuB,IAArBs7Q,EAAU78Q,QACZuB,EAASs7Q,EAAU5hQ,WAAW,GAAGnT,SAAS,IAC1CvG,EAAS,UAAU2a,OAAO,EAAG,EAAI3a,EAAOvB,QAAUuB,IAIlDA,GAA+C,MAApCs7Q,EAAU5hQ,WAAW,GAAK,OAC1B4hQ,EAAU5hQ,WAAW,GAAK,MAAQnT,SAAS,IACtDvG,EAAS,cAAc2a,OAAO,EAAG,GAAK3a,EAAOvB,QAAUuB,IAGpDA,EAGT,SAASg6Q,GAAYv6G,GACnB,OAAOA,EAAMtmJ,QAAQ,0BAA2B,wBCvYnC,MAAMoiQ,GACnBpjR,YAAY04H,EAAO9mH,GAEjBrR,KAAK8iR,MAAQ,EAEb9iR,KAAK+iR,QAAU7jR,OAAOuC,OAAO,MAG7BzB,KAAKkjC,IAAM,EACXljC,KAAKgjR,KAAO9jR,OAAOuC,OAAO,MAC1BzB,KAAKgjR,KAAK,MAAQ,EAClBhjR,KAAKijR,UAAY/jR,OAAOuC,OAAO,MAE/BzB,KAAKkjR,gBAAkB,EAGlB7xQ,IAAW8mH,GAAUA,EAAM,KAC9B9mH,EAAU8mH,EAAOA,EAAQ,MAC3B9mH,EAAUA,GAAW,GACrBrR,KAAKmjR,SAAW9xQ,EAAQO,SAAW8nQ,EAG/BvhJ,GACFn4H,KAAKoiR,SAASjqJ,GAMdlrH,WAEF,IAAIA,EAAOjN,KAAK8iR,MAChB,GAAa,OAAT71Q,EACF,OAAOA,EAGTA,EAAO,EACP,MAAMosI,EAASr5I,KAAK+iR,QACpB,IAAIliB,EAAUn6P,EACd,IAAK,MAAM08Q,KAAY/pI,EACrB,IAAK,MAAMgqI,KAAexiB,EAAWxnH,EAAO+pI,GAAUviB,SACpD,IAAK,MAAM+S,KAAiBltQ,EAAUm6P,EAASwiB,GAC7Cp2Q,GAAQ/N,OAAO0N,KAAKlG,EAAQktQ,IAAe7tQ,OACjD,OAAO/F,KAAK8iR,MAAQ71Q,EAOtBq2Q,YAAYC,EAAQC,EAAMhqH,EAAMD,GAE9B,MAAMkqH,EAASF,EAAOC,KAAUD,EAAOC,GAAQ,IACzCE,EAASD,EAAOjqH,KAAUiqH,EAAOjqH,GAAQ,IAEzCmqH,EAAUpqH,KAAQmqH,EAGxB,OAFKC,IACHD,EAAOnqH,GAAQ,OACToqH,EAIVC,iBAAiBL,EAAQC,EAAMhqH,EAAMD,GAEnC,MAAMkqH,EAASF,EAAOC,GAAOE,EAASD,EAAOjqH,UACtCkqH,EAAOnqH,GAGd,IAAK,MAAMp4J,KAAOuiR,EAAQ,cACnBD,EAAOjqH,GACd,IAAK,MAAMr4J,KAAOsiR,EAAQ,cACnBF,EAAOC,GAUhB,cAAcD,EAAQC,EAAMhqH,EAAMD,EAAMsqH,EAAOC,EAAOC,EAAOlb,GAC3D,IAAI5+K,EAAKw5L,EAAQC,EAEjB,MACIM,GADcR,GAAQhqH,GAAQD,EACN,EAAIr6J,OAAO0N,KAAK5M,KAAKgjR,MAAQhjR,KAAKijR,UACxDp8Q,EAAQuzQ,EAAWvR,EAAS7oQ,KAAKmjR,UAGnCK,KAAOv5L,EAAMs5L,EAAQA,EAAS,IAAIC,GAAQv5L,EAAIu5L,IAClD,IAAK,MAAMS,KAAUV,EAAQ,CAC3B,MAAMW,EAAUF,EAAWC,GAE3B,GAAIR,EAASF,EAAOU,GAAS,CAEvBzqH,KAAOvvE,EAAMw5L,EAAQA,EAAS,IAAIjqH,GAAQvvE,EAAIuvE,IAClD,IAAK,MAAM2qH,KAAUV,EAAQ,CAC3B,MAAMW,EAAUJ,EAAWG,GAE3B,GAAIT,EAASD,EAAOU,GAAS,CAE3B,MAAMp3Q,EAASwsJ,EAAQA,KAAQmqH,EAAS,CAACnqH,GAAQ,GAAMr6J,OAAO0N,KAAK82Q,GAEnE,IAAK,IAAIrsP,EAAI,EAAGA,EAAItqB,EAAOhH,OAAQsxB,IAAK,CACtC,MAAMV,EAAQ,CAAEjwB,QAAS,KAAMC,UAAW,KAAMC,OAAQ,MACxD+vB,EAAMktP,GAASzJ,EAAW8J,EAASlkR,KAAKmjR,UACxCxsP,EAAMmtP,GAAS1J,EAAWgK,EAASpkR,KAAKmjR,UACxCxsP,EAAMotP,GAAS3J,EAAW4J,EAAWj3Q,EAAOsqB,IAAKr3B,KAAKmjR,gBAChDnjR,KAAKmjR,SAAS38Q,KAAKmwB,EAAMjwB,QAASiwB,EAAMhwB,UAAWgwB,EAAM/vB,OAAQC,QASnFw9Q,MAAMd,EAAQv1Q,GACZ,IAAK,MAAMw1Q,KAAQD,EACjBv1Q,EAASw1Q,GAIbc,YAAYf,EAAQC,EAAMx1Q,GACxB,IAAIy1Q,EAAQjqH,EACZ,GAAIiqH,EAASF,EAAOC,GAClB,IAAKhqH,KAAQiqH,EACXz1Q,EAASwrJ,GAKf+qH,YAAYhB,EAAQ/pH,EAAMxrJ,GACxB,IAAIw1Q,EAAMC,EACV,IAAKD,KAAQD,EACXE,EAASF,EAAOC,GACZC,EAAOjqH,IACTxrJ,EAASw1Q,GAKfgB,aAAajB,EAAQC,EAAMhqH,EAAMxrJ,GAC/B,IAAIy1Q,EAAQC,EAAQnqH,EACpB,IAAKkqH,EAASF,EAAOC,MAAWE,EAASD,EAAOjqH,IAC9C,IAAKD,KAAQmqH,EACX11Q,EAASurJ,GAOfkrH,cAAclB,EAAQC,EAAMhqH,EAAMD,GAChC,IAAetvE,EAAKw5L,EAAQC,EAAxB3pL,EAAQ,EAGRypL,KAAOv5L,EAAMs5L,EAAQA,EAAS,IAAIC,GAAQv5L,EAAIu5L,IAClD,IAAK,MAAMS,KAAUV,EACnB,GAAIE,EAASF,EAAOU,GAAS,CAEvBzqH,KAAOvvE,EAAMw5L,EAAQA,EAAS,IAAIjqH,GAAQvvE,EAAIuvE,IAClD,IAAK,MAAM2qH,KAAUV,GACfC,EAASD,EAAOU,MAEd5qH,EAAOA,KAAQmqH,GAAW3pL,IAEzBA,GAAS76F,OAAO0N,KAAK82Q,GAAQ39Q,QAK1C,OAAOg0F,EAKT2qL,WAAW79Q,GACT,IAAKo6I,GAASp6I,GACZ,OAAO7G,KAAK+iR,QACd,MAAM1pI,EAAS,GAEf,OADAA,EAAOxyI,GAAS7G,KAAK+iR,QAAQl8Q,GACtBwyI,EAKTsrI,gBAAgB32Q,GACd,MAAM42Q,EAAY1lR,OAAOuC,OAAO,MAChC,OAAOohC,IACCA,KAAM+hP,IACVA,EAAU/hP,IAAM,EAChB70B,EAASosQ,EAAWp6Q,KAAKijR,UAAUpgP,GAAK7iC,KAAKmjR,aAUnDnlQ,IAAIxX,GAEF,OADAxG,KAAKmiR,QAAQ37Q,GACNxG,KAKTmiR,QAAQz7Q,EAASC,EAAWC,EAAQC,GAE7BF,IACHE,EAAQH,EAAQG,MAAOD,EAASF,EAAQE,OACtCD,EAAYD,EAAQC,UAAWD,EAAUA,EAAQA,SAGrDA,EAAU6zQ,EAAS7zQ,GACnBC,EAAY4zQ,EAAS5zQ,GACrBC,EAAS2zQ,EAAS3zQ,GAClBC,EAAQ0zQ,EAAS1zQ,GAGjB,IAAIg+Q,EAAY7kR,KAAK+iR,QAAQl8Q,GAExBg+Q,IACHA,EAAY7kR,KAAK+iR,QAAQl8Q,GAAS,CAAEg6P,SAAU,GAAIniE,WAAY,GAAIttC,QAAS,IAG3ElyJ,OAAOmC,OAAOwjR,IAMhB,MAAMzb,EAAMppQ,KAAKgjR,KACXj5F,EAAW/pL,KAAKijR,UACtBv8Q,EAAY0iQ,EAAI1iQ,KAAe0iQ,EAAIr/E,IAAW/pL,KAAKkjC,KAAOx8B,GAAa1G,KAAKkjC,KAC5Ev8B,EAAYyiQ,EAAIziQ,KAAeyiQ,EAAIr/E,IAAW/pL,KAAKkjC,KAAOv8B,GAAa3G,KAAKkjC,KAC5Et8B,EAAYwiQ,EAAIxiQ,KAAewiQ,EAAIr/E,IAAW/pL,KAAKkjC,KAAOt8B,GAAa5G,KAAKkjC,KAE5E,MAAMkvK,EAAUpyM,KAAKsjR,YAAYuB,EAAUhkB,SAAYn6P,EAAWC,EAAWC,GAM7E,OALA5G,KAAKsjR,YAAYuB,EAAUnmF,WAAY/3L,EAAWC,EAAWF,GAC7D1G,KAAKsjR,YAAYuB,EAAUzzH,QAAYxqJ,EAAWF,EAAWC,GAG7D3G,KAAK8iR,MAAQ,KACN1wE,EAITgwE,SAASjqJ,GACP,IAAK,IAAIv/G,EAAI,EAAGA,EAAIu/G,EAAMpyH,OAAQ6S,IAChC5Y,KAAKmiR,QAAQhqJ,EAAMv/G,IAKvB/U,OAAO2C,GAEL,OADAxG,KAAK8kR,WAAWt+Q,GACTxG,KAITkI,IAAI68Q,EAAep+Q,EAAWC,EAAQC,GAGpC,OAFIk+Q,GAAiBA,EAAcr+Q,WAC9BA,QAASq+Q,EAAep+Q,UAAAA,EAAWC,OAAAA,EAAQC,MAAAA,GAAUk+Q,IAClD/kR,KAAKglR,UAAUD,EAAep+Q,EAAWC,EAAQC,GAAO4vC,OAAOs+C,KAIzEk5G,OAAOxlH,GAEL,OADAA,EAAOj9E,GAAG,QAAQhF,IAAUxG,KAAKmiR,QAAQ37Q,MAClCiiF,EAITq8L,WAAWp+Q,EAASC,EAAWC,EAAQC,GAEhCF,IACHE,EAAQH,EAAQG,MAAOD,EAASF,EAAQE,OACtCD,EAAYD,EAAQC,UAAWD,EAAUA,EAAQA,SAGrDA,EAAU6zQ,EAAS7zQ,GACnBC,EAAY4zQ,EAAS5zQ,GACrBC,EAAS2zQ,EAAS3zQ,GAClBC,EAAQ0zQ,EAAS1zQ,GAIjB,MAAMuiQ,EAAMppQ,KAAKgjR,KAAM3pI,EAASr5I,KAAK+iR,QACrC,IAAI8B,EAAWhkB,EAAUniE,EACzB,MAAMh4L,EAAa0iQ,EAAI1iQ,MAAeC,EAAYyiQ,EAAIziQ,MAChDC,EAAawiQ,EAAIxiQ,MAAei+Q,EAAYxrI,EAAOxyI,MACnDg6P,EAAagkB,EAAUhkB,SAASn6P,MAChCg4L,EAAamiE,EAASl6P,KACtBC,KAAU83L,GACd,OAAO,EAST,IAAKh4L,KANL1G,KAAK4jR,iBAAiBiB,EAAUhkB,SAAYn6P,EAAWC,EAAWC,GAClE5G,KAAK4jR,iBAAiBiB,EAAUnmF,WAAY/3L,EAAWC,EAAWF,GAClE1G,KAAK4jR,iBAAiBiB,EAAUzzH,QAAYxqJ,EAAWF,EAAWC,GAC/C,OAAf3G,KAAK8iR,OAAgB9iR,KAAK8iR,QAGd+B,EAAUhkB,SAAU,OAAO,EAE3C,cADOxnH,EAAOxyI,IACP,EAITswI,YAAYhf,GACV,IAAK,IAAIv/G,EAAI,EAAGA,EAAIu/G,EAAMpyH,OAAQ6S,IAChC5Y,KAAK8kR,WAAW3sJ,EAAMv/G,IAI1BqoB,OAAOwnD,GAEL,OADAA,EAAOj9E,GAAG,QAAQhF,IAAUxG,KAAK8kR,WAAWt+Q,MACrCiiF,EAKTw8L,cAAcv+Q,EAASC,EAAWC,EAAQC,GACxC,MAAM4hF,EAAS,IAAI,GAAA78E,SAAS,CAAE81H,YAAY,IAQ1C,OANAj5C,EAAO58E,MAAQ,KACb,IAAK,MAAMrF,KAAQxG,KAAKglR,UAAUt+Q,EAASC,EAAWC,EAAQC,GAC5D4hF,EAAOhjF,KAAKe,GACdiiF,EAAOhjF,KAAK,OAGPzF,KAAKihC,OAAOwnD,GAIrBiyH,YAAY7zM,GACV,OAAO7G,KAAKilR,cAAc,KAAM,KAAM,KAAMp+Q,GAK9Cu3H,SAAS13H,EAASC,EAAWC,EAAQC,GACnC,MAAO,IAAI7G,KAAKglR,UAAUt+Q,EAASC,EAAWC,EAAQC,IAKxD,WAAWH,EAASC,EAAWC,EAAQC,GAErCH,EAAUA,GAAW6zQ,EAAS7zQ,GAC9BC,EAAYA,GAAa4zQ,EAAS5zQ,GAClCC,EAASA,GAAU2zQ,EAAS3zQ,GAC5BC,EAAQA,GAAS0zQ,EAAS1zQ,GAE1B,MAAMwyI,EAASr5I,KAAK0kR,WAAW79Q,GAAQuiQ,EAAMppQ,KAAKgjR,KAClD,IAAIr/I,EAASuhJ,EAAWC,EAAaC,EAGrC,KAAInkI,GAASv6I,MAAgBw+Q,EAAc9b,EAAI1iQ,KAC3Cu6I,GAASt6I,MAAgBw+Q,EAAc/b,EAAIziQ,KAC3Cs6I,GAASr6I,MAAgBw+Q,EAAchc,EAAIxiQ,KAG/C,IAAK,MAAMiiQ,KAAWxvH,GAEhB1V,EAAU0V,EAAOwvH,MAEfqc,EACEE,QAEKplR,KAAKqlR,aAAa1hJ,EAAQytB,QAASg0H,EAAUF,EAAWC,EAC7C,SAAU,UAAW,YAAatc,EAAS,MAAM,SAG5D7oQ,KAAKqlR,aAAa1hJ,EAAQk9H,SAAUqkB,EAAWC,EAAa,KACjD,UAAW,YAAa,SAAUtc,EAAS,MAAM,GAE9Dsc,QAEAnlR,KAAKqlR,aAAa1hJ,EAAQ+6D,WAAYymF,EAAaC,EAAU,KAClD,YAAa,SAAU,UAAWvc,EAAS,MAAM,GAC5Duc,QAEAplR,KAAKqlR,aAAa1hJ,EAAQytB,QAASg0H,EAAU,KAAM,KACxC,SAAU,UAAW,YAAavc,EAAS,MAAM,SAG5D7oQ,KAAKqlR,aAAa1hJ,EAAQk9H,SAAU,KAAM,KAAM,KACrC,UAAW,YAAa,SAAUgI,EAAS,MAAM,IAW3E//O,MAAMpiB,EAASC,EAAWC,EAAQC,GAChC,OAAO,IAAIy+Q,GAA6BtlR,KAAM0G,EAASC,EAAWC,EAAQC,GAK5EkxM,WAAWrxM,EAASC,EAAWC,EAAQC,GAErCH,EAAUA,GAAW6zQ,EAAS7zQ,GAC9BC,EAAYA,GAAa4zQ,EAAS5zQ,GAClCC,EAASA,GAAU2zQ,EAAS3zQ,GAC5BC,EAAQA,GAAS0zQ,EAAS1zQ,GAE1B,MAAMwyI,EAASr5I,KAAK0kR,WAAW79Q,GAAQuiQ,EAAMppQ,KAAKgjR,KAClD,IAAer/I,EAASuhJ,EAAWC,EAAaC,EAA5CrrL,EAAQ,EAGZ,GAAIknD,GAASv6I,MAAgBw+Q,EAAc9b,EAAI1iQ,KAC3Cu6I,GAASt6I,MAAgBw+Q,EAAc/b,EAAIziQ,KAC3Cs6I,GAASr6I,MAAgBw+Q,EAAchc,EAAIxiQ,IAC7C,OAAO,EAET,IAAK,MAAMiiQ,KAAWxvH,GAEhB1V,EAAU0V,EAAOwvH,MAKf9uK,GAHArzF,EACEE,EAEO5G,KAAKykR,cAAc9gJ,EAAQytB,QAASg0H,EAAUF,EAAWC,GAGzDnlR,KAAKykR,cAAc9gJ,EAAQk9H,SAAUqkB,EAAWC,EAAaC,GAEjEz+Q,EAEE3G,KAAKykR,cAAc9gJ,EAAQ+6D,WAAYymF,EAAaC,EAAUF,GAI9DllR,KAAKykR,cAAc9gJ,EAAQytB,QAASg0H,EAAUF,EAAWC,IAIxE,OAAOprL,EAKT74F,QAAQ8M,EAAUtH,EAASC,EAAWC,EAAQC,GAC5C7G,KAAKwpB,MAAKhjB,IACRwH,EAASxH,IACF,IACNE,EAASC,EAAWC,EAAQC,GAMjCmnB,MAAMhgB,EAAUtH,EAASC,EAAWC,EAAQC,GAC1C,IAAI2iB,GAAO,EACX,MAAMwE,GAAShuB,KAAKwpB,MAAKhjB,IACvBgjB,GAAO,GACCxb,EAASxH,KAChBE,EAASC,EAAWC,EAAQC,GAC/B,OAAO2iB,GAAQwE,EAMjBxE,KAAKxb,EAAUtH,EAASC,EAAWC,EAAQC,GACzC,IAAK,MAAML,KAAQxG,KAAKglR,UAAUt+Q,EAASC,EAAWC,EAAQC,GAC5D,GAAImH,EAASxH,GACX,OAAO,EACX,OAAO,EAKT++Q,YAAY5+Q,EAAWC,EAAQC,GAC7B,MAAMgV,EAAU,GAEhB,OADA7b,KAAKwlR,aAAY37P,IAAOhO,EAAQpW,KAAKokB,KAAOljB,EAAWC,EAAQC,GACxDgV,EAKT2pQ,YAAYx3Q,EAAUrH,EAAWC,EAAQC,GAEvCF,EAAYA,GAAa4zQ,EAAS5zQ,GAClCC,EAASA,GAAU2zQ,EAAS3zQ,GAC5BC,EAAQA,GAAS0zQ,EAAS1zQ,GAE1B,MAAMuiQ,EAAMppQ,KAAKgjR,KAAM3pI,EAASr5I,KAAK0kR,WAAW79Q,GAChD,IAAI88H,EAASwhJ,EAAaC,EAI1B,GAHAp3Q,EAAWhO,KAAK2kR,gBAAgB32Q,KAG5BizI,GAASt6I,MAAgBw+Q,EAAc/b,EAAIziQ,KAC3Cs6I,GAASr6I,MAAgBw+Q,EAAchc,EAAIxiQ,KAG/C,IAAKC,KAASwyI,GAER1V,EAAU0V,EAAOxyI,MAEfs+Q,EACEC,EAEFplR,KAAKwkR,aAAa7gJ,EAAQ+6D,WAAYymF,EAAaC,EAAUp3Q,GAG7DhO,KAAKukR,YAAY5gJ,EAAQk9H,SAAUskB,EAAan3Q,GAE3Co3Q,EAEPplR,KAAKskR,YAAY3gJ,EAAQytB,QAASg0H,EAAUp3Q,GAG5ChO,KAAKqkR,MAAM1gJ,EAAQk9H,SAAU7yP,IAOrCy3Q,cAAc/+Q,EAASE,EAAQC,GAC7B,MAAMgV,EAAU,GAEhB,OADA7b,KAAK0lR,eAAcnjR,IAAOsZ,EAAQpW,KAAKlD,KAAOmE,EAASE,EAAQC,GACxDgV,EAKT6pQ,cAAc13Q,EAAUtH,EAASE,EAAQC,GAEvCH,EAAUA,GAAW6zQ,EAAS7zQ,GAC9BE,EAASA,GAAU2zQ,EAAS3zQ,GAC5BC,EAAQA,GAAS0zQ,EAAS1zQ,GAE1B,MAAMuiQ,EAAMppQ,KAAKgjR,KAAM3pI,EAASr5I,KAAK0kR,WAAW79Q,GAChD,IAAI88H,EAASuhJ,EAAWE,EAIxB,GAHAp3Q,EAAWhO,KAAK2kR,gBAAgB32Q,KAG5BizI,GAASv6I,MAAcw+Q,EAAY9b,EAAI1iQ,KACvCu6I,GAASr6I,MAAcw+Q,EAAYhc,EAAIxiQ,KAG3C,IAAKC,KAASwyI,GAER1V,EAAU0V,EAAOxyI,MAEfq+Q,EACEE,EAEFplR,KAAKwkR,aAAa7gJ,EAAQytB,QAASg0H,EAAUF,EAAWl3Q,GAGxDhO,KAAKskR,YAAY3gJ,EAAQk9H,SAAUqkB,EAAWl3Q,GAEzCo3Q,EAEPplR,KAAKukR,YAAY5gJ,EAAQ+6D,WAAY0mF,EAAUp3Q,GAG/ChO,KAAKqkR,MAAM1gJ,EAAQ+6D,WAAY1wL,IAOvC23Q,WAAWj/Q,EAASC,EAAWE,GAC7B,MAAMgV,EAAU,GAEhB,OADA7b,KAAK4lR,YAAWlkR,IAAOma,EAAQpW,KAAK/D,KAAOgF,EAASC,EAAWE,GACxDgV,EAKT+pQ,WAAW53Q,EAAUtH,EAASC,EAAWE,GAEvCH,EAAUA,GAAW6zQ,EAAS7zQ,GAC9BC,EAAYA,GAAa4zQ,EAAS5zQ,GAClCE,EAAQA,GAAS0zQ,EAAS1zQ,GAE1B,MAAMuiQ,EAAMppQ,KAAKgjR,KAAM3pI,EAASr5I,KAAK0kR,WAAW79Q,GAChD,IAAI88H,EAASuhJ,EAAWC,EAIxB,GAHAn3Q,EAAWhO,KAAK2kR,gBAAgB32Q,KAG5BizI,GAASv6I,MAAgBw+Q,EAAc9b,EAAI1iQ,KAC3Cu6I,GAASt6I,MAAgBw+Q,EAAc/b,EAAIziQ,KAG/C,IAAKE,KAASwyI,GAER1V,EAAU0V,EAAOxyI,MAEfq+Q,EACEC,EAEFnlR,KAAKwkR,aAAa7gJ,EAAQk9H,SAAUqkB,EAAWC,EAAan3Q,GAG5DhO,KAAKukR,YAAY5gJ,EAAQytB,QAAS8zH,EAAWl3Q,GAExCm3Q,EAEPnlR,KAAKskR,YAAY3gJ,EAAQ+6D,WAAYymF,EAAan3Q,GAGlDhO,KAAKqkR,MAAM1gJ,EAAQytB,QAASpjJ,IAOpC63Q,UAAUn/Q,EAASC,EAAWC,GAC5B,MAAMiV,EAAU,GAEhB,OADA7b,KAAK8lR,WAAUprP,IAAO7e,EAAQpW,KAAKi1B,KAAOh0B,EAASC,EAAWC,GACvDiV,EAKTiqQ,UAAU93Q,EAAUtH,EAASC,EAAWC,GACtC,IAAK,MAAMC,KAAS7G,KAAK+iR,QACvB/iR,KAAKwpB,MAAKhjB,IACRwH,EAASxH,EAAKK,QACP,IACNH,EAASC,EAAWC,EAAQC,GAKnCk/Q,gBAAgBC,GACd,IAAI9iR,EAAM9B,EAEV,GAAI4kR,EAEF,IADA9iR,EAAO8iR,EAAgB,KAAKA,IAAiB5kR,EAAQ,EAC9CpB,KAAKgjR,KAAK9/Q,IACfA,EAAO8iR,EAAgB5kR,SAIzB,GAAK8B,EAAO,MAAMlD,KAAKkjR,wBAChBljR,KAAKgjR,KAAK9/Q,IAKnB,OAFAlD,KAAKgjR,KAAK9/Q,KAAUlD,KAAKkjC,IACzBljC,KAAKijR,UAAUjjR,KAAKkjC,KAAOhgC,EACpBlD,KAAKmjR,SAASnvJ,UAAU9wH,EAAK+e,OAAO,IAK7CgkQ,cAAa,OAAEhlP,GAAS,EAAK,aAAE+hL,GAAe,GAAU,IACtD,MAAM89D,EAAQ,GACRlqM,EAAUosI,EAAe,KAAO,EACxB,CAAE/9M,EAAMyR,KAAc,MAAM,IAAIlW,MAAM,GAAGyE,EAAK5F,SAASqX,MAG/DwvQ,EAAQlmR,KAAKo+H,SAAS,KAAM,WAAqB,UAAoB,MACrE1a,EAAWziF,EAAS,IAAIilP,GAAS,GAsFvC,OArFAA,EAAMhlR,SAAQilR,IACZ,MAAMrxL,EAAQ,GACd,IACI4sB,EACA0kK,EAFAC,GAAY,EAGhB,MAAMx/Q,EAAQs/Q,EAASt/Q,MAGvB,IAAIsjI,EAAUg8I,EAASz/Q,QACvB,KAAOyjI,IAAYk8I,GAAW,CAC5B,MAAMC,EAActmR,KAAKo+H,SAAS,KAAM,KAAM+L,EAAS,MACjDo8I,EAAevmR,KAAKo+H,SAAS+L,EAAS,KAAM,KAAM,MACxD,IAAI3jI,EAAMkjF,EAAQ,KAAM32D,EAAO,KAAMw3C,EAAS,KAG9C,IAAK,IAAI3xD,EAAI,EAAGA,EAAI2tQ,EAAaxgR,SAAWsgR,EAAWztQ,IACrDpS,EAAO+/Q,EAAa3tQ,GACfpS,EAAKK,MAAMuG,OAAOvG,GAEd66G,EACP2kK,EAAYzvM,EAAQuzD,EAAS,yBAGtB3jI,EAAKG,UAAUtH,QAAU,YAC5BqqF,EACF28L,EAAYzvM,EAAQuzD,EAAS,+BAE7BzmB,EAASj+G,KAAKikF,EAAQljF,GAIjBA,EAAKG,UAAUtH,QAAU,WAC5B0zB,EACFszP,EAAYzvM,EAAQuzD,EAAS,8BAE7BzmB,EAASj+G,KAAKstB,EAAOvsB,GAIhB8/Q,EAAYvgR,OACnBsgR,EAAYzvM,EAAQuzD,EAAS,gCAE7BzoB,EAAOl7G,EACP4/Q,EAAU,WAzBVC,EAAYzvM,EAAQuzD,EAAS,gCA+BjC,IAAK,IAAIvxH,EAAI,EAAGA,EAAI0tQ,EAAYvgR,SAAWsgR,IAAaztQ,EACtDpS,EAAO8/Q,EAAY1tQ,GACf8oG,EACF2kK,EAAYzvM,EAAQuzD,EAAS,2BAEtB3jI,EAAKG,UAAUtH,QAAU,WAC5BkrE,EACF87M,EAAYzvM,EAAQuzD,EAAS,8BAE7B5/D,EAAS/jE,GAGXk7G,EAAOl7G,EACP4/Q,EAAU,UAKT18L,EAGHoL,EAAMt7C,QAAQkwC,EAAM9iF,QAFpBy/Q,EAAYzvM,EAAQuzD,EAAS,oBAG/BA,EAAU5/D,GAAUA,EAAO7jE,QAIzB2/Q,EACFplP,GAAS,EAEFygF,IACPo/J,EAAMp/J,EAAK0kK,GAAS/mR,OAASy1F,MAI7B7zD,GACFjhC,KAAKm3I,YAAYzzB,GACZo9J,EAMT,EAAE5zQ,OAAOC,kBACAnN,KAAKglR,aAKhB,SAAS/jI,GAASp3H,GAChB,MAAoB,iBAANA,GAAkBA,aAAa1J,OAM/C,MAAMmlQ,WAAqC,GAAA15Q,SACzCnM,YAAY+mR,EAAS9/Q,EAASC,EAAWC,EAAQC,GAC/ClH,MAAM,CAAE+hI,YAAY,IACpBxiI,OAAO4W,OAAO9V,KAAM,CAAEwmR,QAAAA,EAAS9/Q,QAAAA,EAASC,UAAAA,EAAWC,OAAAA,EAAQC,MAAAA,IAGzD4/Q,eACF,IAAKzmR,KAAK0mR,UAAW,CACnB,MAAM,QAAEF,EAAO,MAAE3/Q,EAAK,OAAED,EAAM,UAAED,EAAS,QAAED,GAAY1G,KACjDm4H,EAAQquJ,EAAQpoJ,SAAS13H,EAASC,EAAWC,EAAQC,GAC3D7G,KAAK0mR,UAAY,IAAI7D,GAAQ1qJ,EAAO,CAAEvmH,QAAS40Q,EAAQrD,WAEzD,OAAOnjR,KAAK0mR,UAEVz5Q,WACF,OAAOjN,KAAKymR,SAASx5Q,KAGvBpB,QACE,IAAK,MAAMrF,KAAQxG,KACjBA,KAAKyF,KAAKe,GACZxG,KAAKyF,KAAK,MAGZuY,IAAIxX,GACF,OAAOxG,KAAKymR,SAASzoQ,IAAIxX,GAG3B3C,OAAO2C,GACL,OAAOxG,KAAKymR,SAAS5iR,OAAO2C,GAG9B0B,IAAI1B,GACF,OAAOxG,KAAKymR,SAASv+Q,IAAI1B,GAG3BsiB,MAAMpiB,EAASC,EAAWC,EAAQC,GAChC,OAAO,IAAIy+Q,GAA6BtlR,KAAKymR,SAAU//Q,EAASC,EAAWC,EAAQC,GAGrF,EAAEqG,OAAOC,kBACAnN,KAAK0mR,WAAa1mR,KAAKwmR,QAAQxB,UAAUhlR,KAAK0G,QAAS1G,KAAK2G,UAAW3G,KAAK4G,OAAQ5G,KAAK6G,QChzBrF,MAAM8/Q,WAAuB,GAAApmJ,UAC1C9gI,YAAY4R,GAMV,IAAIotH,EAAQ2hE,EALZzgM,MAAM,CAAE2oI,eAAe,IACvBtoI,KAAKqtH,eAAeqU,YAAa,EAGlB,IAAIk5I,EAASvpQ,GAErB0W,MAAM,CACXvc,GAAI,CAACo6H,EAAO53H,KACV,OAAQ43H,GACR,IAAK,OAAQnH,EAASzwH,EAAU,MAChC,IAAK,MAASoyL,EAAQpyL,MAKxB,CAACjC,EAAOvF,KAAWuF,GAAS/L,KAAKgM,KAAK,QAASD,IAAUvF,GAAQxG,KAAKyF,KAAKe,MAE3E,CAACm6B,EAAQ6yB,KAAUxzD,KAAKgM,KAAK,SAAU20B,EAAQ6yB,MAIjDxzD,KAAKwtH,WAAa,CAAC9kC,EAAO2C,EAAU0J,KAAW0pC,EAAO/1C,GAAQqM,KAC9D/0F,KAAK+mI,OAAShyC,IAAUqrG,IAASrrG,KAInCk5G,OAAOxlH,GAIL,OAHAA,EAAOj9E,GAAG,QAASk9E,IAAW1oF,KAAKya,MAAMiuE,MACzCD,EAAOj9E,GAAG,OAAS,KAAaxL,KAAK4qF,SACrCnC,EAAOj9E,GAAG,SAASO,IAAW/L,KAAKgM,KAAK,QAASD,MAC1C/L,MChCI,MAAM4mR,WAAuB,GAAArmJ,UAC1C9gI,YAAY4R,GACV1R,MAAM,CAAE0rF,SAAU,OAAQ68C,oBAAoB,IAG9C,MAAM2+I,EAAS7mR,KAAKi2K,QAAU,IAAI0qG,GAAS,CACzClmQ,MAAO,CAACjU,EAAM6kF,EAAUr9E,KAAehO,KAAKyF,KAAKe,GAAOwH,GAAYA,KACpE48E,IAAK58E,IAAchO,KAAKyF,KAAK,MAAOuI,GAAYA,MAC/CqD,GAGHrR,KAAKwtH,WAAa,CAAChnH,EAAM6kF,EAAU0J,KAAW8xL,EAAO1E,QAAQ37Q,EAAMuuF,IACnE/0F,KAAK+mI,OAAShyC,IAAU8xL,EAAOj8L,IAAImK,IAIrCk5G,OAAOxlH,GAKL,OAJAA,EAAOj9E,GAAG,QAAUhF,IAAUxG,KAAKya,MAAMjU,MACzCiiF,EAAOj9E,GAAG,OAAU,KAAQxL,KAAK4qF,SACjCnC,EAAOj9E,GAAG,SAAUO,IAAW/L,KAAKgM,KAAK,QAASD,MAClD08E,EAAOj9E,GAAG,UAAU,CAACm1B,EAAQokD,KAAU/kF,KAAKi2K,QAAQosG,UAAU1hP,EAAQokD,MAC/D/kF,MCwBX,UACEy3O,MAAK,EACLrvJ,OAAM,EACN0+L,OAAM,GACNC,MAAK,GACLx4E,aAAY,GACZiK,aAAY,GACZhnM,KAAI,EAEJnD,YAAW,EAEX2rQ,KAAI,EACJjmJ,UAAS,EACTI,QAAO,EACPf,UAAS,EACTgB,SAAQ,EACRE,aAAY,EACZE,KAAI,EACJwyJ,OAAM,EAEN5M,WAAU,EACVG,SAAQ,qBCvEV,WACI,IAAIzxL,EAGNA,EADqB,iBAAXhpE,QAAuBA,OAC1BA,OAEA,EAAA4a,EAG6BsxC,EAAO5sE,QAC3C4sE,EAAO5sE,QAAU0pF,EAAK99E,QAAU89E,EAAK99E,QAAUA,EACpC89E,EAAK99E,UAChB89E,EAAK99E,QAAUA,GAIhB,IAAIi8Q,EAAOn+L,EAAKyoG,cAAgB,SAASvkL,GAAMujB,WAAWvjB,EAAI,IAG9D,SAASwZ,EAAKxZ,EAAI2pF,GACjB,OAAO,WACN3pF,EAAGqT,MAAMs2E,EAAS55E,YAIpB,IAAIhB,EAAUD,MAAMC,SAAW,SAAS1c,GAAS,MAAiD,mBAA1CH,OAAOsD,UAAUqL,SAASnL,KAAKrD,IAEvF,SAAS2L,EAAQgC,GAChB,GAAoB,iBAAThN,KAAmB,MAAM,IAAIkhB,UAAU,wCAClD,GAAkB,mBAAPlU,EAAmB,MAAM,IAAIkU,UAAU,kBAClDlhB,KAAKurK,OAAS,KACdvrK,KAAK2rH,OAAS,KACd3rH,KAAKknR,WAAa,GAElBC,EAAUn6Q,EAAIwZ,EAAKvb,EAASjL,MAAOwmB,EAAKtb,EAAQlL,OAGjD,SAASD,EAAOqnR,GACf,IAAIC,EAAKrnR,KACW,OAAhBA,KAAKurK,OAIT07G,GAAK,WACJ,IAAIlpJ,EAAKspJ,EAAG97G,OAAS67G,EAASE,YAAcF,EAASG,WACrD,GAAW,OAAPxpJ,EAAJ,CAIA,IAAIvuC,EACJ,IACCA,EAAMuuC,EAAGspJ,EAAG17J,QAEb,MAAOl9F,GAEN,YADA24P,EAASl8Q,OAAOujB,GAGjB24P,EAASn8Q,QAAQukF,QAXf63L,EAAG97G,OAAS67G,EAASn8Q,QAAUm8Q,EAASl8Q,QAAQm8Q,EAAG17J,WANrD3rH,KAAKknR,WAAWzhR,KAAK2hR,GAqBvB,SAASn8Q,EAAQirG,GAChB,IACC,GAAIA,IAAal2G,KAAM,MAAM,IAAIkhB,UAAU,6CAC3C,GAAIg1F,IAAiC,iBAAbA,GAA6C,mBAAbA,GAA0B,CACjF,IAAI/pG,EAAO+pG,EAAS/pG,KACpB,GAAoB,mBAATA,EAEV,YADAg7Q,EAAU3gQ,EAAKra,EAAM+pG,GAAW1vF,EAAKvb,EAASjL,MAAOwmB,EAAKtb,EAAQlL,OAIpEA,KAAKurK,QAAS,EACdvrK,KAAK2rH,OAASzV,EACdsxK,EAAO9kR,KAAK1C,MACX,MAAOyuB,GAAKvjB,EAAOxI,KAAK1C,KAAMyuB,IAGjC,SAASvjB,EAAOgrG,GACfl2G,KAAKurK,QAAS,EACdvrK,KAAK2rH,OAASzV,EACdsxK,EAAO9kR,KAAK1C,MAGb,SAASwnR,IACR,IAAK,IAAI5uQ,EAAI,EAAG8K,EAAM1jB,KAAKknR,WAAWnhR,OAAQ6S,EAAI8K,EAAK9K,IACtD7Y,EAAO2C,KAAK1C,KAAMA,KAAKknR,WAAWtuQ,IAEnC5Y,KAAKknR,WAAa,KAGnB,SAASO,EAAQH,EAAaC,EAAYt8Q,EAASC,GAClDlL,KAAKsnR,YAAqC,mBAAhBA,EAA6BA,EAAc,KACrEtnR,KAAKunR,WAAmC,mBAAfA,EAA4BA,EAAa,KAClEvnR,KAAKiL,QAAUA,EACfjL,KAAKkL,OAASA,EASf,SAASi8Q,EAAUn6Q,EAAIs6Q,EAAaC,GACnC,IAAIxyL,GAAO,EACX,IACC/nF,GAAG,SAAU3N,GACR01F,IACJA,GAAO,EACPuyL,EAAYjoR,OACV,SAAUwd,GACRk4E,IACJA,GAAO,EACPwyL,EAAW1qQ,OAEX,MAAO6qQ,GACR,GAAI3yL,EAAM,OACVA,GAAO,EACPwyL,EAAWG,IAIb18Q,EAAQxI,UAAiB,MAAI,SAAU+kR,GACtC,OAAOvnR,KAAKmM,KAAK,KAAMo7Q,IAGxBv8Q,EAAQxI,UAAU2J,KAAO,SAASm7Q,EAAaC,GAC9C,IAAIF,EAAKrnR,KACT,OAAO,IAAIgL,GAAQ,SAASC,EAASC,GACpCnL,EAAO2C,KAAK2kR,EAAI,IAAII,EAAQH,EAAaC,EAAYt8Q,EAASC,QAIhEF,EAAQ4nB,IAAM,WACb,IAAIlzB,EAAOoc,MAAMtZ,UAAU6gB,MAAM3gB,KAA0B,IAArBqa,UAAUhX,QAAgBgW,EAAQgB,UAAU,IAAMA,UAAU,GAAKA,WAEvG,OAAO,IAAI/R,GAAQ,SAAUC,EAASC,GACrC,GAAoB,IAAhBxL,EAAKqG,OAAc,OAAOkF,EAAQ,IACtC,IAAIuiF,EAAY9tF,EAAKqG,OACrB,SAASmgB,EAAItN,EAAGm0E,GACf,IACC,GAAIA,IAAuB,iBAARA,GAAmC,mBAARA,GAAqB,CAClE,IAAI5gF,EAAO4gF,EAAI5gF,KACf,GAAoB,mBAATA,EAEV,YADAA,EAAKzJ,KAAKqqF,GAAK,SAAUA,GAAO7mE,EAAItN,EAAGm0E,KAAQ7hF,GAIjDxL,EAAKkZ,GAAKm0E,EACU,KAAdS,GACLviF,EAAQvL,GAER,MAAOgoR,GACRx8Q,EAAOw8Q,IAGT,IAAK,IAAI9uQ,EAAI,EAAGA,EAAIlZ,EAAKqG,OAAQ6S,IAChCsN,EAAItN,EAAGlZ,EAAKkZ,QAKf5N,EAAQC,QAAU,SAAU5L,GAC3B,OAAIA,GAA0B,iBAAVA,GAAsBA,EAAMI,cAAgBuL,EACxD3L,EAGD,IAAI2L,GAAQ,SAAUC,GAC5BA,EAAQ5L,OAIV2L,EAAQE,OAAS,SAAU7L,GAC1B,OAAO,IAAI2L,GAAQ,SAAUC,EAASC,GACrCA,EAAO7L,OAIT2L,EAAQ28Q,KAAO,SAAU56Q,GACxB,OAAO,IAAI/B,GAAQ,SAAUC,EAASC,GACrC,IAAI,IAAI0N,EAAI,EAAG8K,EAAM3W,EAAOhH,OAAQ6S,EAAI8K,EAAK9K,IAC5C7L,EAAO6L,GAAGzM,KAAKlB,EAASC,OArL5B,oBCCA,IAAI4gC,EAEJkgC,EAAO5sE,QAAoC,mBAAnBwoR,eACpBA,eAAephQ,KAAuB,oBAAX1G,OAAyBA,OAAS,EAAA4a,GAE7DqjG,IAAOjyF,IAAYA,EAAU9gC,QAAQC,YACpCkB,KAAK4xH,GACLzxH,OAAM4e,GAAOqF,YAAW,KAAQ,MAAMrF,IAAO,yCCPlD,IAAI1pB,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAoBlD,GACzCkD,EAAa,EAAQ,OAAsBlD,GAC3CkD,EAAa,EAAQ,OAAuBlD,GAC5CkD,EAAa,EAAQ,OAAkBlD,GACvCkD,EAAa,EAAQ,OAAoBlD,GACzCkD,EAAa,EAAQ,OAAelD,GACpCkD,EAAa,EAAQ,OAAmBlD,+BCjBxCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQg0H,eAAY,EAapBh0H,EAAQg0H,UATR,MACI3zH,YAAYJ,GACRW,KAAK8G,SAAW,YAChB9G,KAAKX,MAAQA,EAEjB+N,OAAOC,GACH,QAASA,GAA4B,cAAnBA,EAAMvG,UAA4BuG,EAAMhO,QAAUW,KAAKX,sCCXjFH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQiP,iBAAc,EACtB,MAAMglH,EAAc,EAAQ,OACtBC,EAAiB,EAAQ,OACzBC,EAAY,EAAQ,OACpBC,EAAc,EAAQ,OACtBC,EAAS,EAAQ,OACjBC,EAAa,EAAQ,OAC3B,IAAIC,EAAqB,EA+GzBv0H,EAAQiP,YA3GR,MACI5O,YAAY4R,GACRrR,KAAK4zH,iBAAmB,EACxBviH,EAAUA,GAAW,GACrBrR,KAAK6zH,gBAAkBxiH,EAAQwiH,iBAAmB,MAAMF,OAO5DG,UAAUz0H,GACN,OAAO,IAAIm0H,EAAYO,UAAU10H,GASrC20H,UAAU30H,GACN,OAAO,IAAIg0H,EAAYD,UAAU/zH,GAAS,GAAGW,KAAK6zH,kBAAkB7zH,KAAK4zH,sBAY7EK,QAAQ50H,EAAO60H,GACX,OAAO,IAAIX,EAAUY,QAAQ90H,EAAO60H,GAQxC3tH,SAASlH,GACL,OAAO,IAAIq0H,EAAWU,SAAS/0H,GAKnCg1H,eACI,OAAOf,EAAegB,aAAaC,SAUvC/tH,KAAKE,EAASC,EAAWC,EAAQC,GAC7B,OAAO,IAAI4sH,EAAOe,KAAK9tH,EAASC,EAAWC,EAAQC,GAAS7G,KAAKq0H,gBAOrEI,SAASC,GAGL,OAAQA,EAAS5tH,UACb,IAAK,YACD,OAAO9G,KAAK8zH,UAAUY,EAASr1H,OACnC,IAAK,YACD,OAAOW,KAAKg0H,UAAUU,EAASr1H,OACnC,IAAK,UACD,OAAIq1H,EAAS1sH,SACFhI,KAAKi0H,QAAQS,EAASr1H,MAAOq1H,EAAS1sH,UAE5C0sH,EAASC,SAASvnH,OAAOmmH,EAAUY,QAAQS,YAGzC50H,KAAKi0H,QAAQS,EAASr1H,OAFlBW,KAAKi0H,QAAQS,EAASr1H,MAAOW,KAAKy0H,SAASC,EAASC,WAGnE,IAAK,WACD,OAAO30H,KAAKuG,SAASmuH,EAASr1H,OAClC,IAAK,eACD,OAAOW,KAAKq0H,eAChB,IAAK,OACD,OAAOr0H,KAAKwG,KAAKxG,KAAKy0H,SAASC,EAAShuH,SAAU1G,KAAKy0H,SAASC,EAAS/tH,WAAY3G,KAAKy0H,SAASC,EAAS9tH,QAAS5G,KAAKy0H,SAASC,EAAS7tH,SAQxJguH,SAASH,GACL,OAAO10H,KAAKy0H,SAASC,GAKzBI,wBACI90H,KAAK4zH,iBAAmB,gCCpHhC10H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQk1H,kBAAe,EAKvB,MAAMA,EACF70H,cACIO,KAAK8G,SAAW,eAChB9G,KAAKX,MAAQ,GAGjB+N,OAAOC,GACH,QAASA,GAA4B,iBAAnBA,EAAMvG,UAGhC1H,EAAQk1H,aAAeA,EACvBA,EAAaC,SAAW,IAAID,gCCjB5Bp1H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+0H,aAAU,EAClB,MAAMX,EAAc,EAAQ,OAI5B,MAAMW,EACF10H,YAAYJ,EAAO60H,GACfl0H,KAAK8G,SAAW,UAChB9G,KAAKX,MAAQA,EACqB,iBAAvB60H,GACPl0H,KAAKgI,SAAWksH,EAChBl0H,KAAK20H,SAAWR,EAAQY,qBAEnBb,GACLl0H,KAAKgI,SAAW,GAChBhI,KAAK20H,SAAWT,IAGhBl0H,KAAKgI,SAAW,GAChBhI,KAAK20H,SAAWR,EAAQS,YAGhCxnH,OAAOC,GACH,QAASA,GAA4B,YAAnBA,EAAMvG,UAA0BuG,EAAMhO,QAAUW,KAAKX,OACnEgO,EAAMrF,WAAahI,KAAKgI,UAAYqF,EAAMsnH,SAASvnH,OAAOpN,KAAK20H,WAG3Ev1H,EAAQ+0H,QAAUA,EAClBA,EAAQY,oBAAsB,IAAIvB,EAAYO,UAAU,yDACxDI,EAAQS,WAAa,IAAIpB,EAAYO,UAAU,uEC9B/C70H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ20H,eAAY,EAapB30H,EAAQ20H,UATR,MACIt0H,YAAYJ,GACRW,KAAK8G,SAAW,YAChB9G,KAAKX,MAAQA,EAEjB+N,OAAOC,GACH,QAASA,GAA4B,cAAnBA,EAAMvG,UAA4BuG,EAAMhO,QAAUW,KAAKX,oCCXjFH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQo1H,UAAO,EAuBfp1H,EAAQo1H,KAlBR,MACI/0H,YAAYiH,EAASC,EAAWC,EAAQC,GACpC7G,KAAK8G,SAAW,OAChB9G,KAAKX,MAAQ,GACbW,KAAK0G,QAAUA,EACf1G,KAAK2G,UAAYA,EACjB3G,KAAK4G,OAASA,EACd5G,KAAK6G,MAAQA,EAEjBuG,OAAOC,GAEH,QAASA,IAA6B,SAAnBA,EAAMvG,WAAwBuG,EAAMvG,WACnD9G,KAAK0G,QAAQ0G,OAAOC,EAAM3G,UAC1B1G,KAAK2G,UAAUyG,OAAOC,EAAM1G,YAC5B3G,KAAK4G,OAAOwG,OAAOC,EAAMzG,SACzB5G,KAAK6G,MAAMuG,OAAOC,EAAMxG,qCCrBpC3H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQg1H,cAAW,EAanBh1H,EAAQg1H,SATR,MACI30H,YAAYJ,GACRW,KAAK8G,SAAW,WAChB9G,KAAKX,MAAQA,EAEjB+N,OAAOC,GACH,QAASA,GAA4B,aAAnBA,EAAMvG,UAA2BuG,EAAMhO,QAAUW,KAAKX,4CCXhF,IAAImC,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAwBlD,iCCX7CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ41H,eAAiB51H,EAAQ61H,gBAAkB71H,EAAQ81H,gBAAkB91H,EAAQ+1H,QAAU/1H,EAAQg2H,SAAWh2H,EAAQi2H,UAAYj2H,EAAQk2H,mBAAqBl2H,EAAQm2H,UAAYn2H,EAAQo2H,aAAep2H,EAAQq2H,WAAar2H,EAAQs2H,0BAA4Bt2H,EAAQu2H,uBAAyBv2H,EAAQw2H,SAAWx2H,EAAQy2H,WAAaz2H,EAAQ02H,kBAAoB12H,EAAQ22H,aAAe32H,EAAQ42H,gBAAa,EACxZ,MAAMC,EAAY,EAAQ,OACpBtxH,EAAe,EAAQ,MACvBuxH,EAAc,EAAQ,OAoB5B,SAASH,EAAaI,EAAQC,GAG1B,MAAMC,EAAiBZ,EAAWC,EAA0BS,IACtDG,EAAiBb,EAAWC,EAA0BU,IAC5D,GAAIl3H,OAAO0N,KAAKypH,GAAgBtwH,SAAW7G,OAAO0N,KAAK0pH,GAAgBvwH,OACnE,OAAO,KAEX,IAAK,MAAM5E,KAAOk1H,EACd,GAAIA,EAAel1H,KAASm1H,EAAen1H,GACvC,OAAO,KAQf,OAAO20H,EAJaP,EAAUI,EAAuBQ,IACjCZ,EAAUI,EAAuBS,IACjCd,EAAmBa,GACnBb,EAAmBc,IAI3C,SAASN,EAAkBS,EAAaC,EAAaC,EAAaC,EAAaC,EAAiBC,GACvFD,IACDA,EAAkB,IAEjBC,IACDA,EAAkB,IAGtB,MAAOC,EAASC,GAAqBzB,EAAUkB,EAAaE,EAAaE,IAClEI,EAASC,GAAqB3B,EAAUmB,EAAaE,EAAaE,GAEzE,GAAI13H,OAAO0N,KAAKiqH,GAAS9wH,SAAW7G,OAAO0N,KAAKmqH,GAAShxH,OACrD,OAAO,KAEX,IAAK,MAAMkxH,KAAYJ,EACnB,IAAKjB,EAASmB,EAASF,EAAQI,IAC3B,OAAO,KAMf,IAAIC,EAAY,GAChB,IAAK,MAAMC,KAAcV,EAAa,CAClC,MAAMW,EAAmBzyH,EAAa8B,aAAa0wH,GAC7CE,EAAiBP,EAAkBM,GACzC,IAAK,MAAME,KAAoBN,EAC3B,GAAIA,EAAkBM,KAAsBD,EAAgB,CACxDH,EAAUE,GAAoBE,SACvBN,EAAkBM,GACzB,OAMZ,IAAKC,EAAYr4H,OAAO0N,KAAKsqH,GAAW/2E,OAAQs2E,EAAYzwH,IAAIrB,EAAa8B,cAAc05C,UACnFo3E,EAAY1B,EAAWqB,GAAW/2E,OAAQu2E,EAAY1wH,IAAIrB,EAAa8B,cAAc05C,QAAS,CAGlG+2E,EAAY,KACZ,IAAK,MAAMC,KAAcV,EAAa,CAElC,MAAMW,EAAmBzyH,EAAa8B,aAAa0wH,GACnD,IAAKN,EAAQO,GACT,IAAK,MAAMI,KAAcd,EAAa,CAElC,MAAMY,EAAmB3yH,EAAa8B,aAAa+wH,GACnD,IAAKT,EAAQO,IACLR,EAAkBM,KAAsBJ,EAAkBM,GAAmB,CAC7E,MAAMvoH,EAAOomH,EAAQiC,GACrBF,EAAYpB,EAAkBS,EAAaC,EAAaC,EAAaC,EAAax3H,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI+gH,GAAU,CAAE,CAACO,GAAmBroH,IAAS7P,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIihH,GAAU,CAAE,CAACO,GAAmBvoH,QAOnP,OAAOmoH,EAGX,SAASK,EAAYE,EAAQC,GACzB,GAAID,EAAO1xH,SAAW2xH,EAAO3xH,OACzB,OAAO,EAEX,IAAK,IAAI6S,EAAI6+G,EAAO1xH,OAAQ6S,KACxB,GAAI6+G,EAAO7+G,KAAO8+G,EAAO9+G,GACrB,OAAO,EAGf,OAAO,EAOX,SAASi9G,EAAW9mH,GAChB,MAAMmR,EAAM,GACZ,IAAK,MAAMuO,KAAK1f,EACZmR,EAAIza,KAAKsJ,EAAK0f,IAElB,OAAOvO,EASX,SAAS01G,EAAS7mH,EAAM1P,GACpB,IAAK,MAAMs4H,KAAa5oH,EACpB,GAAIA,EAAK4oH,KAAet4H,EACpB,OAAO,EAGf,OAAO,EAQX,SAASs2H,EAAuB9uH,GAC5B,OAAOA,EAAMyG,QAAQ9G,GAAS0vH,EAAY0B,UAAUpxH,GAAOnH,GAC7B,cAAnBA,EAAMyH,UACc,SAAnBzH,EAAMyH,UAAuBovH,EAAY2B,eAAex4H,GAAOmqB,MAAKpY,GAA0B,cAAlBA,EAAKtK,eASjG,SAAS4uH,EAA0B7uH,GAC/B,OAAOA,EAAMyG,QAAQ9G,GAAS0vH,EAAY4B,WAAWtxH,GAAOnH,GAC9B,cAAnBA,EAAMyH,YACe,SAAnBzH,EAAMyH,UAAuBovH,EAAY2B,eAAex4H,GAAOmqB,MAAKpY,GAA0B,cAAlBA,EAAKtK,gBASlG,SAAS2uH,EAAW5uH,GAChB,MAAMzF,EAAQ,GACd,IAAK,MAAMoF,KAAQK,EACfzF,EAAMgL,KAAKC,UAAU1H,EAAaqX,iBAAiBxV,MAAU,EAEjE,OAAOpF,EAQX,SAASo0H,EAAauC,GAClB,OAAO74H,OAAO0N,KAAKmrH,GAAc/xH,KAAKstB,GAAQ3uB,EAAaqzH,iBAAiB5rH,KAAK2b,MAAMuL,MAS3F,SAASiiG,EAAU1uH,GACf,OAAO2uH,EAAaC,EAAW5uH,IAQnC,SAASyuH,EAAmBzuH,GACxB,OAAOqvH,EAAY+B,UAAUpxH,EAAMb,KAAKQ,GAAS0vH,EAAYgC,cAAchC,EAAY2B,eAAerxH,MACjG+S,QAAO,CAACqE,EAAKmvE,IAAQnvE,EAAIa,OAAOsuE,IAAM,KAY/C,SAASsoC,EAAU8C,EAAOC,EAAOC,GAC7B,MAAMC,EAASp5H,OAAO4W,OAAO,GAAIuiH,GAC3BE,EAAmB,GACzB,IAAIC,GAAa,EAGjB,KAAOA,GAAY,CACf,MAAMC,EAA4Bv5H,OAAO0N,KAAK0rH,GAAQvyH,OACtD,IAAK,MAAMqL,KAAQgnH,EAAO,CACtB,MAAMM,EAAa/zH,EAAa8B,aAAa2K,GAC7C,IAAKknH,EAAOI,GAAa,CACrB,MAAOC,EAAU5pH,GAAQqmH,EAAShkH,EAAM+mH,EAAOG,GAC3CK,IACAL,EAAOI,GAAc3pH,GAEzBwpH,EAAiBG,GAAc3pH,GAIvC,MAAM6pH,EAAU,GAChB,IAAK,MAAMC,KAAWN,EAAkB,CACpC,MAAMxpH,EAAOwpH,EAAiBM,QACR/2H,IAAlB82H,EAAQ7pH,GACR6pH,EAAQ7pH,GAAQ8pH,EAGhBD,EAAQ7pH,IAAQ,EAGxB,IAAK,MAAMA,KAAQ6pH,EAAS,CACxB,MAAMv5H,EAAQu5H,EAAQ7pH,GAClB1P,IACAi5H,EAAOj5H,GAAS0P,GAIxBypH,EAAaC,IAA8Bv5H,OAAO0N,KAAK0rH,GAAQvyH,OAEnE,MAAO,CAACuyH,EAAQC,GAkBpB,SAASnD,EAAShkH,EAAM+mH,EAAOG,GAC3B,MAAMQ,EAAiB,GACvB,IAAIH,GAAW,EACf,IAAK,MAAMnyH,KAAQ2xH,EAAO,CACtB,MAAMC,EAAQlC,EAAY2B,eAAerxH,GACzC,GAAI4xH,EAAM5uG,MAAMuvG,GAAaA,EAAS3rH,OAAOgE,KAAQ,CACjD0nH,EAAerzH,KAAKyvH,EAAgB1uH,EAAM8xH,EAAQlnH,IAClD,IAAK,MAAM2nH,KAAYX,EACdpD,EAAe+D,EAAUT,IAAYS,EAAS3rH,OAAOgE,KACtDunH,GAAW,IAM3B,MAAO,CAACA,EADKxD,EAAQ2D,EAAe34E,OAAO3/B,KAAK,MASpD,SAAS20G,EAAQjsH,GACb,OAAO+sH,EAAUnxE,OAAOrV,OAAOvmC,GAAM+b,OAAO,OAUhD,SAASiwG,EAAgB1uH,EAAM8xH,EAAQlnH,GACnC,OAAO8kH,EAAY8C,SAASxyH,GAAMR,KAAK+yH,GAAa9D,EAAgB8D,EAAUT,EAAQlnH,KAAOoP,KAAK,KAUtG,SAASy0G,EAAgB7jH,EAAMknH,EAAQttF,GACnC,OAAI55B,EAAKhE,OAAO49B,GACL,QAEgB,cAAlB55B,EAAKtK,SACHwxH,EAAO3zH,EAAa8B,aAAa2K,KAAU,SAE3B,SAAlBA,EAAKtK,SACH,IAAIouH,EAAgB9jH,EAAMknH,EAAQttF,MAGlCrmC,EAAa8B,aAAa2K,GAczC,SAAS4jH,EAAe5jH,EAAMknH,GAC1B,MAA0B,cAAlBlnH,EAAKtK,YACc,SAAlBsK,EAAKtK,UAAuBovH,EAAY2B,eAAezmH,GAAMoY,MAAKyvG,IAAYjE,EAAeiE,EAASX,SAAgBA,EAAO3zH,EAAa8B,aAAa2K,IA7UpKhS,EAAQ42H,WAHR,SAAoBG,EAAQC,GACxB,QAASL,EAAaI,EAAQC,IA+BlCh3H,EAAQ22H,aAAeA,EA6DvB32H,EAAQ02H,kBAAoBA,EAwB5B12H,EAAQy2H,WAAaA,EAerBz2H,EAAQw2H,SAAWA,EAYnBx2H,EAAQu2H,uBAAyBA,EAYjCv2H,EAAQs2H,0BAA4BA,EAapCt2H,EAAQq2H,WAAaA,EASrBr2H,EAAQo2H,aAAeA,EAUvBp2H,EAAQm2H,UAAYA,EAUpBn2H,EAAQk2H,mBAAqBA,EAkD7Bl2H,EAAQi2H,UAAYA,EAiCpBj2H,EAAQg2H,SAAWA,EASnBh2H,EAAQ+1H,QAAUA,EAWlB/1H,EAAQ81H,gBAAkBA,EAsB1B91H,EAAQ61H,gBAAkBA,EAe1B71H,EAAQ41H,eAAiBA,sCC9VzB,IAAIxzH,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ85H,iCAAmC95H,EAAQ+5H,yBAA2B/5H,EAAQg6H,WAAah6H,EAAQi6H,MAAQj6H,EAAQk6H,aAAU,EACrI,MAAMnrH,EAAqB,EAAQ,OAC7BorH,EAAY,EAAQ,OACpBC,EAAe,EAAQ,OAC7Bl3H,EAAa,EAAQ,OAAkBlD,GACvCkD,EAAa,EAAQ,OAAuBlD,GAC5CkD,EAAa,EAAQ,OAAqBlD,GAC1C,MAAMq6H,EAAK,IAAItrH,EAAmBE,YAE5BqrH,EAAa,IAAIF,EAAaG,WAYpC,SAASL,EAAQrF,EAASj6E,GACtB,OAAO0/E,EAAWJ,QAAQrF,EAASj6E,GAZvC0/E,EAAWE,gBAAgB,IAAIL,EAAUM,kBAAqBN,EAAUM,kBAAkBC,MAAM9zH,KAAIoxB,GAAKqiG,EAAG3F,UAAU18F,KAAK,CAAC,WAC5HsiG,EAAWE,gBAAgB,IAAIL,EAAUQ,mBAAsB,CAACR,EAAUQ,mBAAmBC,MAAMh0H,KAAIoxB,GAAKqiG,EAAG3F,UAAU18F,KAAK,CAAC,YAC/HsiG,EAAWE,gBAAgB,IAAIL,EAAUU,wBAA2BV,EAAUU,wBAAwBH,MAAM9zH,KAAIoxB,GAAKqiG,EAAG3F,UAAU18F,KAAK,CAAC,WACxIsiG,EAAWE,gBAAgB,IAAIL,EAAUW,yBAA4BX,EAAUW,yBAAyBJ,MAAM9zH,KAAIoxB,GAAKqiG,EAAG3F,UAAU18F,KAAK,CAAC,WAC1IsiG,EAAWE,gBAAgB,IAAIL,EAAUY,gBAAmBZ,EAAUY,gBAAgBL,MAAM9zH,KAAIoxB,GAAKqiG,EAAG3F,UAAU18F,KAAK,CAAC,WAUxHh4B,EAAQk6H,QAAUA,EAmBlBl6H,EAAQi6H,MAZR,SAAeh6H,EAAOgS,GAUlB,OARIA,GAAW,cAAeA,IAC1BA,EAAU,CAAE1E,YAAa0E,KAG7BA,EAAUA,GAAW,MACLA,EAAQ1E,cACpB0E,EAAQ1E,YAAc8sH,GAEnBC,EAAWL,MAAMh6H,EAAOgS,IAiBnCjS,EAAQg6H,WANR,SAAoBhoH,EAAM4oC,GACtB,MAAsB,YAAlB5oC,EAAKtK,SACEwyH,EAAQloH,EAAM4oC,GAElB5oC,EAAK/R,OAShBD,EAAQ+5H,yBAHR,WACI,OAAOO,EAAWP,4BAStB/5H,EAAQ85H,iCAHR,WACI,OAAOQ,EAAWR,gECjFtBh6H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,gCCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQu6H,gBAAa,EA4DrBv6H,EAAQu6H,WAxDR,MACIl6H,cACIO,KAAKo6H,sBAAwB,GAC7Bp6H,KAAKq6H,gBAAkB,GACvBr6H,KAAKs6H,cAAgB,GAEzBlwH,4BAA4B6pH,GACxB,MAAM,IAAIzzH,MAAM,eAAeyzH,EAAQU,SAASt1H,iBAAiB40H,EAAQ50H,UAE7Eu6H,gBAAgB1xC,EAASqyC,EAAcC,GACnC,IAAK,MAAMC,KAAeF,EACtBv6H,KAAKo6H,sBAAsB30H,KAAKg1H,GAChCz6H,KAAKq6H,gBAAgBI,EAAYp7H,OAAS6oF,EAE9C,IAAK,MAAMwyC,KAAsBF,EAAqB,CAClD,IAAIG,EAAwB36H,KAAKs6H,cAAcI,GAC1CC,IACD36H,KAAKs6H,cAAcI,GAAsBC,EAAwB,IAErEA,EAAsBl1H,KAAKyiF,IAGnCoxC,QAAQrF,EAASj6E,GACb,MAAMkuC,EAAUloF,KAAKq6H,gBAAgBpG,EAAQU,SAASt1H,OACtD,OAAI6oF,EACOA,EAAQoxC,QAAQrF,EAASj6E,GAGzBi6E,EAAQ50H,MAGvBg6H,MAAMh6H,EAAOgS,GACT,MAAMoK,EAAWzb,KAAKs6H,qBAAqBj7H,GAC3C,GAAIoc,EACA,IAAK,MAAMysE,KAAWzsE,EAAU,CAC5B,MAAM+zE,EAAMtH,EAAQmxC,MAAMh6H,EAAOgS,GACjC,GAAIm+E,EACA,OAAOA,EAInB,MAAM,IAAIhvF,MAAM,8BAA8BnB,MAKlD85H,2BACI,OAAOn5H,KAAKo6H,sBAKhBlB,mCACI,OAAOh6H,OAAO0N,KAAK5M,KAAKs6H,+CC1DhCp7H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ26H,wBAAqB,EAC7B,MAAMP,EAAe,EAAQ,OAI7B,MAAMO,EACFT,QAAQrF,EAASj6E,GACb,OAAQi6E,EAAQ50H,OACZ,IAAK,OAIL,IAAK,IACD,OAAO,EAHX,IAAK,QAIL,IAAK,IACD,OAAO,EAKf,OAHI26C,GACAw/E,EAAaG,WAAWiB,qBAAqB3G,IAE1C,EAEXoF,MAAMh6H,GAAO,SAAEs1H,EAAQ,YAAEhoH,IACrB,OAAOA,EAAYsnH,QAAQ50H,EAAQ,OAAS,QAASs1H,GAAYhoH,EAAYmnH,UAAUiG,EAAmBC,QAGlH56H,EAAQ26H,mBAAqBA,EAC7BA,EAAmBC,KAAO,yEC5B1B96H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+6H,qBAAkB,EAC1B,MAAMX,EAAe,EAAQ,OAI7B,MAAMW,EACFb,QAAQrF,EAASj6E,GAKb,OAJIA,IAAai6E,EAAQ50H,MAAMypB,MAAMqxG,EAChCU,WAAW5G,EAAQU,SAASt1H,MAAM4iB,OAAO,GAAIgyG,EAAQU,SAASt1H,MAAM0G,WACrEyzH,EAAaG,WAAWiB,qBAAqB3G,GAEzCA,EAAQU,SAASt1H,OACrB,IAAK,wCACD,OAAO,IAAImJ,KAAK,EAAG,EAAGwZ,SAASiyG,EAAQ50H,MAAO,KAClD,IAAK,6CACD,MAAMy7H,EAAgB7G,EAAQ50H,MAAMyhB,MAAM,KAC1C,OAAO,IAAItY,KAAK,EAAGwZ,SAAS84G,EAAc,GAAI,IAAM,EAAG94G,SAAS84G,EAAc,GAAI,KACtF,IAAK,yCACD,OAAO,IAAItyH,KAAKyrH,EAAQ50H,MAAQ,UACpC,IAAK,8CACD,OAAO,IAAImJ,KAAKyrH,EAAQ50H,MAAQ,OACpC,QACI,OAAO,IAAImJ,KAAKyrH,EAAQ50H,QAGpCg6H,MAAMh6H,GAAO,SAAEs1H,EAAQ,YAAEhoH,IAGrB,GAFAgoH,EAAWA,GAAYhoH,EAAYmnH,UAAUqG,EAAgBL,MAAM,MAE7Dz6H,aAAiBmJ,MACnB,OAAO,KAEX,MAAM0qB,EAAO7zB,EACb,IAAI07H,EACJ,OAAQpG,EAASt1H,OACb,IAAK,wCACD07H,EAAc56G,OAAO+S,EAAKipC,cAC1B,MACJ,IAAK,6CACD4+D,EAAe7nG,EAAKgpC,cAAgB,EAAK,IAAMhpC,EAAKipC,aACpD,MACJ,IAAK,yCACD4+D,EAAc56G,OAAO+S,EAAK+oC,kBAC1B,MACJ,IAAK,8CACD8+D,EAAc7nG,EAAK+oC,iBAAmB,KAAO/oC,EAAKgpC,cAAgB,GAClE,MACJ,IAAK,wCACD6+D,EAAc7nG,EAAKxY,cAAc+F,QAAQ,OAAQ,IACjD,MACJ,QACIs6G,EAAc7nG,EAAKxY,cAE3B,OAAO/N,EAAYsnH,QAAQ8G,EAAapG,IAGhDv1H,EAAQ+6H,gBAAkBA,EAC1BA,EAAgBL,MAAQ,CACpB,4CACA,wCACA,wCACA,6CACA,yCACA,+CAEJK,EAAgBU,WAAa,CACzB3nG,KAAM,mCACN8nG,SAAU,yHACVC,KAAM,WACNC,UAAW,sBACXC,MAAO,WACPC,WAAY,qDCvEhBl8H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ66H,6BAA0B,EAClC,MAAMT,EAAe,EAAQ,OAI7B,MAAMS,EACFX,QAAQrF,EAASj6E,GACb,MAAM0zC,EAASj6D,WAAWwgG,EAAQ50H,OAOlC,OANI26C,GACI4mB,MAAM8sB,IACN8rC,EAAaG,WAAWiB,qBAAqB3G,GAI9CvmC,EAEX2rC,MAAMh6H,GAAO,SAAEs1H,EAAQ,YAAEhoH,IAErB,OADAgoH,EAAWA,GAAYhoH,EAAYmnH,UAAUmG,EAAwBH,MAAM,IACvEl5D,MAAMvhE,GACCsN,EAAYsnH,QAAQ,MAAOU,GAEjC5yD,SAAS1iE,GAGVA,EAAQ,GAAM,EACP,KAEJsN,EAAYsnH,QAAQ50H,EAAMg8H,cAAc,IAAI56G,QAAQ,aAAc,OAAQk0G,GALtEhoH,EAAYsnH,QAAQ50H,EAAQ,EAAI,MAAQ,OAAQs1H,IAQnEv1H,EAAQ66H,wBAA0BA,EAClCA,EAAwBH,MAAQ,CAC5B,0CACA,2CACA,wECnCJ56H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ86H,8BAA2B,EACnC,MAAMV,EAAe,EAAQ,OAI7B,MAAMU,EACFZ,QAAQrF,EAASj6E,GACb,MAAM0zC,EAAS1rE,SAASiyG,EAAQ50H,MAAO,IAOvC,OANI26C,IACI4mB,MAAM8sB,IAAWumC,EAAQ50H,MAAMyY,QAAQ,MAAQ,IAC/C0hH,EAAaG,WAAWiB,qBAAqB3G,GAI9CvmC,EAEX2rC,MAAMh6H,GAAO,SAAEs1H,EAAQ,YAAEhoH,IACrB,OAAOA,EAAYsnH,QAAQ9zG,OAAO9gB,GAAQs1H,IAClCt1H,GAAS66H,EAAyBoB,SAAWj8H,GAAS66H,EAAyBqB,QAC7E5uH,EAAYmnH,UAAUoG,EAAyBJ,MAAM,IACrDntH,EAAYmnH,UAAUoG,EAAyBJ,MAAM,OAGvE16H,EAAQ86H,yBAA2BA,EACnCA,EAAyBJ,MAAQ,CAC7B,2CACA,wCACA,uCACA,wCACA,yCACA,mDACA,sDACA,sDACA,mDACA,gDACA,+CACA,gDACA,kDAEJI,EAAyBoB,QAAU,WACnCpB,EAAyBqB,SAAW,uCCzCpCr8H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQy6H,uBAAoB,EAI5B,MAAMA,EACFP,QAAQrF,GACJ,OAAOA,EAAQ50H,MAEnBg6H,MAAMh6H,GAAO,SAAEs1H,EAAQ,YAAEhoH,IACrB,OAAOA,EAAYsnH,QAAQ50H,EAAOs1H,IAG1Cv1H,EAAQy6H,kBAAoBA,EAC5BA,EAAkBC,MAAQ,CACtB,0CACA,oDACA,0CACA,gDACA,4CACA,wCACA,0CACA,2CACA,yCACA,6CACA,wDACA,wCACA,iFC3BJ,IAAIt4H,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAyBlD,GAC9CkD,EAAa,EAAQ,OAAsBlD,GAC3CkD,EAAa,EAAQ,OAA8BlD,GACnDkD,EAAa,EAAQ,OAA+BlD,GACpDkD,EAAa,EAAQ,OAAwBlD,iCCf7CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQywM,iBAAc,EACtB,MAAMvB,EAAO,EAAQ,OAgBrBlvM,EAAQywM,YANR,SAAqBpnH,GACjB,MAAM7nD,EAAQ,IAAI0tK,EAAKy4E,MACvB,OAAO,IAAI/7Q,SAAQ,CAACC,EAASC,IAAW01B,EAAMqtK,OAAOxlH,GAChDj9E,GAAG,QAASN,GACZwtF,KAAK,OAAO,IAAMztF,EAAQ21B,qCChBnC1hC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQqH,aAAerH,EAAQo8H,aAAep8H,EAAQ44H,iBAAmB54H,EAAQ4c,iBAAmB5c,EAAQq8H,gBAAkBr8H,EAAQs8H,eAAiBt8H,EAAQu8H,wBAAqB,EACpL,MAAMC,EAAa,EAAQ,OAC3B18H,OAAOC,eAAeC,EAAS,qBAAsB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWD,sBAC9Gz8H,OAAOC,eAAeC,EAAS,iBAAkB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWF,kBAC1Gx8H,OAAOC,eAAeC,EAAS,kBAAmB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWH,mBAC3Gv8H,OAAOC,eAAeC,EAAS,mBAAoB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAW5/G,oBAC5G9c,OAAOC,eAAeC,EAAS,mBAAoB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAW5D,oBAC5G94H,OAAOC,eAAeC,EAAS,eAAgB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWJ,gBACxGt8H,OAAOC,eAAeC,EAAS,eAAgB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWn1H,8CCTxGvH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ44H,iBAAmB54H,EAAQ4c,iBAAmB5c,EAAQo8H,aAAep8H,EAAQu8H,mBAAqBv8H,EAAQs8H,eAAiBt8H,EAAQq8H,gBAAkBr8H,EAAQqH,kBAAe,EACpL,MACMo1H,EAAU,IADW,EAAQ,OACIxtH,aAkBvC,SAAS5H,EAAa2K,GAElB,GAAKA,EAGL,OAAQA,EAAKtK,UACT,IAAK,YAAa,MAAQ,IAAMsK,EAAK/R,MAAQ,IAC7C,IAAK,YAAa,MAAQ,KAAO+R,EAAK/R,MACtC,IAAK,UACD,MAAMy8H,EAAe1qH,EACrB,MAAQ,IAAM0qH,EAAaz8H,MAAMohB,QAAQ,MAAO,OAAS,KACpDq7G,EAAanH,UACsB,4CAAhCmH,EAAanH,SAASt1H,OACU,0DAAhCy8H,EAAanH,SAASt1H,MACtB,MAAQy8H,EAAanH,SAASt1H,MAAQ,IAAM,KAC/Cy8H,EAAa9zH,SAAW,IAAM8zH,EAAa9zH,SAAW,IAC/D,IAAK,OAAQ,MAAO,KAAKvB,EAAa2K,EAAK1K,YAAYD,EAAa2K,EAAKzK,cAAcF,EAAa2K,EAAKxK,UAAkC,iBAAxBwK,EAAKvK,MAAMC,SAA8B,GAAK,IAAML,EAAa2K,EAAKvK,WACzL,IAAK,WAAY,MAAQ,IAAMuK,EAAK/R,MACpC,IAAK,eAAgB,OAAO+R,EAAK/R,OASzC,SAASo8H,EAAgBK,GACrB,MAAMhzG,EAAQ,8BAA8B0K,KAAKsoG,GACjD,IAAKhzG,EACD,MAAM,IAAItoB,MAAMs7H,EAAe,qBAEnC,OAAOhzG,EAAM,GAAGrI,QAAQ,QAAS,KAQrC,SAASi7G,EAAeI,GACpB,MAAMhzG,EAAQ,uCAAuC0K,KAAKsoG,GAC1D,IAAKhzG,EACD,MAAM,IAAItoB,MAAMs7H,EAAe,qBAEnC,OAAOhzG,EAAM,KAAOA,EAAM,GACpB,wDAA0D,2CAQpE,SAAS6yG,EAAmBG,GACxB,MAAMhzG,EAAQ,mCAAmC0K,KAAKsoG,GACtD,IAAKhzG,EACD,MAAM,IAAItoB,MAAMs7H,EAAe,qBAEnC,OAAOhzG,EAAM,GAAKA,EAAM,GAAG4K,cAAgB,GAS/C,SAAS8nG,EAAan8H,EAAOsN,GAEzB,GADAA,EAAcA,GAAekvH,GACxBx8H,IAAUA,EAAM0G,OACjB,OAAO4G,EAAY0nH,eAEvB,OAAQh1H,EAAM,IACV,IAAK,IAAK,OAAOsN,EAAYqnH,UAAU30H,EAAM4iB,OAAO,IACpD,IAAK,IACD,IAAKtV,EAAYpG,SACb,MAAM,IAAI/F,MAAM,wDAEpB,OAAOmM,EAAYpG,SAASlH,EAAM4iB,OAAO,IAC7C,IAAK,IACD,MAAMja,EAAW2zH,EAAmBt8H,GAC9B8G,EAAOwG,EAAYmnH,UAAU4H,EAAer8H,IAClD,OAAOsN,EAAYsnH,QAAQwH,EAAgBp8H,GAAQ2I,GAAY7B,GAEnE,QACI,GAAI9G,EAAMioB,WAAW,OAASjoB,EAAMqhF,SAAS,MAAO,CAEhD,MAAM03C,EAAQ/4H,EAAMgkB,MAAM,GAAI,GACxB04G,EAAc,GACpB,IAAIC,EAAa,EACbC,EAAY,EAChB,IAAK,IAAIrjH,EAAI,EAAGA,EAAIw/G,EAAMryH,OAAQ6S,IAAK,CACnC,MAAM64G,EAAO2G,EAAMx/G,GAGnB,GAFa,MAAT64G,GACAuK,IACS,MAATvK,EAAc,CACd,GAAmB,IAAfuK,EACA,MAAM,IAAIx7H,MAAM,4CAA8CnB,GAG9D28H,IAGK,MAATvK,GAA+B,IAAfuK,IAChBD,EAAYt2H,KAAK2yH,EAAM/0G,MAAM44G,EAAWrjH,IACxCqjH,EAAYrjH,EAAI,GAGxB,GAAmB,IAAfojH,EACA,MAAM,IAAIx7H,MAAM,4CAA8CnB,GAIlE,GAFA08H,EAAYt2H,KAAK2yH,EAAM/0G,MAAM44G,EAAW7D,EAAMryH,SAEnB,IAAvBg2H,EAAYh2H,QAAuC,IAAvBg2H,EAAYh2H,OACxC,MAAM,IAAIvF,MAAM,4BAA8BnB,GAElD,OAAOsN,EAAYnG,KAAKg1H,EAAaO,EAAY,IAAKP,EAAaO,EAAY,IAAKP,EAAaO,EAAY,IAAKA,EAAY,GAAKP,EAAaO,EAAY,SAAMj6H,GAEtK,GAAwB,MAApBzC,EAAMgxC,OAAO,IAAiD,MAAnChxC,EAAMgxC,OAAOhxC,EAAM0G,OAAS,GACvD,MAAM,IAAIvF,MAAM,gEAAgEnB,KAEpF,OAAOsN,EAAYmnH,UAAUz0H,EAAM43B,UAAU,EAAG53B,EAAM0G,OAAS,KArG3E3G,EAAQqH,aAAeA,EAavBrH,EAAQq8H,gBAAkBA,EAc1Br8H,EAAQs8H,eAAiBA,EAazBt8H,EAAQu8H,mBAAqBA,EAgE7Bv8H,EAAQo8H,aAAeA,EAiBvBp8H,EAAQ4c,iBAVR,SAA0BuhB,GAEtB,MAAO,CACH72B,QAASD,EAAa82B,EAAE72B,SACxBC,UAAWF,EAAa82B,EAAE52B,WAC1BC,OAAQH,EAAa82B,EAAE32B,QACvBC,MAAOJ,EAAa82B,EAAE12B,SAgB9BzH,EAAQ44H,iBAJR,SAA0BkE,EAAYvvH,GAElC,OADAA,EAAcA,GAAekvH,GACVr1H,KAAKg1H,EAAaU,EAAWx1H,QAASiG,GAAc6uH,EAAaU,EAAWv1H,UAAWgG,GAAc6uH,EAAaU,EAAWt1H,OAAQ+F,GAAc6uH,EAAaU,EAAWr1H,MAAO8F,kCC7KzMzN,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQqH,aAAerH,EAAQo8H,aAAep8H,EAAQ44H,iBAAmB54H,EAAQ4c,iBAAmB5c,EAAQq8H,gBAAkBr8H,EAAQs8H,eAAiBt8H,EAAQu8H,wBAAqB,EACpL,MAAMC,EAAa,EAAQ,OAC3B18H,OAAOC,eAAeC,EAAS,qBAAsB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWD,sBAC9Gz8H,OAAOC,eAAeC,EAAS,iBAAkB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWF,kBAC1Gx8H,OAAOC,eAAeC,EAAS,kBAAmB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWH,mBAC3Gv8H,OAAOC,eAAeC,EAAS,mBAAoB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAW5/G,oBAC5G9c,OAAOC,eAAeC,EAAS,mBAAoB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAW5D,oBAC5G94H,OAAOC,eAAeC,EAAS,eAAgB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWJ,gBACxGt8H,OAAOC,eAAeC,EAAS,eAAgB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWn1H,8CCTxGvH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ44H,iBAAmB54H,EAAQ4c,iBAAmB5c,EAAQo8H,aAAep8H,EAAQu8H,mBAAqBv8H,EAAQs8H,eAAiBt8H,EAAQq8H,gBAAkBr8H,EAAQqH,kBAAe,EACpL,MACMo1H,EAAU,IADW,EAAQ,OACIxtH,aAkBvC,SAAS5H,EAAa2K,GAElB,GAAKA,EAGL,OAAQA,EAAKtK,UACT,IAAK,YAYL,IAAK,eAAgB,OAAOsK,EAAK/R,MAXjC,IAAK,YAAa,MAAQ,KAAO+R,EAAK/R,MACtC,IAAK,UACD,MAAMy8H,EAAe1qH,EACrB,MAAQ,IAAM0qH,EAAaz8H,MAAQ,KAC9By8H,EAAanH,UACsB,4CAAhCmH,EAAanH,SAASt1H,OACU,0DAAhCy8H,EAAanH,SAASt1H,MACtB,KAAOy8H,EAAanH,SAASt1H,MAAQ,KACxCy8H,EAAa9zH,SAAW,IAAM8zH,EAAa9zH,SAAW,IAC/D,IAAK,OAAQ,MAAO,KAAKvB,EAAa2K,EAAK1K,YAAYD,EAAa2K,EAAKzK,cAAcF,EAAa2K,EAAKxK,UAAkC,iBAAxBwK,EAAKvK,MAAMC,SAA8B,GAAK,IAAML,EAAa2K,EAAKvK,WACzL,IAAK,WAAY,MAAQ,IAAMuK,EAAK/R,OAU5C,SAASo8H,EAAgBK,GACrB,MAAMhzG,EAAQ,YAAY0K,KAAKsoG,GAC/B,IAAKhzG,EACD,MAAM,IAAItoB,MAAMs7H,EAAe,qBAEnC,OAAOhzG,EAAM,GAQjB,SAAS4yG,EAAeI,GACpB,MAAMhzG,EAAQ,qCAAqC0K,KAAKsoG,GACxD,IAAKhzG,EACD,MAAM,IAAItoB,MAAMs7H,EAAe,qBAEnC,OAAOhzG,EAAM,KAAOA,EAAM,GACpB,wDAA0D,2CAQpE,SAAS6yG,EAAmBG,GACxB,MAAMhzG,EAAQ,mCAAmC0K,KAAKsoG,GACtD,IAAKhzG,EACD,MAAM,IAAItoB,MAAMs7H,EAAe,qBAEnC,OAAOhzG,EAAM,GAAKA,EAAM,GAAG4K,cAAgB,GAS/C,SAAS8nG,EAAan8H,EAAOsN,GAEzB,GADAA,EAAcA,GAAekvH,GACxBx8H,IAAUA,EAAM0G,OACjB,OAAO4G,EAAY0nH,eAEvB,OAAQh1H,EAAM,IACV,IAAK,IAAK,OAAOsN,EAAYqnH,UAAU30H,EAAM4iB,OAAO,IACpD,IAAK,IACD,IAAKtV,EAAYpG,SACb,MAAM,IAAI/F,MAAM,wDAEpB,OAAOmM,EAAYpG,SAASlH,EAAM4iB,OAAO,IAC7C,IAAK,IACD,MAAMja,EAAW2zH,EAAmBt8H,GAC9B8G,EAAOwG,EAAYmnH,UAAU4H,EAAer8H,IAClD,OAAOsN,EAAYsnH,QAAQwH,EAAgBp8H,GAAQ2I,GAAY7B,GAEnE,QACI,GAAI9G,EAAMioB,WAAW,OAASjoB,EAAMqhF,SAAS,MAAO,CAEhD,MAAM03C,EAAQ/4H,EAAMgkB,MAAM,GAAI,GACxB04G,EAAc,GACpB,IAAIC,EAAa,EACbC,EAAY,EAChB,IAAK,IAAIrjH,EAAI,EAAGA,EAAIw/G,EAAMryH,OAAQ6S,IAAK,CACnC,MAAM64G,EAAO2G,EAAMx/G,GAGnB,GAFa,MAAT64G,GACAuK,IACS,MAATvK,EAAc,CACd,GAAmB,IAAfuK,EACA,MAAM,IAAIx7H,MAAM,4CAA8CnB,GAG9D28H,IAGK,MAATvK,GAA+B,IAAfuK,IAChBD,EAAYt2H,KAAK2yH,EAAM/0G,MAAM44G,EAAWrjH,IACxCqjH,EAAYrjH,EAAI,GAGxB,GAAmB,IAAfojH,EACA,MAAM,IAAIx7H,MAAM,4CAA8CnB,GAIlE,GAFA08H,EAAYt2H,KAAK2yH,EAAM/0G,MAAM44G,EAAW7D,EAAMryH,SAEnB,IAAvBg2H,EAAYh2H,QAAuC,IAAvBg2H,EAAYh2H,OACxC,MAAM,IAAIvF,MAAM,4BAA8BnB,GAElD,OAAOsN,EAAYnG,KAAKg1H,EAAaO,EAAY,IAAKP,EAAaO,EAAY,IAAKP,EAAaO,EAAY,IAAKA,EAAY,GAAKP,EAAaO,EAAY,SAAMj6H,GAEtK,OAAO6K,EAAYmnH,UAAUz0H,IAlGzCD,EAAQqH,aAAeA,EAavBrH,EAAQq8H,gBAAkBA,EAc1Br8H,EAAQs8H,eAAiBA,EAazBt8H,EAAQu8H,mBAAqBA,EA6D7Bv8H,EAAQo8H,aAAeA,EAiBvBp8H,EAAQ4c,iBAVR,SAA0BuhB,GAEtB,MAAO,CACH72B,QAASD,EAAa82B,EAAE72B,SACxBC,UAAWF,EAAa82B,EAAE52B,WAC1BC,OAAQH,EAAa82B,EAAE32B,QACvBC,MAAOJ,EAAa82B,EAAE12B,SAgB9BzH,EAAQ44H,iBAJR,SAA0BkE,EAAYvvH,GAElC,OADAA,EAAcA,GAAekvH,GACVr1H,KAAKg1H,EAAaU,EAAWx1H,QAASiG,GAAc6uH,EAAaU,EAAWv1H,UAAWgG,GAAc6uH,EAAaU,EAAWt1H,OAAQ+F,GAAc6uH,EAAaU,EAAWr1H,MAAO8F,mCC1KzMzN,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+8H,kBAAoB/8H,EAAQw4H,UAAYx4H,EAAQ04H,WAAa14H,EAAQg9H,YAAch9H,EAAQi9H,SAAWj9H,EAAQk9H,oBAAsBl9H,EAAQm9H,YAAcn9H,EAAQo9H,aAAep9H,EAAQq9H,kBAAoBr9H,EAAQs9H,cAAgBt9H,EAAQy4H,eAAiBz4H,EAAQ45H,SAAW55H,EAAQu9H,gBAAkBv9H,EAAQw9H,qBAAuBx9H,EAAQy9H,aAAez9H,EAAQ09H,iBAAmB19H,EAAQ29H,aAAe39H,EAAQ49H,YAAc59H,EAAQ84H,cAAgB94H,EAAQ69H,cAAgB79H,EAAQ89H,eAAiB99H,EAAQ64H,UAAY74H,EAAQ+9H,gBAAa,EACniB,MAAMC,EAAiB,EAAQ,OAC/Bl+H,OAAOC,eAAeC,EAAS,oBAAqB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAeX,qBACjHv9H,OAAOC,eAAeC,EAAS,aAAc,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAetF,cAC1G54H,OAAOC,eAAeC,EAAS,sBAAuB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAed,uBACnHp9H,OAAOC,eAAeC,EAAS,cAAe,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAeb,eAC3Gr9H,OAAOC,eAAeC,EAAS,eAAgB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAeZ,gBAC5Gt9H,OAAOC,eAAeC,EAAS,gBAAiB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAeV,iBAC7Gx9H,OAAOC,eAAeC,EAAS,WAAY,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAepE,YACxG95H,OAAOC,eAAeC,EAAS,iBAAkB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAevF,kBAC9G34H,OAAOC,eAAeC,EAAS,WAAY,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAef,YACxGn9H,OAAOC,eAAeC,EAAS,eAAgB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAeP,gBAC5G39H,OAAOC,eAAeC,EAAS,uBAAwB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAeR,wBACpH19H,OAAOC,eAAeC,EAAS,kBAAmB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAeT,mBAC/Gz9H,OAAOC,eAAeC,EAAS,cAAe,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAehB,eAC3Gl9H,OAAOC,eAAeC,EAAS,YAAa,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAexF,aACzG14H,OAAOC,eAAeC,EAAS,oBAAqB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+6H,EAAejB,qBACjH,MAAMP,EAAa,EAAQ,OAC3B18H,OAAOC,eAAeC,EAAS,gBAAiB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAW1D,iBACzGh5H,OAAOC,eAAeC,EAAS,mBAAoB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWkB,oBAC5G59H,OAAOC,eAAeC,EAAS,cAAe,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWoB,eACvG99H,OAAOC,eAAeC,EAAS,gBAAiB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWqB,iBACzG/9H,OAAOC,eAAeC,EAAS,iBAAkB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWsB,kBAC1Gh+H,OAAOC,eAAeC,EAAS,eAAgB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWmB,gBACxG79H,OAAOC,eAAeC,EAAS,aAAc,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAWuB,cACtGj+H,OAAOC,eAAeC,EAAS,YAAa,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAOu5H,EAAW3D,2CC1BrG/4H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQw9H,qBAAuBx9H,EAAQy9H,aAAez9H,EAAQk+H,UAAYl+H,EAAQw4H,UAAYx4H,EAAQ04H,WAAa14H,EAAQg9H,YAAch9H,EAAQi9H,SAAWj9H,EAAQk9H,oBAAsBl9H,EAAQm9H,YAAcn9H,EAAQo9H,aAAep9H,EAAQq9H,kBAAoBr9H,EAAQs9H,cAAgBt9H,EAAQy4H,eAAiBz4H,EAAQ45H,SAAW55H,EAAQ+8H,kBAAoB/8H,EAAQu9H,qBAAkB,EAC7X,MACMlD,EAAK,IADgB,EAAQ,OACDprH,aAmBlC,SAAS2qH,EAASxyH,EAAM+2H,GACpB,OAAIA,GAA8C,iBAAxB/2H,EAAKK,MAAMC,SAC1B,CAACN,EAAKE,QAASF,EAAKG,UAAWH,EAAKI,QAExC,CAACJ,EAAKE,QAASF,EAAKG,UAAWH,EAAKI,OAAQJ,EAAKK,OAwL5D,SAASy2H,EAAUG,EAAOC,GACtB,OAAQA,GACkB,aAAnBA,EAAM52H,UACc,SAAnB42H,EAAM52H,UAA0C,SAAnB22H,EAAM32H,UAAuB81H,EAAqBa,EAAOC,IACvFA,EAAMtwH,OAAOqwH,GAmBxB,SAASZ,EAAar2H,EAAME,EAASC,EAAWC,EAAQC,GACpD,OAAOy2H,EAAU92H,EAAKE,QAASA,IACxB42H,EAAU92H,EAAKG,UAAWA,IAC1B22H,EAAU92H,EAAKI,OAAQA,IACvB02H,EAAU92H,EAAKK,MAAOA,GAcjC,SAAS+1H,EAAqBp2H,EAAMJ,GAChC,OAAOy2H,EAAar2H,EAAMJ,EAAQM,QAASN,EAAQO,UAAWP,EAAQQ,OAAQR,EAAQS,OApP1FzH,EAAQu9H,gBAAkB,CAAC,UAAW,YAAa,SAAU,SAK7Dv9H,EAAQ+8H,kBAAoB,CAAC,UAAW,YAAa,UAerD/8H,EAAQ45H,SAAWA,EAqBnB55H,EAAQy4H,eAZR,SAASA,EAAerxH,EAAM+2H,GAC1B,MAAMnF,EAAQ,GACd,IAAK,MAAMhnH,KAAQ4nH,EAASxyH,EAAM+2H,GACR,SAAlBnsH,EAAKtK,SACL+wH,EAAezmH,EAAMmsH,GAAoBr8H,SAAQ+3H,GAAWb,EAAM3yH,KAAKwzH,KAGvEb,EAAM3yH,KAAK2L,GAGnB,OAAOgnH,GAiBXh5H,EAAQs9H,cARR,SAAuBl2H,GACnB,MAAO,CACH,CAAErF,IAAK,UAAW9B,MAAOmH,EAAKE,SAC9B,CAAEvF,IAAK,YAAa9B,MAAOmH,EAAKG,WAChC,CAAExF,IAAK,SAAU9B,MAAOmH,EAAKI,QAC7B,CAAEzF,IAAK,QAAS9B,MAAOmH,EAAKK,SAyBpCzH,EAAQq9H,kBAXR,SAA2BkB,EAAYC,EAAWjxH,GAC9C,MAAMkxH,EAAW,GAQjB,OAPAF,EAAWz8H,SAAS48H,GAAcD,EAASC,EAAU38H,KAAO28H,EAAUz+H,QAClEu+H,IACAC,EAASn3H,QAAUm3H,EAASn3H,SAAWk3H,EAAU,WACjDC,EAASl3H,UAAYk3H,EAASl3H,WAAai3H,EAAU,aACrDC,EAASj3H,OAASi3H,EAASj3H,QAAUg3H,EAAU,UAC/CC,EAASh3H,MAAQg3H,EAASh3H,OAAS+2H,EAAU,WAEzCjxH,GAAe8sH,GAAIjzH,KAAKq3H,EAASn3H,QAASm3H,EAASl3H,UAAWk3H,EAASj3H,OAAQi3H,EAASh3H,QAcpGzH,EAAQo9H,aANR,SAAsBh2H,EAAMu3H,GACxBA,EAAGv3H,EAAKE,QAAS,WACjBq3H,EAAGv3H,EAAKG,UAAW,aACnBo3H,EAAGv3H,EAAKI,OAAQ,UAChBm3H,EAAGv3H,EAAKK,MAAO,UAyBnBzH,EAAQm9H,YAhBR,SAAqB/1H,EAAM8G,GACvB,MAAM8qH,EAAQ,GAad,OAZI9qH,EAAO9G,EAAKE,QAAS,YACrB0xH,EAAM3yH,KAAKe,EAAKE,SAEhB4G,EAAO9G,EAAKG,UAAW,cACvByxH,EAAM3yH,KAAKe,EAAKG,WAEhB2G,EAAO9G,EAAKI,OAAQ,WACpBwxH,EAAM3yH,KAAKe,EAAKI,QAEhB0G,EAAO9G,EAAKK,MAAO,UACnBuxH,EAAM3yH,KAAKe,EAAKK,OAEbuxH,GAyBXh5H,EAAQk9H,oBAhBR,SAA6B91H,EAAM8G,GAC/B,MAAMklD,EAAQ,GAad,OAZIllD,EAAO9G,EAAKE,QAAS,YACrB8rD,EAAM/sD,KAAK,WAEX6H,EAAO9G,EAAKG,UAAW,cACvB6rD,EAAM/sD,KAAK,aAEX6H,EAAO9G,EAAKI,OAAQ,WACpB4rD,EAAM/sD,KAAK,UAEX6H,EAAO9G,EAAKK,MAAO,UACnB2rD,EAAM/sD,KAAK,SAER+sD,GAcXpzD,EAAQi9H,SAHR,SAAkB71H,EAAM0qG,EAAQvkG,GAC5B,OAAQA,GAAe8sH,GAAIjzH,KAAK0qG,EAAO1qG,EAAKE,QAAS,WAAYwqG,EAAO1qG,EAAKG,UAAW,aAAcuqG,EAAO1qG,EAAKI,OAAQ,UAAWsqG,EAAO1qG,EAAKK,MAAO,WAiB5JzH,EAAQg9H,YAPR,SAAqB51H,EAAMk/G,EAASsY,GAChC,IAAI3+H,EAAQ2+H,EAIZ,OAHA3+H,EAAQqmH,EAAQrmH,EAAOmH,EAAKE,QAAS,WACrCrH,EAAQqmH,EAAQrmH,EAAOmH,EAAKG,UAAW,aACvCtH,EAAQqmH,EAAQrmH,EAAOmH,EAAKI,OAAQ,UAC7B8+G,EAAQrmH,EAAOmH,EAAKK,MAAO,UAetCzH,EAAQ04H,WANR,SAAoBtxH,EAAMg3H,GACtB,OAAOA,EAAQh3H,EAAKE,QAAS,YACtB82H,EAAQh3H,EAAKG,UAAW,cACxB62H,EAAQh3H,EAAKI,OAAQ,WACrB42H,EAAQh3H,EAAKK,MAAO,UAe/BzH,EAAQw4H,UANR,SAAmBpxH,EAAMg3H,GACrB,OAAOA,EAAQh3H,EAAKE,QAAS,YACtB82H,EAAQh3H,EAAKG,UAAW,cACxB62H,EAAQh3H,EAAKI,OAAQ,WACrB42H,EAAQh3H,EAAKK,MAAO,UAqB/BzH,EAAQk+H,UAAYA,EAuBpBl+H,EAAQy9H,aAAeA,EAevBz9H,EAAQw9H,qBAAuBA,gCC9P/B19H,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQg/H,SAAWh/H,EAAQ09H,iBAAmB19H,EAAQ29H,aAAe39H,EAAQ49H,YAAc59H,EAAQ84H,cAAgB94H,EAAQ69H,cAAgB79H,EAAQ89H,eAAiB99H,EAAQ64H,UAAY74H,EAAQ+9H,gBAAa,EAC7M,MAAMx4H,EAAe,EAAQ,MA6B7B,SAASu4H,EAAe9E,EAAOtxH,GAC3B,OAAOsxH,EAAM9qH,QAAQ8D,GAASA,EAAKtK,WAAaA,IAxBpD1H,EAAQ+9H,WAAa,CAAC,YAAa,YAAa,UAAW,WAAY,eAAgB,QAgBvF/9H,EAAQ64H,UAPR,SAAmBG,GACf,MAAMrpH,EAAO,GACb,OAAOqpH,EAAM9qH,QAAO8D,IAChB,MAAMsnH,EAAa/zH,EAAa8B,aAAa2K,GAC7C,QAASsnH,KAAc3pH,KAAUA,EAAK2pH,IAAc,OAa5Dt5H,EAAQ89H,eAAiBA,EASzB99H,EAAQ69H,cAHR,SAAuB7E,GACnB,OAAO8E,EAAe9E,EAAO,cAWjCh5H,EAAQ84H,cAHR,SAAuBE,GACnB,OAAO8E,EAAe9E,EAAO,cAWjCh5H,EAAQ49H,YAHR,SAAqB5E,GACjB,OAAO8E,EAAe9E,EAAO,YAWjCh5H,EAAQ29H,aAHR,SAAsB3E,GAClB,OAAO8E,EAAe9E,EAAO,aAWjCh5H,EAAQ09H,iBAHR,SAA0B1E,GACtB,OAAO8E,EAAe9E,EAAO,iBAWjCh5H,EAAQg/H,SAHR,SAAkBhG,GACd,OAAO8E,EAAe9E,EAAO,4CCtFjC,IAAI52H,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAqBlD,GAC1CkD,EAAa,EAAQ,OAA6BlD,GAClDkD,EAAa,EAAQ,OAAuBlD,GAC5CkD,EAAa,EAAQ,MAAqBlD,GAC1CkD,EAAa,EAAQ,OAAsBlD,GAC3CkD,EAAa,EAAQ,OAAelD,+BChBpCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,gCCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,gCCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,iCCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmhM,gBAAa,EACrB,MAAMqxE,EAAgB,EAAQ,OACxBjnQ,EAAW,EAAQ,OACnBk9Q,EAAwB,EAAQ,OAChCC,EAAkB,EAAQ,OAC1BC,EAAgB,EAAQ,OACxBjhD,EAAS,EAAQ,OAIvB,MAAMvmC,UAAmB51L,EAAS41H,UAC9B9gI,YAAY4R,GACR1R,MAAM,CAAEgiI,oBAAoB,IAC5B3hI,KAAKgoR,eAAiB,GACtB32Q,EAAUA,GAAW,GACrBrR,KAAKqR,QAAUA,EACfrR,KAAK6mK,KAAO,IAAIigE,EAAOt1N,KAAKH,EAAQ1E,YAAa0E,EAAQ/I,SACzDtI,KAAKq0H,aAAehjH,EAAQgjH,cAAgBr0H,KAAK6mK,KAAKl6J,YAAY0nH,eAClE,MAAMtuF,EAAU10B,EAAQy0N,YAAcgB,EAAOt1N,KAAKy2Q,qBAAqB52Q,EAAQy0N,aAAez0N,EAAQ00B,SAAW,GACjH/lC,KAAK8qC,SAAWz5B,EAAQy5B,UAAYi9O,EAAcG,cAAcniP,GAChE/lC,KAAKigM,kBAAoB5uL,EAAQ4uL,kBACjCjgM,KAAKmoR,aAAenoR,KAAK8qC,SAASs9O,iBAAmB,GAAK,KAC1DpoR,KAAKqoR,yBAA2BroR,KAAK8qC,SAASs9O,iBAAmB,GAAK,KACtEpoR,KAAKwoF,OAASxoF,KAAKyyQ,iBAA6B,QAAZ1sO,GACpC/lC,KAAKgoR,eAAeviR,KAAK,CACrB6iR,kBAAmB,GACnBC,QAAQ,EACRvgR,SAAUqJ,EAAQrJ,SAClBwgR,YAAa,GACbC,iBAAkB,GAClBvlR,KAAM,GACNwlR,YAAaxpR,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIgyQ,EAAgB,aAAc9nR,KAAK8qC,SAAS69O,oBAAsBd,EAAsB,YAAc,IACnJe,eAAgB,GAChBC,aAAa,EACbltB,MAAOtqP,EAAQsqP,QAQvB1tD,OAAOxlH,GACH,MAAM/kF,EAAS,IAAIiH,EAAS21H,YAAY,CAAEqB,oBAAoB,IAC9Dl5C,EAAOj9E,GAAG,SAAUO,GAAU2hF,EAAO1hF,KAAK,QAASD,KACnD08E,EAAOj9E,GAAG,QAAStC,GAASxF,EAAO+B,KAAKyD,KACxCu/E,EAAOj9E,GAAG,OAAO,IAAM9H,EAAO+B,KAAK,QACnC,MAAMioF,EAAShqF,EAAOupH,KAAK,IAAIszE,EAAWvgM,KAAKqR,UAC/C,OAAOq8E,EAEX8/B,WAAW9kC,EAAO2C,EAAUr9E,GACxBhO,KAAKwoF,OAAO/tE,MAAMiuE,GAClB16E,IAEJ+4H,OAAO/4H,GACHhO,KAAKwoF,OAAOoC,MACZ58E,IAEJg0L,UAAU9+L,EAAM++L,GAEZ,IAAI0wE,EAAa3yQ,KAAKgoR,eAAejiR,OAAS,EAC9C,KAAO4sQ,EAAa,GAAK3yQ,KAAKgoR,eAAerV,GAAYkW,aACrDlW,IAEJ,IAAImW,EAAY9oR,KAAKgoR,eAAerV,GAEhCA,IAAe3yQ,KAAKgoR,eAAejiR,OAAS,IAC5C+iR,EAAY5pR,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIgzQ,GAAY,CAAE9gR,SAAUhI,KAAKgoR,eAAehoR,KAAKgoR,eAAejiR,OAAS,GAAGiC,SAAU0gR,YAAa1oR,KAAKgoR,eAAehoR,KAAKgoR,eAAejiR,OAAS,GAAG2iR,YAAaE,eAAgB5oR,KAAKgoR,eAAehoR,KAAKgoR,eAAejiR,OAAS,GAAG6iR,eAAgBjtB,MAAO37P,KAAKgoR,eAAehoR,KAAKgoR,eAAejiR,OAAS,GAAG41P,SAGnW,MAAMwZ,EAAY,CACd4T,iBAAkBD,EAAUC,iBAC5BT,kBAAmB,GACnBC,OAAQ,WAAYtmF,EACpBumF,YAAa,GACbC,iBAAkBK,EAAUN,YAC5BQ,aAAcF,EAAUE,aACxB9lR,KAAAA,EACAwlR,YAAa,KACbE,eAAgB,KAChBC,aAAa,GAIjB,GAFA7oR,KAAKgoR,eAAeviR,KAAK0vQ,GAErBA,EAAU4T,iBAAkB,CAG5B,IAAK,MAAMpoP,KAAUzhC,OAAO0N,KAAKk8Q,EAAUF,gBAAgBzoO,OAAQ,CAC/D,MAAMgyK,EAAS22D,EAAUF,eAAejoP,GAClCsoP,EAA0B,KAAXtoP,EAAgB,QAAU,SAAWA,EACpDsoP,KAAgBhnF,IAClBA,EAAWgnF,GAAgB92D,GAGnC,MAAM+2D,EAAuBhqR,OAAO0N,KAAKq1L,GAAYj8L,KAAK7E,GAAQ,GAAGA,MAAQ8gM,EAAW9gM,QAASqf,KAAK,KAEtG,GADA20P,EAAUrmM,KAAO,CAAC,IAAI5rE,IAAOgmR,EAAuB,IAAMA,EAAuB,OAC7ElpR,KAAK8qC,SAASq+O,+BACd,OAGR,IA0EIC,EACAC,EACAC,EA5EAC,GAA4B,EAC5BC,GAA4B,EAgBhC,GAfIxpR,KAAK8qC,SAAS2+O,+BAEV,aAAcxnF,GAAc,QAASA,IACrCsnF,GAA4B,EACxBtnF,EAAWuwD,IAAI16O,QAAQ,KAAO,UACvBmqL,EAAWuwD,KAGtB,aAAcvwD,GAAc,QAASA,IACrCunF,GAA4B,EACxBvnF,EAAWynF,IAAI5xQ,QAAQ,KAAO,UACvBmqL,EAAWynF,MAI1B1pR,KAAK8qC,SAASs9O,iBAAkB,CAEhC,GAAIU,EAAUa,oBAAqB,CAC/B,MAAMC,EAAa,CACf3nF,WAAAA,EACAr9L,SAAU,GACV1B,KAAAA,EACA2mR,YAAY,EACZC,aAAa,EACbh7M,KAAM,IAIV,OAFAg6M,EAAUa,oBAAoB/kR,SAASa,KAAKmkR,QAC5CzU,EAAUwU,oBAAsBC,GAIpC,GAA0B,iBAAtB3nF,EAAW8nF,OAUX,YATA5U,EAAUwU,oBAAsB,CAC5B1nF,WAAAA,EACAr9L,SAAU,GACV1B,KAAAA,EACA4lR,UAAAA,EACAe,YAAY,EACZC,aAAa,EACbh7M,KAAM,KAKd,GAA4B,cAAxBmzH,EAAW9D,SAA0B,CACrC,MAAM6rF,EAAsB/nF,EAAW/lK,UAAY+lK,EAAWhzK,MAAQgzK,EAAWn4J,IAUjF,YATI9pC,KAAKmoR,aAAa6B,GAClBhqR,KAAKiqR,gBAAgBnB,EAAW9oR,KAAKmoR,aAAa6B,GAAsBA,IAGnEhqR,KAAKqoR,yBAAyB2B,KAC/BhqR,KAAKqoR,yBAAyB2B,GAAuB,IAEzDhqR,KAAKqoR,yBAAyB2B,GAAqBvkR,KAAKqjR,MA0CpE,GApCI9oR,KAAK8qC,SAASo/O,SAAoB,SAAThnR,GAAmB++L,EAAWhzK,OACvDjvB,KAAK6mK,KAAKv+J,QAAUtI,KAAK6mK,KAAKsjH,WAAWloF,EAAWhzK,OAGpDjvB,KAAK8qC,SAASs/O,SAAWnoF,EAAW,cACpCkzE,EAAU6T,aAAehpR,KAAK6mK,KAAKsjH,WAAWloF,EAAW,cAGzDjiM,KAAK8qC,SAASu/O,SAAoB,SAATnnR,IAAoB++L,EAAWttE,WACxDwgJ,EAAUmV,uBAAwB,GASlC,UAAWroF,EACPA,EAAW05D,OACXwZ,EAAUxZ,MAAQ15D,EAAW05D,MAC7B37P,KAAKszQ,WAAWtzQ,KAAK6mK,KAAK0jH,eAAepV,GAAYn1Q,KAAK6mK,KAAKl6J,YAAYmnH,UAAUgzG,EAAOt1N,KAAK+jQ,KAAO,kBAAmBv1Q,KAAK6mK,KAAKl6J,YAAYmnH,UAAUqhJ,EAAUxZ,SAIrKwZ,EAAUxZ,MAAQ37P,KAAKgoR,eAAe,GAAGrsB,MAI7CwZ,EAAUxZ,MAAQmtB,EAAUntB,MAGhCwZ,EAAUyT,eAAiB9hD,EAAOt1N,KAAKg5Q,cAAcvoF,EAAY6mF,EAAUF,eAAgB5oR,KAAK8qC,SAAS2/O,qBACzGtV,EAAUuT,YAAcxpR,OAAO0N,KAAKuoQ,EAAUyT,gBAAgB7iR,OAAS,EACjE7G,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIgzQ,EAAUJ,aAAcvT,EAAUyT,gBAAkBE,EAAUJ,YAEhG1oR,KAAK8qC,SAAS4/O,eAAiBzoF,EAAW0oF,KAAM,CAChD,MAAMC,EAAc3oF,EAAWp/J,GACzB7iC,KAAK6mK,KAAKgkH,UAAU,IAAM5oF,EAAWp/J,GAAIsyO,GAAW,GAAO,GAAO,GAClEn1Q,KAAK6mK,KAAKk/G,kBAEV+E,EAAW3V,EAAUxZ,MAC3BwZ,EAAUxZ,MAAQ,sCAClB,IAAK,MAAMgvB,KAAQ3qR,KAAK6mK,KAAKssG,gBAAgBlxE,EAAW0oF,KAAMxV,GAAW,GAAM,GAC3En1Q,KAAKszQ,WAAWsX,EAAa5qR,KAAK6mK,KAAKl6J,YAAYmnH,UAAU,2CAA4C62J,GAE7GxV,EAAUxZ,MAAQmvB,EAIlB,aAAc7oF,GAAejiM,KAAK8qC,SAASigP,eAAiB,SAAU9oF,EACtEkzE,EAAUntQ,SAAWi6L,EAAW,aAAeA,EAAW/9I,KAG1DixN,EAAUntQ,SAAW8gR,EAAU9gR,SAEnC,MAAMgjR,EAA2C,IAA/BhrR,KAAKgoR,eAAejiR,OAgHtC,GA/GM,QAASk8L,GAAiB,QAASA,GA2EjC,UAAWA,GACXmnF,EAAappR,KAAK6mK,KAAKgkH,UAAU5oF,EAAWgpF,MAAO9V,GAAW,GAAO,GAAM,GAC3EA,EAAU+V,qBAAuB9B,EAC7B,WAAYnnF,IACZqnF,EAAgBF,IAGf4B,EACL5B,GAAa,EAERN,EAAUliR,SACfwiR,EAAaN,EAAUliR,QAGvB,aAAcq7L,IACdonF,EAAwBrpR,KAAK6mK,KAAKgkH,UAAU5oF,EAAW/lK,SAAUi5O,GAAW,GAAO,GAAM,IAExFkU,IACG,SAAUpnF,GAAc,QAASA,EACjConF,EAAwBrpR,KAAK6mK,KAAKgkH,UAAU5oF,EAAWhzK,MAAQgzK,EAAWn4J,IAAKqrO,GAAW,GAAO,GAAO,KAEnG,WAAYlzE,IAAgB,UAAWA,GAAgBjiM,KAAKmrR,2BAA2BjoR,KAC5FmmR,EAAwBrpR,KAAK6mK,KAAKk/G,oBAItC,WAAY9jF,KAAgB,UAAWA,KAEnCqnF,EADAtpR,KAAKmrR,2BAA2BjoR,GAChBkmR,EAGAC,MAxGpB,aAAcpnF,IAAgB,YAAaA,GAAiB,aAAcA,IAsCtE,UAAWA,GAAc,aAAcA,KACvCmnF,EAAappR,KAAK6mK,KAAKgkH,UAAU5oF,EAAWgpF,OAAShpF,EAAW/lK,SAAUi5O,GAAW,GAAO,GAAM,GAClGA,EAAU+V,qBAAuB9B,GAEhCA,KAAe,SAAUnnF,MAAc,QAASA,KACjDmnF,EAAappR,KAAK6mK,KAAKgkH,UAAU5oF,EAAWhzK,MAAQgzK,EAAWn4J,IAAKqrO,GAAW,GAAO,GAAO,GAC7FA,EAAU+V,qBAAuB9B,GAEhCA,IACG4B,EACA5B,GAAa,EAERppR,KAAKmrR,2BAA2BjoR,GACrCkmR,EAAaN,EAAUliR,OAElB,WAAYq7L,GACjBmnF,EAAappR,KAAK6mK,KAAKk/G,kBACvB5Q,EAAU+V,oBAAqB,GAE1BpC,EAAUliR,SACfwiR,EAAaN,EAAUliR,OACjB,aAAcq7L,IAChBkzE,EAAU0T,aAAc,KAKhC,WAAY5mF,IACZqnF,EAAgBF,KA/DhB,UAAWnnF,GACXmnF,EAAappR,KAAK6mK,KAAKgkH,UAAU5oF,EAAWgpF,MAAO9V,GAAW,GAAO,GAAM,GAC3EA,EAAU+V,qBAAuB9B,GAE5B4B,EACL5B,GAAa,EAERN,EAAUliR,SACfwiR,EAAaN,EAAUliR,QAGvB,WAAYq7L,IACR,UAAWA,IACXqnF,EAAgBtpR,KAAK6mK,KAAKgkH,UAAU5oF,EAAWgpF,MAAO9V,GAAW,GAAO,GAAM,KAE7EmU,GAAiB0B,IAClB1B,GAAgB,IAEfA,GAAiB,aAAcrnF,IAChCqnF,EAAgBtpR,KAAK6mK,KAAKgkH,UAAU5oF,EAAW/lK,SAAUi5O,GAAW,GAAO,GAAM,IAEhFmU,KAAkB,SAAUrnF,MAAc,QAASA,KACpDqnF,EAAgBtpR,KAAK6mK,KAAKgkH,UAAU5oF,EAAWhzK,MAAQgzK,EAAWn4J,IAAKqrO,GAAW,GAAO,GAAO,KAE/FmU,GAAiBtpR,KAAKmrR,2BAA2BjoR,KAClDomR,EAAgBF,GAEfE,IACDA,EAAgBtpR,KAAK6mK,KAAKk/G,mBAE9BsD,EAAwBC,IA4EhCA,EACA,IAAK,MAAMnjR,KAAQnG,KAAK6mK,KAAKssG,gBAAgBlxE,EAAW8nF,OAAQ5U,GAAW,GAAM,GAC7En1Q,KAAKszQ,WAAWtzQ,KAAK6mK,KAAKukH,qBAAqB9B,EAAenU,GAAYn1Q,KAAK6mK,KAAKl6J,YAAYmnH,UAAUgzG,EAAOt1N,KAAKwiJ,IAAM,QAAS7tJ,GAQ7I,GAJIijR,IACAjU,EAAUqT,YAAc,IAGxBa,EAAuB,CAEvB,GAAI,QAASpnF,GAAc,WAAYA,EACnC,IAAK,MAAMt7L,KAAa3G,KAAK6mK,KAAKssG,gBAAgBlxE,EAAWuwD,IAAK2iB,EAAWoU,GAA2B,GACpGvpR,KAAKqrR,eAAelW,EAAWiU,EAAYziR,EAAW0iR,GAI9D,KAAM,QAASpnF,MAAc,WAAYA,GAAa,CAClD,GAAI,QAASA,EACT,IAAK,MAAMt7L,KAAa3G,KAAK6mK,KAAKssG,gBAAgBlxE,EAAWuwD,IAAK2iB,EAAWoU,GAA2B,GACpGvpR,KAAKszQ,WAAWtzQ,KAAK6mK,KAAKukH,qBAAqBhC,EAAYjU,GAAYxuQ,EAAW3G,KAAK6mK,KAAKukH,qBAAqB/B,EAAuBlU,IAGhJ,GAAI,QAASlzE,EACT,IAAK,MAAMt7L,KAAa3G,KAAK6mK,KAAKssG,gBAAgBlxE,EAAWynF,IAAKvU,EAAWqU,GAA2B,GACpGxpR,KAAKszQ,WAAWtzQ,KAAK6mK,KAAKukH,qBAAqB/B,EAAuBlU,GAAYxuQ,EAAW3G,KAAK6mK,KAAKukH,qBAAqBhC,EAAYjU,KAMxJ,IAAKkU,EAAuB,CACxB,GAAI,QAASpnF,EACT,GAAI,WAAYA,EACZ,IAAK,MAAMt7L,KAAa3G,KAAK6mK,KAAKssG,gBAAgBlxE,EAAWuwD,IAAK2iB,EAAWoU,GAA2B,GACpGvpR,KAAKqrR,eAAelW,EAAWiU,EAAYziR,EAAW,MACtDwuQ,EAAUmT,kBAAkB7iR,KAAK,CAAEkB,UAAAA,EAAWqmG,SAAS,EAAO/d,MAAM,SAIxE,IAAK,MAAMtoF,KAAa3G,KAAK6mK,KAAKssG,gBAAgBlxE,EAAWuwD,IAAK2iB,EAAWoU,GAA2B,GACpGpU,EAAUmT,kBAAkB7iR,KAAK,CAAEkB,UAAAA,EAAWqmG,SAAS,IAInE,GAAI,QAASi1F,EACT,IAAK,MAAMt7L,KAAa3G,KAAK6mK,KAAKssG,gBAAgBlxE,EAAWynF,IAAKvU,EAAWqU,GAA2B,GACpGrU,EAAUmT,kBAAkB7iR,KAAK,CAAEkB,UAAAA,EAAWqmG,SAAS,IAI3DmoK,EAAUmT,kBAAkBviR,OAAS,IACrCsjR,EAAwBrpR,KAAK6mK,KAAKk/G,mBAI1C,GAAI,aAAc9jF,EAAY,CAI1B,IAAIqpF,EA0BJ,GA5BAnW,EAAUz2E,WAAa1+L,KAAK6mK,KAAKssG,gBAAgBlxE,EAAW9D,SAAUg3E,GAAW,GAAM,GAGnF,aAAclzE,GACdkzE,EAAUxgJ,SAAW30H,KAAK6mK,KAAKgkH,UAAU5oF,EAAWttE,SAAUwgJ,GAAW,GAAM,GAAM,GACjFA,EAAUxgJ,WACNwgJ,EAAUxgJ,SAASt1H,QAAUynO,EAAOt1N,KAAKwiJ,IAAM,cAC3Ch0J,KAAK8qC,SAASygP,cAAgBpW,EAAUxgJ,SAASt1H,QAAUynO,EAAOt1N,KAAKwiJ,IAAM,UACrFmhH,EAAU4T,kBAAmB,KAK3B,QAAS9mF,GAAiB,QAASA,GAAiB,YAAaA,IAC/D,aAAcA,IACdqpF,EAAsBtrR,KAAK6mK,KAAKgkH,UAAU5oF,EAAW/lK,SAAUi5O,GAAW,GAAO,GAAM,KAEtFmW,GAAuB,SAAUrpF,IAClCqpF,EAAsBtrR,KAAK6mK,KAAKgkH,UAAU5oF,EAAWhzK,KAAMkmP,GAAW,GAAO,GAAO,KAEnFmW,GAAuB,QAASrpF,IACjCqpF,EAAsBtrR,KAAK6mK,KAAKgkH,UAAU5oF,EAAWn4J,IAAKqrO,GAAW,GAAO,GAAO,KAGvF,WAAYlzE,KAAgB,UAAWA,KACvCqpF,EAAsBhC,IAG1B,YAAarnF,EAAY,CAEzB,MAAMr7L,EAAS5G,KAAK6mK,KAAKgtG,cAAc5xE,EAAWt+D,QAASwxI,GAC3D,GAAI,WAAYlzE,EACZ,IAAK,MAAMt7L,KAAawuQ,EAAUz2E,WAC9B1+L,KAAKqrR,eAAelW,EAAWiU,EAAYziR,EAAWC,OAGzD,CACD,MAAMF,EAAU1G,KAAK6mK,KAAKukH,qBAAqBhC,EAAYjU,GAC3D,IAAK,MAAMxuQ,KAAawuQ,EAAUz2E,WAC9B1+L,KAAKszQ,WAAW5sQ,EAASC,EAAWC,GAI5CuuQ,EAAUz2E,WAAa,UAEtB,GAAI1+L,KAAK8qC,SAAS0gP,mBAAqB,aAAcvpF,EAAY,CAClEkzE,EAAUmV,uBAAwB,EAElC,MAAM1jR,EAAS5G,KAAK6mK,KAAKgtG,cAAc5xE,EAAW9tL,SAAUghQ,GAC5D,GAAI,WAAYlzE,EACZ,IAAK,MAAMt7L,KAAawuQ,EAAUz2E,WAC9B1+L,KAAKqrR,eAAelW,EAAWiU,EAAYziR,EAAWC,OAGzD,CACD,MAAMF,EAAU1G,KAAK6mK,KAAKukH,qBAAqBhC,EAAYjU,GAC3D,IAAK,MAAMxuQ,KAAawuQ,EAAUz2E,WAC9B1+L,KAAKszQ,WAAW5sQ,EAASC,EAAWC,GAI5CuuQ,EAAUz2E,WAAa,UAEtB,GAAI4sF,EAAqB,CAE1B,MAAM1kR,EAAS5G,KAAK6mK,KAAKukH,qBAAqBE,EAAqBnW,GACnE,GAAI,WAAYlzE,EACZ,IAAK,MAAMt7L,KAAawuQ,EAAUz2E,WAC9B1+L,KAAKqrR,eAAelW,EAAWiU,EAAYziR,EAAWC,OAGzD,CACD,MAAMF,EAAU1G,KAAK6mK,KAAKukH,qBAAqBhC,EAAYjU,GAC3D,IAAK,MAAMxuQ,KAAawuQ,EAAUz2E,WAC9B1+L,KAAKszQ,WAAW5sQ,EAASC,EAAWC,GAI5CuuQ,EAAUz2E,WAAa,MAI/B,IAAI+sF,GAA6B,EACjC,IAAKtW,EAAU0T,aAAeO,GAAcN,EAAUR,kBAAkBviR,OAAS,EAAG,CAChF0lR,GAA6B,EAC7B,MAAM/kR,EAAU1G,KAAK6mK,KAAKukH,qBAAqBtC,EAAUpiR,QAASyuQ,GAC5DvuQ,EAAS5G,KAAK6mK,KAAKukH,qBAAqBhC,EAAYjU,GAC1D,IAAK,MAAMuW,KAAoB5C,EAAUR,kBACrC,GAAKoD,EAAiB1+K,QAkBlBhtG,KAAKszQ,WAAW1sQ,EAAQ8kR,EAAiB/kR,UAAWD,QAjBpD,GAAIglR,EAAiBz8L,KAAM,CAEvB,IAAI08L,EAAiB,KACrB,IAAK,IAAI/yQ,EAAI5Y,KAAKgoR,eAAejiR,OAAS,EAAG6S,GAAK,EAAGA,IACjD,GAAI5Y,KAAKgoR,eAAepvQ,GAAG2vQ,OAAQ,CAC/BoD,EAAiB3rR,KAAKgoR,eAAepvQ,GACrC,MAIR5Y,KAAKqrR,eAAeM,EAAgBvC,EAAYsC,EAAiB/kR,UAAWC,QAG5E5G,KAAKszQ,WAAW5sQ,EAASglR,EAAiB/kR,UAAWC,IAQhE6kR,GAA8B3C,EAAUR,kBAAkBviR,OAAS,IACpEovQ,EAAUmT,kBAAoBnT,EAAUmT,kBAAkB7pQ,OAAOqqQ,EAAUR,oBAG/EnT,EAAUzuQ,QAAU0iR,GAAcN,EAAUpiR,QAC5CyuQ,EAAUvuQ,OAASyiR,GAAyBD,EAEhDlnF,OAAOh5L,GACH,MAAMisQ,EAAYn1Q,KAAKgoR,eAAehoR,KAAKgoR,eAAejiR,OAAS,GAE/D/F,KAAK8qC,SAASs9O,kBAAoBjT,EAAUwU,oBAC5CxU,EAAUwU,oBAAoB76M,KAAKrpE,KAAKyD,IAIvCisQ,EAAUrmM,OACXqmM,EAAUrmM,KAAO,IAErBqmM,EAAUrmM,KAAKrpE,KAAKyD,IAExBu4L,aAEI,MAAM0zE,EAAYn1Q,KAAKgoR,eAAehoR,KAAKgoR,eAAejiR,OAAS,GAC7D+iR,EAAY9oR,KAAKgoR,eAAehoR,KAAKgoR,eAAejiR,OAAS,GACnE,KAAMovQ,EAAU4T,kBAAoBD,EAAUC,kBAAoB/oR,KAAK8qC,SAASq+O,gCAAiC,CAE7G,GAAInpR,KAAK8qC,SAASs9O,kBAAoBjT,EAAUwU,qBACzCxU,EAAUwU,oBAAoBG,YAAa,CAC9C,MAAMp4E,EAAYyjE,EAAUwU,oBAAoB1nF,WAAW/lK,SAO3D,UALOi5O,EAAUwU,oBAAoB1nF,WAAW/lK,gBACzCi5O,EAAUwU,oBAAoB1nF,WAAW8nF,OAEhD/pR,KAAKmoR,aAAaz2E,GAAayjE,EAAUwU,oBAErC3pR,KAAKqoR,yBAAyB32E,GAAY,CAC1C,IAAK,MAAM/uL,KAAO3iB,KAAKqoR,yBAAyB32E,GAC5C1xM,KAAKiqR,gBAAgBtnQ,EAAKwyP,EAAUwU,oBAAqBj4E,UAEtD1xM,KAAKqoR,yBAAyB32E,GAIzC,YADA1xM,KAAKgoR,eAAexlQ,MAIxB,GAAI2yP,EAAUz2E,WAAY,CACtB,MAAMh4L,EAAU1G,KAAK6mK,KAAKukH,qBAAqBjW,EAAUzuQ,QAASyuQ,GAClE,IAAIyW,EAAezW,EAAUrmM,MAAQ,GACjCqmM,EAAU4T,kBAAoBD,EAAUC,mBAExC6C,EAAeA,EAAavoQ,MAAM,IAEtC,MAAMzc,EAAS5G,KAAK6mK,KAAKgtG,cAAc+X,EAAaprQ,KAAK,IAAK20P,GAC9D,GAAIA,EAAUoT,OACV,IAAK,MAAM5hR,KAAawuQ,EAAUz2E,WAC9B1+L,KAAKqrR,eAAelW,EAAWzuQ,EAASC,EAAWC,QAIvD,IAAK,MAAMD,KAAawuQ,EAAUz2E,WAC9B1+L,KAAKszQ,WAAW5sQ,EAASC,EAAWC,GAIvCkiR,EAAUpqF,aACXy2E,EAAUrmM,KAAO,MAIzB,GAAIqmM,EAAUvuQ,QAAU1H,OAAO0N,KAAKuoQ,EAAUqT,aAAaziR,OAAS,EAAG,CACnE,MAAMW,EAAU1G,KAAK6mK,KAAKukH,qBAAqBjW,EAAUvuQ,OAAQuuQ,GACjE,IAAK,MAAM0W,KAAkB1W,EAAUqT,YAAa,CAChD,MAAM7hR,EAAY3G,KAAK6mK,KAAKl6J,YAAYmnH,UAAU+3J,GAC5C9+Q,EAASooQ,EAAUqT,YAAYqD,GACrC,GAAI9+Q,EAAOhH,OAAS,EAAG,CAEnB,MAAM+lR,EAAS/+Q,EAAO/G,KAAI,IAAMhG,KAAK6mK,KAAKk/G,oBAC1C,IAAK,IAAIntQ,EAAI,EAAGA,EAAI7L,EAAOhH,OAAQ6S,IAAK,CACpC,MAAMhS,EAAS5G,KAAK6mK,KAAKukH,qBAAqBr+Q,EAAO6L,GAAIu8P,GACzDn1Q,KAAKszQ,WAAWwY,EAAOlzQ,GAAI5Y,KAAK6mK,KAAKl6J,YAAYmnH,UAAUgzG,EAAOt1N,KAAKwiJ,IAAM,SAAUptJ,GACvF5G,KAAKszQ,WAAWwY,EAAOlzQ,GAAI5Y,KAAK6mK,KAAKl6J,YAAYmnH,UAAUgzG,EAAOt1N,KAAKwiJ,IAAM,QAAUp7I,EAAI7L,EAAOhH,OAAS,EAAK+lR,EAAOlzQ,EAAI,GAAK5Y,KAAK6mK,KAAKl6J,YAAYmnH,UAAUgzG,EAAOt1N,KAAKwiJ,IAAM,QAGtLh0J,KAAKszQ,WAAW5sQ,EAASC,EAAWmlR,EAAO,SAI3C9rR,KAAKszQ,WAAW5sQ,EAASC,EAAW3G,KAAK6mK,KAAKl6J,YAAYmnH,UAAUgzG,EAAOt1N,KAAKwiJ,IAAM,UAMtGh0J,KAAKgoR,eAAexlQ,MAEhB2yP,EAAU4T,kBAAoB5T,EAAUrmM,MACxCqmM,EAAUrmM,KAAKrpE,KAAK,KAAK0vQ,EAAUjyQ,SAGnCiyQ,EAAUrmM,MAAQg6M,IACbA,EAAUh6M,KAIXg6M,EAAUh6M,KAAOg6M,EAAUh6M,KAAKrwD,OAAO02P,EAAUrmM,MAHjDg6M,EAAUh6M,KAAOqmM,EAAUrmM,MAOvCsxH,QACI,GAAIpgM,KAAK8qC,SAASs9O,iBAAkB,CAChCpoR,KAAK8qC,SAASs9O,kBAAmB,EAEjC,IAAK,MAAM12E,KAAa1xM,KAAKmoR,aAAc,CACvC,MAAM/hR,EAAUpG,KAAKmoR,aAAaz2E,GAC7BtrM,EAAQyjR,aACTzjR,EAAQ67L,WAAW8nF,OAAS,eAC5B3jR,EAAQ67L,WAAW/lK,SAAWw1K,EAC9B1xM,KAAKiqR,gBAAgB7jR,EAAQ0iR,UAAW1iR,EAASsrM,GACjDtrM,EAAQyjR,YAAa,SACdzjR,EAAQ67L,WAAW8nF,cACnB3jR,EAAQ67L,WAAW/lK,UAIlC,IAAK,MAAMw1K,KAAa1xM,KAAKqoR,yBACzB,IAAK,MAAMS,KAAa9oR,KAAKqoR,yBAAyB32E,GAClD1xM,KAAKgoR,eAAeviR,KAAKqjR,GACzB9oR,KAAKgiM,UAAU,OAAQ,CAAE7D,SAAU,YAAalvK,KAAMyiL,IACtD1xM,KAAKyhM,aACLzhM,KAAKgoR,eAAexlQ,MAG5BxiB,KAAK8qC,SAASs9O,kBAAmB,GASzC+C,2BAA2BjoR,GACvB,OAAOlD,KAAK8qC,SAASihP,2BAAsC,SAAT7oR,GAA4B,SAATA,GAUzEmoR,eAAelW,EAAWzuQ,EAASC,EAAW0iR,GAC1C,GAAIlU,EAAU+V,mBAAoB,CAC9B,MAAMc,EAAQhsR,KAAK6mK,KAAKk/G,kBACxB/lR,KAAKszQ,WAAWtzQ,KAAK6mK,KAAKukH,qBAAqB1kR,EAASyuQ,GAAYxuQ,EAAWqlR,GAC/EhsR,KAAKszQ,WAAW0Y,EAAOhsR,KAAK6mK,KAAKl6J,YAAYmnH,UAAUgzG,EAAOt1N,KAAKwiJ,IAAM,SAAUh0J,KAAK6mK,KAAKukH,qBAAqB/B,EAAuBlU,IACzIn1Q,KAAKszQ,WAAW0Y,EAAOhsR,KAAK6mK,KAAKl6J,YAAYmnH,UAAUgzG,EAAOt1N,KAAKwiJ,IAAM,QAASh0J,KAAK6mK,KAAKl6J,YAAYmnH,UAAUgzG,EAAOt1N,KAAKwiJ,IAAM,YAEnI,CACD,IAAIi4H,EAAgB9W,EAAUsT,iBAAiB9hR,EAAUtH,OACpD4sR,IACD9W,EAAUsT,iBAAiB9hR,EAAUtH,OAAS4sR,EAAgB,IAE9D5C,GACA4C,EAAcxmR,KAAK4jR,IAU/B/V,WAAW5sQ,EAASC,EAAWC,GAED,cAArBF,EAAQI,UAA4BJ,EAAQrH,MAAMyY,QAAQ,KAAO,GACvC,cAAvBnR,EAAUG,UAA4BH,EAAUtH,MAAMyY,QAAQ,KAAO,GACjD,cAApBlR,EAAOE,UAA4BF,EAAOvH,MAAMyY,QAAQ,KAAO,GAGvE9X,KAAKyF,KAAKzF,KAAK6mK,KAAKl6J,YAAYnG,KAAKE,EAASC,EAAWC,EAAQ5G,KAAKq0H,eAQ1E41J,gBAAgBnB,EAAW1iR,EAAS8lR,GAKhC,GAJAlsR,KAAKgoR,eAAeviR,KAAKqjR,GACzB1iR,EAAQyjR,YAAa,EAGhBzjR,EAAQ+lR,sBAQR,CACD,IAAIC,EAAiB,EACrBpsR,KAAK6mK,KAAKwlH,iBAAmB,IAAMjmR,EAAQ+lR,sBAAsBC,UATjEhmR,EAAQ+lR,sBAAwB,GAChCnsR,KAAK6mK,KAAKwlH,iBAAmB,KACzB,MAAML,EAAQhsR,KAAK6mK,KAAKl6J,YAAYqnH,YAEpC,OADA5tH,EAAQ+lR,sBAAsB1mR,KAAKumR,GAC5BA,GAQfhsR,KAAKssR,wBAAwBlmR,GAAS,EAAM8lR,GAC5ClsR,KAAK6mK,KAAKwlH,iBAAmB,KAC7BrsR,KAAKgoR,eAAexlQ,MAYxB8pQ,wBAAwBlmR,EAAS0iF,EAAMojM,GAEnC,GAAKpjM,GAAwC,cAAhC1iF,EAAQ67L,WAAW9D,UAA4B/3L,EAAQ67L,WAAWhzK,OAASi9P,EAAxF,CAGAlsR,KAAKgiM,UAAU57L,EAAQlD,KAAMkD,EAAQ67L,YACrC,IAAK,MAAMnzH,KAAQ1oE,EAAQ0oE,KACvB9uE,KAAKkiM,OAAOpzH,GAEhB,IAAK,MAAM7oE,KAASG,EAAQxB,SACxB5E,KAAKssR,wBAAwBrmR,GAAO,EAAOimR,GAE/ClsR,KAAKyhM,cAETgxE,iBAAiBzyE,GACb,OAAO,IAAI4xE,EAAcxpL,OAAO,CAC5Bs6G,WAAY,KACR,IACI1iM,KAAKyhM,aACDzhM,KAAKigM,mBACLjgM,KAAKigM,kBAAkBwB,aAG/B,MAAOhzK,GACHzuB,KAAKgM,KAAK,QAASyiB,KAG3BwxG,MAAO,KACH,IACIjgI,KAAKogM,QACDpgM,KAAKigM,mBACLjgM,KAAKigM,kBAAkBG,QAG/B,MAAO3xK,GACHzuB,KAAKgM,KAAK,QAASyiB,KAG3Bm0K,UAAW,CAAC1/L,EAAM++L,KACd,IACIjiM,KAAKgiM,UAAU9+L,EAAM++L,GACjBjiM,KAAKigM,mBACLjgM,KAAKigM,kBAAkB+B,UAAU9+L,EAAM++L,GAG/C,MAAOxzK,GACHzuB,KAAKgM,KAAK,QAASyiB,KAG3Bo0K,OAAS35L,IACL,IACIlJ,KAAKkiM,OAAOh5L,GACRlJ,KAAKigM,mBACLjgM,KAAKigM,kBAAkBiC,OAAOh5L,GAGtC,MAAOulB,GACHzuB,KAAKgM,KAAK,QAASyiB,MAG5B,CACCq0K,gBAAgB,EAChBC,sBAAsB,EACtB/C,QAAAA,KAIZ5gM,EAAQmhM,WAAaA,8BCrxBrBrhM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmtR,kBAAoBntR,EAAQ8oR,mBAAgB,EAKpD9oR,EAAQ8oR,cAAgB,CACpB,GAAI,CACAgC,SAAS,EACTE,SAAS,EACTW,eAAe,EACftB,8BAA8B,EAC9BsC,0BAA0B,EAC1BP,mBAAmB,EACnBnB,SAAS,EACTkB,cAAc,EACdnD,kBAAkB,EAClBqC,qBAAqB,EACrB9B,qBAAqB,EACrB+B,eAAe,GAEnB,KAAQ,CACJR,SAAS,EACTE,SAAS,EACTW,eAAe,EACftB,8BAA8B,EAC9BsC,0BAA0B,EAC1BP,mBAAmB,EACnBnB,SAAS,EACTkB,cAAc,EACdnD,kBAAkB,EAClBqC,qBAAqB,EACrB9B,qBAAqB,EACrB+B,eAAe,GAEnB,KAAQ,CACJR,SAAS,EACTE,SAAS,EACTW,eAAe,EACftB,8BAA8B,EAC9BsC,0BAA0B,EAC1BP,mBAAmB,EACnBnB,SAAS,EACTkB,cAAc,EACdnD,kBAAkB,EAClBqC,qBAAqB,EACrB9B,qBAAqB,EACrB+B,eAAe,GAEnB,MAAS,CACLR,SAAS,EACTE,SAAS,EACTW,eAAe,EACftB,8BAA8B,EAC9BsC,0BAA0B,EAC1BP,mBAAmB,EACnBnB,SAAS,EACTkB,cAAc,EACdnD,kBAAkB,EAClBqC,qBAAqB,EACrB9B,qBAAqB,EACrB+B,eAAe,GAEnB,IAAO,CACHR,SAAS,EACTE,SAAS,EACTW,eAAe,EACftB,8BAA8B,EAC9BsC,0BAA0B,EAC1BP,mBAAmB,EACnBnB,SAAS,EACTkB,cAAc,EACdnD,kBAAkB,EAClBqC,qBAAqB,EACrB9B,qBAAqB,EACrB+B,eAAe,IAKvBtrR,EAAQmtR,kBAAoB,CAExB,YAAa,OAEb,wBAAyB,QAEzB,kBAAmB,MACnB,WAAY,MACZ,gBAAiB,qCCxFrBrtR,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoS,UAAO,EACf,MAAMwtK,EAA6B,EAAQ,OACrC+oG,EAAgB,EAAQ,OACxB55Q,EAAqB,EAAQ,OAInC,MAAMqD,EACF/R,YAAYkN,EAAarE,GACrBtI,KAAK2M,YAAcA,GAAe,IAAIwB,EAAmBE,YACzDrO,KAAKsI,QAAUtI,KAAK2M,YAAYmnH,UAAUxrH,GAAW,IACrDtI,KAAKwsR,gBAAkBxsR,KAAKsI,QAShC8B,qBAAqB63L,EAAYwqF,EAAgBhC,GAC7C,MAAMiC,EAAqB,GAC3B,GAAIjC,EACA,IAAK,MAAMkC,KAAa1qF,EAChB0qF,EAAUrlQ,WAAW,WACrBolQ,EAAmBC,EAAU1qQ,OAAO,IAAMggL,EAAW0qF,IAIjE,GAAI1qF,EAAWthK,QAAUzhC,OAAO0N,KAAK8/Q,GAAoB3mR,OAAS,EAAG,CACjE,MAAM2xI,EAAWx4I,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI22Q,GAAiBC,GAClE,GAAIzqF,EAAWthK,OAAQ,CACnB,IAAI4iH,EAEJ,KAAOA,EAAc/xI,EAAKo7Q,aAAap5P,KAAKyuK,EAAWthK,SACnD+2G,EAAS6L,EAAY,IAAMA,EAAY,GAG/C,OAAO7L,EAGP,OAAO+0I,EASfriR,0BAA0BgH,EAAM+jQ,GAE5B,MAAM0X,EAAaz7Q,EAAK0G,QAAQ,KAChC,IAAI6oB,EACA46I,EAMJ,GALIsxG,GAAc,IACdlsP,EAASvvB,EAAK6Q,OAAO,EAAG4qQ,GACxBtxG,EAAQnqK,EAAK6Q,OAAO4qQ,EAAa,IAGtB,KAAXlsP,EACA,MAAO,sCAAwC46I,EAGnD,GAAI56I,EAAQ,CACR,MAAMmsP,EAAgB3X,EAAUuT,YAAY/nP,GAC5C,GAAImsP,EACA,OAAOA,EAAgBvxG,EAI/B,GAAInqK,EAAM,CACN,MAAM27Q,EAAe5X,EAAUuT,YAAYt3Q,EAAK47Q,qBAChD,GAAID,EACA,OAAOA,EAGf,OAAO37Q,EAOXhH,kBAAkB26E,GACd,OAAOvzE,EAAK8qP,UAAUnkP,KAAK4sE,GAQ/B36E,4BAA4B07N,GACxB,OAAOiiD,EAAcwE,kBAAkBzmD,IAAgB,GAO3DqkD,WAAW8C,GACP,IAAIh+P,EAAOg+P,EACX,MAAMC,EAAgBj+P,EAAKnX,QAAQ,KAInC,OAHIo1Q,GAAiB,IACjBj+P,EAAOA,EAAKhN,OAAO,EAAGirQ,IAEnBltR,KAAK2M,YAAYmnH,UAAUkrD,EAA2B/zK,QAAQgkB,EAAMjvB,KAAKsI,QAAQjJ,QAQ5F+rR,qBAAqBh6Q,EAAM+jQ,GACvB,OAAgB,IAAT/jQ,EAAgBpR,KAAKuqR,eAAepV,GAAa/jQ,EAO5Dm5Q,eAAepV,GACX,OAAOA,EAAU6T,cAAgBhpR,KAAKsI,QAE1C6qQ,gBAAgB/6I,EAAO+8I,EAAWgY,EAAYC,GAC1C,OAAOh1J,EAAMt3G,MAAM,OACdxT,QAAQ8D,GAASA,IAAS+7Q,GAAc/7Q,EAAK0G,QAAQ,MAAQ,KAC7D9R,KAAKm4L,GAAan+L,KAAK6qR,UAAU1sF,EAAUg3E,GAAW,GAAM,EAAMiY,KAClE9/Q,QAAQ8D,GAAiB,MAARA,IAQ1ByiQ,cAAc5/I,EAASkhJ,GACnB,GAAIA,EAAUmV,wBAA0BnV,EAAUxgJ,SAC9C,IAAK,MAAMpiH,KAASf,EAAKikQ,aACrB,GAAIxhJ,EAAQnrG,MAAMvW,EAAMw0J,OAAQ,CAC5BouG,EAAUxgJ,SAAW30H,KAAK2M,YAAYmnH,UAAUtiH,EAAKyiJ,IAAM1hJ,EAAMpM,MACjE,MAIZ,OAAOnG,KAAK2M,YAAYsnH,QAAQA,EAASkhJ,EAAUxgJ,UAAYwgJ,EAAUntQ,UAM7E+9Q,kBACI,OAAI/lR,KAAKqsR,iBACErsR,KAAKqsR,mBAETrsR,KAAK2M,YAAYqnH,YAE5B62J,UAAUz5Q,EAAM+jQ,EAAWxZ,EAAO0xB,EAAgBD,GAE9C,GADAh8Q,EAAOA,GAAQ,IACVi8Q,EAID,OAHK1xB,IACDvqP,EAAO4tK,EAA2B/zK,QAAQmG,EAAMpR,KAAKuqR,eAAepV,GAAW91Q,QAE9EmS,EAAK0kP,WAAW9kP,GAGdpR,KAAK2M,YAAYmnH,UAAU1iH,GAFvB,KAKf,GAAIA,EAAKrL,OAAS,GAAiB,MAAZqL,EAAK,IAAwC,MAA1BA,EAAKA,EAAKrL,OAAS,KACzDqL,EAAOA,EAAK6Q,OAAO,EAAG7Q,EAAKrL,OAAS,IAE3B+R,QAAQ,KAAO,EACpB,OAAO,KAIf,GAAI1G,EAAKkW,WAAW,MAChB,OAAO8lQ,EAAiBptR,KAAK2M,YAAYqnH,UAAU5iH,EAAK6Q,OAAO,IAAM,cAAgB,KAGzF,GAAI05O,GACIwZ,EAAUxZ,OAASvqP,EAAK0G,QAAQ,KAAO,EACvC,OAAO9X,KAAK2M,YAAYmnH,UAAUqhJ,EAAUxZ,MAAQvqP,GAI5D,IAAI2zE,EAAMvzE,EAAK87Q,mBAAmBl8Q,EAAM+jQ,GAQxC,OANKxZ,EAGIvqP,IAAS2zE,IACdA,EAAMi6F,EAA2B/zK,QAAQ85E,EAAK/kF,KAAKwsR,gBAAgBntR,QAHnE0lF,EAAMi6F,EAA2B/zK,QAAQ85E,EAAK/kF,KAAKuqR,eAAepV,GAAW91Q,OAK5EmS,EAAK0kP,WAAWnxK,GAGd/kF,KAAK2M,YAAYmnH,UAAU/uC,GAFvB,MAKnB3lF,EAAQoS,KAAOA,EACfA,EAAKwiJ,IAAM,8CACXxiJ,EAAKyiJ,IAAM,oCACXziJ,EAAK+jQ,KAAO,6BACZ/jQ,EAAKo7Q,aAAe,iCACpBp7Q,EAAKikQ,aAAe,CAChB,CACI1uG,MAAO,kFACP5gK,KAAM,YAEV,CACI4gK,MAAO,qGACP5gK,KAAM,YAEV,CAAE4gK,MAAO,mCAAoC5gK,KAAM,QACnD,CAAE4gK,MAAO,wEAAyE5gK,KAAM,QACxF,CAAE4gK,MAAO,sBAAuB5gK,KAAM,cACtC,CAAE4gK,MAAO,WAAY5gK,KAAM,UAE/BqL,EAAK8qP,UAAY,uFC/NjB,IAAI96P,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAuBlD,+BCX5CF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmuR,gBAAa,EAIrB,MAAMA,UAAmB/sR,MACrBf,YAAY+oF,EAAQ9xE,GAChB,MAAM82Q,EAAYhlM,EAAOilM,UAAUhgF,QACnC9tM,MAAM6oF,EAAOklM,cAAgB,QAAQF,EAAUh2L,KAAO,YAAYg2L,EAAU34C,OAAS,MAAMn+N,IAAYA,IAG/GtX,EAAQmuR,WAAaA,gCCXrBruR,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQuuR,UAAYvuR,EAAQsvM,kBAAe,EAC3C,MAAM1vB,EAA6B,EAAQ,OACrC4uG,EAAQ,EAAQ,MAChBjjR,EAAW,EAAQ,OACnBkjR,EAAe,EAAQ,OACvB1/Q,EAAqB,EAAQ,OACnC,MAAMugM,UAAqB/jM,EAAS41H,UAChC9gI,YAAYC,GACRC,MAAM,CAAEgiI,oBAAoB,IAC5B3hI,KAAKgoR,eAAiB,GACtBhoR,KAAK8tR,QAAU,GACXpuR,IACAR,OAAO4W,OAAO9V,KAAMN,GACpBM,KAAKqR,QAAU3R,GAEdM,KAAK2M,cACN3M,KAAK2M,YAAc,IAAIwB,EAAmBE,aAEzCrO,KAAKsI,UACNtI,KAAKsI,QAAU,IAEdtI,KAAKq0H,eACNr0H,KAAKq0H,aAAer0H,KAAK2M,YAAY0nH,gBAEzCr0H,KAAKytR,UAAYG,EAAMG,aAAa/tR,KAAK8kF,OAAQ,CAAEkpM,OAAO,EAAOrkP,SAAU3pC,KAAK0tR,gBAE3E1tR,KAAK8kF,SACN9kF,KAAKytR,UAAUhgF,QAAQwgF,UAAY,YAEvCjuR,KAAKkuR,qBAUT9jR,sBAAsBuY,EAAKmmQ,GACvB,MAAMqF,EAAS,GACf,IAAIC,GAAQ,EACZ,IAAK,MAAMnF,KAAgBtmQ,EAAIs/K,WACvBgnF,EAAa3hQ,WAAW,WACI,IAAxB2hQ,EAAaljR,QAEbqoR,GAAQ,EACRD,EAAO,IAAMxrQ,EAAIs/K,WAAWgnF,IAEI,MAA3BA,EAAa54O,OAAO,KAEzB+9O,GAAQ,EACRD,EAAOlF,EAAahnQ,OAAO,IAAMU,EAAIs/K,WAAWgnF,KAI5D,MAAMoF,EAAWvF,GAAaA,EAAUwF,GAAKxF,EAAUwF,GAAK,CAAC5/E,EAAa6/E,YAC1E,OAAOH,EAAQC,EAAS5vQ,OAAO,CAAC0vQ,IAAWE,EAU/CjkR,0BAA0BgH,EAAMk9Q,EAAI9lM,GAChC,MAAMqkM,EAAaz7Q,EAAK0G,QAAQ,KAChC,IAAI6oB,EACA46I,EACAsxG,GAAc,GAEdlsP,EAASvvB,EAAK6Q,OAAO,EAAG4qQ,GACxBtxG,EAAQnqK,EAAK6Q,OAAO4qQ,EAAa,KAIjClsP,EAAS,GACT46I,EAAQnqK,GAEZ,IAAIoiD,EAAM,KACNg7N,EAAmB,KACvB,IAAK,IAAI51Q,EAAI01Q,EAAGvoR,OAAS,EAAG6S,GAAK,EAAGA,IAAK,CACrC,MAAM61Q,EAAYH,EAAG11Q,GAAG+nB,GACxB,GAAI8tP,EAAW,CACXj7N,EAAMi7N,EACN,MAEMD,IACNA,EAAmBF,EAAG11Q,GAAG,KAGjC,IAAK46C,EAAK,CAEN,GAAI7yB,GAAqB,UAAXA,EACV,MAAM,IAAIktP,EAAaN,WAAW/kM,EAAQ,eAAe7nD,eAAoBvvB,qBAGjFoiD,EAAMg7N,GAAoB,GAE9B,MAAO,CAAE7tP,OAAAA,EAAQ46I,MAAAA,EAAO/nH,IAAAA,GAO5BppD,kBAAkB26E,GACd,OAAO2pH,EAAa4tD,UAAUnkP,KAAK4sE,GAOvCkpH,OAAOxlH,GACH,MAAM/kF,EAAS,IAAIiH,EAAS21H,YAAY,CAAEqB,oBAAoB,IAC9Dl5C,EAAOj9E,GAAG,SAAUO,GAAU2hF,EAAO1hF,KAAK,QAASD,KACnD08E,EAAOj9E,GAAG,QAAStC,GAASxF,EAAO+B,KAAKyD,KACxCu/E,EAAOj9E,GAAG,OAAO,IAAM9H,EAAO+B,KAAK,QACnC,MAAMioF,EAAShqF,EAAOupH,KAAK,IAAIyhF,EAAa1uM,KAAKqR,UACjD,OAAOq8E,EAEX8/B,WAAW9kC,EAAO2C,EAAUr9E,GACxB,IACIhO,KAAKytR,UAAUhzQ,MAAMiuE,EAAO2C,GAEhC,MAAO58D,GACH,OAAOzgB,EAASygB,GAEpBzgB,IAOJ0gR,cAAch4Q,GACV,OAAO,IAAIm3Q,EAAaN,WAAWvtR,KAAM0W,GAW7Ci4Q,WAAWtvR,EAAO81Q,GACd,OAAOn1Q,KAAK4uR,eAAe5vG,EAA2B/zK,QAAQ5L,EAAO81Q,EAAU7sQ,UAUnFsmR,eAAep7N,GAEX,IAAKk7I,EAAawnD,WAAW1iM,GACzB,MAAMxzD,KAAK0uR,cAAc,gBAAgBl7N,KAE7C,OAAOxzD,KAAK2M,YAAYmnH,UAAUtgE,GAOtCq7N,eAAexvR,GAEX,IAAKqvM,EAAaogF,eAAe32Q,KAAK9Y,GAClC,MAAMW,KAAK0uR,cAAc,uBAAuBrvR,KAGxD6uR,qBACIluR,KAAKytR,UAAUjiR,GAAG,SAAUO,GAAU/L,KAAKgM,KAAK,QAASD,KACzD/L,KAAKytR,UAAUjiR,GAAG,UAAWxL,KAAK+uR,MAAMvoQ,KAAKxmB,OAC7CA,KAAKytR,UAAUjiR,GAAG,OAAQxL,KAAKkiM,OAAO17K,KAAKxmB,OAC3CA,KAAKytR,UAAUjiR,GAAG,WAAYxL,KAAKgvR,WAAWxoQ,KAAKxmB,OACnDA,KAAKytR,UAAUjiR,GAAG,UAAWxL,KAAKivR,UAAUzoQ,KAAKxmB,OAMrD+uR,MAAMpsQ,GAEF,MAAMmmQ,EAAY9oR,KAAKgoR,eAAejiR,OAChC/F,KAAKgoR,eAAehoR,KAAKgoR,eAAejiR,OAAS,GAAK,KAC5D,IAAImpR,EAAmBvB,EAAUwB,SAMjC,GALIrG,IACAA,EAAUsG,aAAc,EACxBF,EAAmBpG,EAAUuG,mBAG7BvG,GAAaA,EAAUwG,mBAAoB,CAE3C,MAAMnwD,EAAUx8M,EAAIzf,KACpB,IAAI++L,EAAa,GACjB,IAAK,MAAMgnF,KAAgBtmQ,EAAIs/K,WAC3BA,GAAc,IAAIgnF,MAAiBtmQ,EAAIs/K,WAAWgnF,MAEtD,MACMsG,EAAY,IADKpwD,IAAUl9B,KAEjC6mF,EAAUwG,mBAAmB7pR,KAAK8pR,GAElC,MAAMC,EAAkB,CAAEF,mBAAoBxG,EAAUwG,oBAIxD,OAHAE,EAAgBC,6BAA+B,KAAKtwD,UACpDn/N,KAAKgoR,eAAeviR,KAAK+pR,GAI7B,MAAMra,EAAY,GACd2T,GAEA3T,EAAUntQ,SAAW8gR,EAAU9gR,SAC/BmtQ,EAAU7sQ,QAAUwgR,EAAUxgR,SAG9B6sQ,EAAU7sQ,QAAUtI,KAAKsI,QAE7BtI,KAAKgoR,eAAeviR,KAAK0vQ,GACzBA,EAAUmZ,GAAK5/E,EAAaghF,eAAe/sQ,EAAKmmQ,GAC5CoG,IAAqBvB,EAAUwB,SAC/BnvR,KAAK2vR,cAAchtQ,EAAKwyP,EAAW2T,GAAYA,GAG/C9oR,KAAK4vR,cAAcjtQ,EAAKwyP,EAAW2T,GAU3C6G,cAAchtQ,EAAKwyP,EAAW2T,EAAW+G,GACrC,MAAMC,EAAcphF,EAAa4+E,mBAAmB3qQ,EAAIzf,KAAMiyQ,EAAUmZ,GAAItuR,MAC5Em1Q,EAAUka,kBAAoB1B,EAAUoC,SAExC,IAAIC,GAAY,EAChB,GAAIF,EAAYt8N,MAAQk7I,EAAa16C,IAAK,CAEtC,IAAK67H,GAAWnhF,EAAauhF,wBAAwBn4Q,QAAQg4Q,EAAYv0G,QAAU,EAC/E,MAAMv7K,KAAK0uR,cAAc,8BAA8BoB,EAAYv0G,SAEvE,OAAQu0G,EAAYv0G,OAChB,IAAK,MAED45F,EAAUka,kBAAoB1B,EAAUwB,SAC5C,IAAK,cACDa,GAAY,GAGxB,MAAMtxF,EAAa,GACbttC,EAAU,GAGhB,IAAI8+H,EAAqB,KACrBC,GAAqB,EACrBC,GAAoB,EACpBC,EAAe,KACnB,IAAK,MAAMpH,KAAgBtmQ,EAAIs/K,WAAY,CACvC,MAAMquF,EAAiB3tQ,EAAIs/K,WAAWgnF,GAChCsH,EAAuB7hF,EAAa4+E,mBAAmBrE,EAAc9T,EAAUmZ,GAAItuR,MACzF,GAAI8oR,GAAayH,EAAqB/8N,MAAQk7I,EAAa16C,IACvD,OAAQu8H,EAAqBh1G,OACzB,IAAK,QACD,GAAI20G,EACA,MAAMlwR,KAAK0uR,cAAc,sEAC7C4B,SAAsBJ,kBAENA,EAAqBI,EACrB,SACJ,IAAK,KACD,GAAIJ,EACA,MAAMlwR,KAAK0uR,cAAc,sEAC7C4B,SAAsBJ,kBAENlwR,KAAK6uR,eAAeyB,GACpBJ,EAAqB,IAAMI,EAC3BH,GAAqB,EACrB,SACJ,IAAK,SACD,GAAID,EACA,MAAMlwR,KAAK0uR,cAAc,sEAC7C4B,SAAsBJ,kBAENlwR,KAAK6uR,eAAeyB,GACpBJ,EAAqBI,EACrBF,GAAoB,EACpB,SACJ,IAAK,QACD,MAAMpwR,KAAK0uR,cAAc,+BAC7B,IAAK,OAED2B,EAAeC,EACf,SACJ,IAAK,YACD,MAAMtwR,KAAK0uR,cAAc,mCAC7B,IAAK,kBACD,MAAM1uR,KAAK0uR,cAAc,yCAC7B,IAAK,KACD,MAAM1uR,KAAK0uR,cAAc,mDAGhC,GAAI6B,EAAqB/8N,MAAQk7I,EAAa8hF,IAAK,CACpD,GAAmC,SAA/BD,EAAqBh1G,MAAkB,CACvC45F,EAAUntQ,SAA8B,KAAnBsoR,EAAwB,KAAOA,EAAe58P,cACnE,SAEC,GAAmC,SAA/B68P,EAAqBh1G,MAAkB,CAE5C45F,EAAU7sQ,QAAU02K,EAA2B/zK,QAAQqlR,EAAgBnb,EAAU7sQ,SACjF,UAK4B,QAAhCioR,EAAqB5vP,QAAoB4vP,EAAqB/8N,MAC9DkrI,EAAWj5L,KAAKzF,KAAK4uR,eAAe2B,EAAqB/8N,IAAM+8N,EAAqBh1G,QACpFnqB,EAAQ3rJ,KAAK6qR,IAgBrB,GAZ2B,OAAvBJ,IACA/a,EAAUzuQ,QAAU0pR,EACdpwR,KAAK2M,YAAYqnH,UAAUk8J,GAAsBlwR,KAAK2uR,WAAWuB,EAAoB/a,GACvFgb,GACAnwR,KAAKywR,YAAYtb,EAAUzuQ,UAI9ByuQ,EAAUzuQ,UACXyuQ,EAAUzuQ,QAAU1G,KAAK2M,YAAYqnH,aAGrCg8J,EAAW,CACX,MAAM7pR,EAAOnG,KAAK4uR,eAAekB,EAAYt8N,IAAMs8N,EAAYv0G,OAC/Dv7K,KAAKszQ,WAAW6B,EAAUzuQ,QAAS1G,KAAK2M,YAAYmnH,UAAU46E,EAAa16C,IAAM,QAAS7tJ,EAAM2iR,EAAYA,EAAU4H,mBAAqB,MAE/I,GAAI5H,EAAW,CAEX,GAAIA,EAAUniR,UACV,GAAImiR,EAAU6H,0BAA2B,CAErC,MAAMjmB,EAAW1qQ,KAAK2M,YAAYqnH,YAElCh0H,KAAKszQ,WAAWwV,EAAU6H,0BAA2B7H,EAAU8H,4BAA6BlmB,EAAUoe,EAAU4H,oBAEhH1wR,KAAKszQ,WAAW5I,EAAU1qQ,KAAK2M,YAAYmnH,UAAU46E,EAAa16C,IAAM,SAAUmhH,EAAUzuQ,QAASyuQ,EAAUub,oBAE/G5H,EAAU6H,0BAA4BjmB,EACtCoe,EAAU8H,4BAA8B5wR,KAAK2M,YAAYmnH,UAAU46E,EAAa16C,IAAM,YAErF,CAEDh0J,KAAKszQ,WAAWwV,EAAUpiR,QAASoiR,EAAUniR,UAAWwuQ,EAAUzuQ,QAASoiR,EAAU4H,oBAErF,IAAK,IAAI93Q,EAAI,EAAGA,EAAIkwQ,EAAU+H,uBAAuB9qR,OAAQ6S,IACzD5Y,KAAKszQ,WAAW6B,EAAUzuQ,QAASoiR,EAAU+H,uBAAuBj4Q,GAAIkwQ,EAAUgI,oBAAoBl4Q,GAAI,MAG9GkwQ,EAAU+H,uBAAyB,GACnC/H,EAAUgI,oBAAsB,GAChChI,EAAUiI,kBAAmB,EAIrC,IAAK,IAAIn4Q,EAAI,EAAGA,EAAI8lL,EAAW34L,OAAQ6S,IAAK,CACxC,MAAMhS,EAAS5G,KAAK2M,YAAYsnH,QAAQm9B,EAAQx4I,GAAIu8P,EAAUxgJ,UAAYwgJ,EAAUntQ,UACpFhI,KAAKszQ,WAAW6B,EAAUzuQ,QAASg4L,EAAW9lL,GAAIhS,EAAQkiR,EAAU4H,oBAGpEL,GACArwR,KAAKszQ,WAAW6B,EAAUzuQ,QAAS1G,KAAK2M,YAAYmnH,UAAU46E,EAAa16C,IAAM,QAASh0J,KAAK4uR,eAAeyB,GAAe,OAUzIT,cAAcjtQ,EAAKwyP,EAAW2T,GAC1B,MAAMgH,EAAcphF,EAAa4+E,mBAAmB3qQ,EAAIzf,KAAMiyQ,EAAUmZ,GAAItuR,MAc5E,GAbAm1Q,EAAUka,kBAAoB1B,EAAUwB,SACxCha,EAAUzuQ,QAAUoiR,EAAUpiR,QAC1BopR,EAAYt8N,MAAQk7I,EAAa16C,KAA6B,OAAtB87H,EAAYv0G,OAE/CutG,EAAUkI,kBACXlI,EAAUkI,gBAAkB,GAEhC7b,EAAUxuQ,UAAY3G,KAAK4uR,eAAekB,EAAYt8N,IAAM,IAAMs1N,EAAUkI,oBAG5E7b,EAAUxuQ,UAAY3G,KAAK4uR,eAAekB,EAAYt8N,IAAMs8N,EAAYv0G,OAGxEu0G,EAAYt8N,MAAQk7I,EAAa16C,KAC9B06C,EAAauiF,4BAA4Bn5Q,QAAQg4Q,EAAYv0G,QAAU,EAC1E,MAAMv7K,KAAK0uR,cAAc,kCAAkCoB,EAAYv0G,SAE3E45F,EAAU0b,uBAAyB,GACnC1b,EAAU2b,oBAAsB,GAChC,IAAIn5C,GAAY,EACZu5C,GAAqB,EAGrBC,EAAwB,KACxBC,GAAuB,EAC3B,MAAM1yF,EAAa,GACbttC,EAAU,GAChB,IAAK,MAAMigI,KAAwB1uQ,EAAIs/K,WAAY,CAC/C,MAAMqvF,EAAyB3uQ,EAAIs/K,WAAWovF,GACxCE,EAA+B7iF,EAChC4+E,mBAAmB+D,EAAsBlc,EAAUmZ,GAAItuR,MAC5D,GAAIuxR,EAA6B/9N,MAAQk7I,EAAa16C,IAClD,OAAQu9H,EAA6Bh2G,OACjC,IAAK,WACD,GAAI41G,EACA,MAAMnxR,KAAK0uR,cAAc,4BAA4B4C,sBAA2CH,OAEpG,GAAIx5C,EACA,MAAM33O,KAAK0uR,cAAc,wEAAwE4C,MAErGnc,EAAUia,aAAc,EACxB+B,EAAwBG,EACxBF,GAAuB,EACvB,SACJ,IAAK,WACD,GAAIF,EACA,MAAMlxR,KAAK0uR,cAAc,8DAA8D4C,OAE3F,GAAI35C,EACA,MAAM33O,KAAK0uR,cAAc,wEAAwE4C,MAErGnc,EAAUxgJ,SAAW30H,KAAK2uR,WAAW2C,EAAwBnc,GAC7D,SACJ,IAAK,SACD,GAAI+b,EACA,MAAMlxR,KAAK0uR,cAAc,4DAA4D4C,OAEzF,GAAInc,EAAUia,YACV,MAAMpvR,KAAK0uR,cAAc,2CAA2C4C,OAExE,GAAI35C,EACA,MAAM33O,KAAK0uR,cAAc,sEAAsE4C,MAEnGtxR,KAAK6uR,eAAeyC,GACpBnc,EAAUia,aAAc,EACxB+B,EAAwBG,EACxBF,GAAuB,EACvB,SACJ,IAAK,QACD,MAAMpxR,KAAK0uR,cAAc,+BAC7B,IAAK,YAED,GAAIwC,EACA,MAAMlxR,KAAK0uR,cAAc,+EAE7B,GAAIvZ,EAAUxgJ,SACV,MAAM30H,KAAK0uR,cAAc,wEAAwEvZ,EAAUxgJ,SAASt1H,UAExH,GAAI8xR,EACA,MAAMnxR,KAAK0uR,cAAc,sFAAsFyC,MAEnH,GAA+B,aAA3BG,EAAuC,CACvC35C,GAAY,EACZw9B,EAAUka,kBAAoB1B,EAAUoC,SAExC,MAAMyB,EAAcxxR,KAAK2M,YAAYqnH,YACrCh0H,KAAKszQ,WAAW6B,EAAUzuQ,QAASyuQ,EAAUxuQ,UAAW6qR,EAAarc,EAAUub,oBAC/Evb,EAAUzuQ,QAAU8qR,EACpBrc,EAAUxuQ,UAAY,SAEU,eAA3B2qR,GACL35C,GAAY,EAEZw9B,EAAUia,aAAc,EACxBja,EAAUwb,0BAA4Bxb,EAAUzuQ,QAChDyuQ,EAAUyb,4BAA8Bzb,EAAUxuQ,UAClDyqR,GAAuB,GAES,YAA3BE,IACL35C,GAAY,EAEZw9B,EAAUsc,sBAAuB,EACjCtc,EAAUma,mBAAqB,IAEnC,SACJ,IAAK,KACDtvR,KAAK6uR,eAAeyC,GACpBnc,EAAUub,mBAAqB1wR,KAAK2uR,WAAW,IAAM2C,EAAwBnc,GAC7En1Q,KAAKywR,YAAYtb,EAAUub,oBAC3B,cAGP,GAAIa,EAA6B/9N,MAAQk7I,EAAa8hF,KACb,SAAvCe,EAA6Bh2G,MAAkB,CAClD45F,EAAUntQ,SAAsC,KAA3BspR,EACf,KAAOA,EAAuB59P,cACpC,SAIJ,GAA4C,QAAxC69P,EAA6B5wP,QAA4D,UAAxC4wP,EAA6B5wP,QAC3E4wP,EAA6B/9N,IAAK,CACrC,GAAImkL,GAAaw9B,EAAUxgJ,SACvB,MAAM30H,KAAK0uR,cAAc,sEAAsE4C,KAEnGnc,EAAUia,aAAc,EACxB8B,GAAqB,EACrBxyF,EAAWj5L,KAAKzF,KAAK4uR,eAAe2C,EAA6B/9N,IAAM+9N,EAA6Bh2G,QACpGnqB,EAAQ3rJ,KAAKzF,KAAK2M,YAAYsnH,QAAQq9J,EAAwBnc,EAAUxgJ,UAAYwgJ,EAAUntQ,YAItG,GAA8B,OAA1BmpR,EAAgC,CAChC,MAAMO,EAAgBvc,EAAUzuQ,QAChCyuQ,EAAUzuQ,QAAU0qR,EACdpxR,KAAK2M,YAAYqnH,UAAUm9J,GAAyBnxR,KAAK2uR,WAAWwC,EAAuBhc,GACjGn1Q,KAAKszQ,WAAWoe,EAAevc,EAAUxuQ,UAAWwuQ,EAAUzuQ,QAASyuQ,EAAUub,oBAEjF,IAAK,IAAI93Q,EAAI,EAAGA,EAAI8lL,EAAW34L,OAAQ6S,IACnC5Y,KAAKszQ,WAAW6B,EAAUzuQ,QAASg4L,EAAW9lL,GAAIw4I,EAAQx4I,GAAI,MAElEu8P,EAAU4b,kBAAmB,OAExBK,IAILjc,EAAU0b,uBAAyBnyF,EACnCy2E,EAAU2b,oBAAsB1/H,EAChC+jH,EAAU4b,kBAAmB,GAWrCzd,WAAW5sQ,EAASC,EAAWC,EAAQ+qR,GACnC3xR,KAAKyF,KAAKzF,KAAK2M,YAAYnG,KAAKE,EAASC,EAAWC,EAAQ5G,KAAKq0H,eAE7Ds9J,IACA3xR,KAAKyF,KAAKzF,KAAK2M,YAAYnG,KAAKmrR,EAAa3xR,KAAK2M,YAAYmnH,UAAU46E,EAAa16C,IAAM,QAASh0J,KAAK2M,YAAYmnH,UAAU46E,EAAa16C,IAAM,aAAch0J,KAAKq0H,eACrKr0H,KAAKyF,KAAKzF,KAAK2M,YAAYnG,KAAKmrR,EAAa3xR,KAAK2M,YAAYmnH,UAAU46E,EAAa16C,IAAM,WAAYttJ,EAAS1G,KAAKq0H,eACrHr0H,KAAKyF,KAAKzF,KAAK2M,YAAYnG,KAAKmrR,EAAa3xR,KAAK2M,YAAYmnH,UAAU46E,EAAa16C,IAAM,aAAcrtJ,EAAW3G,KAAKq0H,eACzHr0H,KAAKyF,KAAKzF,KAAK2M,YAAYnG,KAAKmrR,EAAa3xR,KAAK2M,YAAYmnH,UAAU46E,EAAa16C,IAAM,UAAWptJ,EAAQ5G,KAAKq0H,gBAU3Ho8J,YAAYr/Q,GACR,IAAKpR,KAAK4xR,qBAAsB,CAC5B,GAAI5xR,KAAK8tR,QAAQ18Q,EAAK/R,OAClB,MAAMW,KAAK0uR,cAAc,yCAAyCt9Q,EAAK/R,WAE3EW,KAAK8tR,QAAQ18Q,EAAK/R,QAAS,GAOnC6iM,OAAOpzH,GACH,MAAMqmM,EAAYn1Q,KAAKgoR,eAAejiR,OAChC/F,KAAKgoR,eAAehoR,KAAKgoR,eAAejiR,OAAS,GAAK,KACxDovQ,IACIA,EAAUma,mBACVna,EAAUma,mBAAmB7pR,KAAKqpE,GAE7BqmM,EAAUxuQ,YACfwuQ,EAAUrmM,KAAOA,IAO7BkgN,aACI,MAAM6C,EAAY7xR,KAAKgoR,eAAexlQ,MAWtC,GATIqvQ,EAAUpC,8BACVoC,EAAUvC,mBAAmB7pR,KAAKosR,EAAUpC,8BAG5CoC,EAAUJ,uBACVI,EAAUl9J,SAAW30H,KAAK2M,YAAYmnH,UAAU46E,EAAa16C,IAAM,cACnE69H,EAAU/iN,KAAO+iN,EAAUvC,mBAAmB9uQ,KAAK,IACnDqxQ,EAAUzC,aAAc,GAExByC,EAAUlB,0BAEV3wR,KAAKszQ,WAAWue,EAAUlB,0BAA2BkB,EAAUjB,4BAA6B5wR,KAAK2M,YAAYmnH,UAAU46E,EAAa16C,IAAM,OAAQ69H,EAAUnB,yBAE3J,GAAImB,EAAUlrR,UACf,GAAKkrR,EAAUzC,aAAeyC,EAAUxC,oBAAsB1B,EAAUoC,UAInE,IAAK8B,EAAUd,iBAAkB,CAElC,MAAMrqR,EAAU1G,KAAK2M,YAAYqnH,YACjCh0H,KAAKszQ,WAAWue,EAAUnrR,QAASmrR,EAAUlrR,UAAWD,EAASmrR,EAAUnB,oBAC3E,IAAK,IAAI93Q,EAAI,EAAGA,EAAIi5Q,EAAUhB,uBAAuB9qR,OAAQ6S,IACzD5Y,KAAKszQ,WAAW5sQ,EAASmrR,EAAUhB,uBAAuBj4Q,GAAIi5Q,EAAUf,oBAAoBl4Q,GAAI,YAPpG5Y,KAAKszQ,WAAWue,EAAUnrR,QAASmrR,EAAUlrR,UAAW3G,KAAK2M,YAAYsnH,QAAQ49J,EAAU/iN,MAAQ,GAAI+iN,EAAUl9J,UAAYk9J,EAAU7pR,UAAW6pR,EAAUnB,oBAgBxKzB,UAAU6C,GACNA,EAAQrxQ,QAAQ,+CAA+C,CAACqI,EAAO6X,EAAQ6yB,KAC3ExzD,KAAKytR,UAAUhgF,QAAQskF,SAASpxP,GAAU6yB,EACnC,OAwCnB,IAAIm6N,EApCJvuR,EAAQsvM,aAAeA,EAEvBA,EAAa4tD,UAAY,iDACzB5tD,EAAasjF,UAAY,sBACzBtjF,EAAa16C,IAAM,8CACnB06C,EAAa8hF,IAAM,uCACnB9hF,EAAaujF,MAAQ,gCACrBvjF,EAAa6/E,WAAa,CACtBh8F,IAAKmc,EAAa8hF,KAEtB9hF,EAAauhF,wBAA0B,CACnC,MACA,KACA,QACA,QACA,YACA,WACA,SACA,KACA,YACA,mBAEJvhF,EAAauiF,4BAA8B,CACvC,cACA,MACA,KACA,QACA,QACA,YACA,WACA,SACA,YACA,mBAGJviF,EAAaogF,eAAiB,ybAE9B,SAAWnB,GACPA,EAAUA,EAAoB,SAAI,GAAK,WACvCA,EAAUA,EAAoB,SAAI,GAAK,WAF3C,CAGGA,EAAYvuR,EAAQuuR,YAAcvuR,EAAQuuR,UAAY,gBCtqBzD3hN,EAAO5sE,QAGP,SAAoBi/H,GAElB,IAAKryD,EAAO5sE,QAAQk/H,kBAAmB,MAAM,IAAI99H,MAAM,iCAEvD,IAAI+9H,GAAY,EACZxjC,EAAY,GA6ChB,OAAO,IAAIyjC,eAAe,CAAC91F,MA3C3B,SAAgBrY,GAMd,IAAK,IAAIntB,KALT63F,EAAgB,KAAI0jC,EACpB1jC,EAAe,IAAI0jC,EACnB1jC,EAAe,IAAI2jC,EACnB3jC,EAAiB,MAAI2jC,EACrB3jC,EAAiB,MAAI2jC,EACJ3jC,EAAWsjC,EAAW7yH,GAAGtI,EAAM63F,EAAU73F,IAI1D,SAASu7H,EAAQ/1C,GACX61C,IACJluG,EAAWsuG,QAAQj2C,GACnB21C,EAAWO,SAGb,SAASF,EAAWxzG,GAClB,IAAIqzG,EAAJ,CAGA,IAAK,IAAIr7H,KAFTq7H,GAAY,EAEKxjC,EAAWsjC,EAAWxlC,eAAe31F,EAAM63F,EAAU73F,IAElEgoB,EAAKmF,EAAWtkB,MAAMmf,GACrBmF,EAAWngB,SAflBmuH,EAAWO,SAmC4BC,KAhBzC,WACMN,GACJF,EAAWS,UAcwCn4F,OAXrD,WAGE,IAAK,IAAIzjC,KAFTq7H,GAAY,EAEKxjC,EAAWsjC,EAAWxlC,eAAe31F,EAAM63F,EAAU73F,IAEtEm7H,EAAW54H,KAAK,MAChB44H,EAAWO,QACPP,EAAWniH,QAASmiH,EAAWniH,UAC1BmiH,EAAWnuH,OAAOmuH,EAAWnuH,YAjD1C87D,EAAO5sE,QAAQk/H,kBAA8C,oBAAnBE,uCCA1C,IAAIO,EAAQ,GAEZ,SAASC,EAAgBviH,EAAM/F,EAASs3B,GACjCA,IACHA,EAAOxtC,OAWT,IAAIy+H,EAEJ,SAAUC,GAnBZ,IAAwBC,EAAUC,EAsB9B,SAASH,EAAUI,EAAMC,EAAMC,GAC7B,OAAOL,EAAMx8H,KAAK1C,KAdtB,SAAoBq/H,EAAMC,EAAMC,GAC9B,MAAuB,iBAAZ7oH,EACFA,EAEAA,EAAQ2oH,EAAMC,EAAMC,GAUHltC,CAAWgtC,EAAMC,EAAMC,KAAUv/H,KAG3D,OA1B8Bo/H,EAoBJF,GApBNC,EAoBLF,GApBsCz8H,UAAYtD,OAAOuC,OAAO29H,EAAW58H,WAAY28H,EAAS38H,UAAU/C,YAAc0/H,EAAUA,EAASh6F,UAAYi6F,EA0B/JH,EAPT,CAQEjxF,GAEFixF,EAAUz8H,UAAUU,KAAO8qC,EAAK9qC,KAChC+7H,EAAUz8H,UAAUia,KAAOA,EAC3BsiH,EAAMtiH,GAAQwiH,EAIhB,SAASO,EAAMz9G,EAAU09G,GACvB,GAAI3jH,MAAMC,QAAQgG,GAAW,CAC3B,IAAI2B,EAAM3B,EAAShc,OAKnB,OAJAgc,EAAWA,EAAS/b,KAAI,SAAU4S,GAChC,OAAOuH,OAAOvH,MAGZ8K,EAAM,EACD,UAAUjF,OAAOghH,EAAO,KAAKhhH,OAAOsD,EAASsB,MAAM,EAAGK,EAAM,GAAGlD,KAAK,MAAO,SAAWuB,EAAS2B,EAAM,GAC3F,IAARA,EACF,UAAUjF,OAAOghH,EAAO,KAAKhhH,OAAOsD,EAAS,GAAI,QAAQtD,OAAOsD,EAAS,IAEzE,MAAMtD,OAAOghH,EAAO,KAAKhhH,OAAOsD,EAAS,IAGlD,MAAO,MAAMtD,OAAOghH,EAAO,KAAKhhH,OAAO0B,OAAO4B,IA+BlDi9G,EAAgB,yBAAyB,SAAU97H,EAAM7D,GACvD,MAAO,cAAgBA,EAAQ,4BAA8B6D,EAAO,MACnEge,WACH89G,EAAgB,wBAAwB,SAAU97H,EAAM6e,EAAUK,GAEhE,IAAIs9G,EA/BmBC,EAwCnBr9G,EA1BYgR,EAAaoV,EA4B7B,GATwB,iBAAb3mB,IAjCY49G,EAiCkC,OAAV59G,EAhCpCE,OAAyB,EAAU09G,EAAO55H,UAAY45H,IAiC/DD,EAAa,cACb39G,EAAWA,EAAStB,QAAQ,QAAS,KAErCi/G,EAAa,UAhCjB,SAAkBpsG,EAAKqsG,EAAQC,GAK7B,YAJiB99H,IAAb89H,GAA0BA,EAAWtsG,EAAIvtB,UAC3C65H,EAAWtsG,EAAIvtB,QAGVutB,EAAI2D,UAAU2oG,EAAWD,EAAO55H,OAAQ65H,KAAcD,EAgCzDj/C,CAASx9E,EAAM,aAEjBof,EAAM,OAAO7D,OAAOvb,EAAM,KAAKub,OAAOihH,EAAY,KAAKjhH,OAAO+gH,EAAMz9G,EAAU,aACzE,CACL,IAAI5b,GA/Be,iBAAVuiC,IACTA,EAAQ,GAGNA,EA2BwB,IA3BT3iC,QALHutB,EAgCMpwB,GA3BU6C,SAGS,IAAhCutB,EAAIxb,QAwBe,IAxBC4wB,GAwBmB,WAAb,YACjCpmB,EAAM,QAAS7D,OAAOvb,EAAM,MAAOub,OAAOtY,EAAM,KAAKsY,OAAOihH,EAAY,KAAKjhH,OAAO+gH,EAAMz9G,EAAU,SAItG,OADAO,EAAO,mBAAmB7D,cAAc2D,KAEvClB,WACH89G,EAAgB,4BAA6B,2BAC7CA,EAAgB,8BAA8B,SAAU97H,GACtD,MAAO,OAASA,EAAO,gCAEzB87H,EAAgB,6BAA8B,mBAC9CA,EAAgB,wBAAwB,SAAU97H,GAChD,MAAO,eAAiBA,EAAO,mCAEjC87H,EAAgB,wBAAyB,kCACzCA,EAAgB,yBAA0B,6BAC1CA,EAAgB,6BAA8B,mBAC9CA,EAAgB,yBAA0B,sCAAuC99G,WACjF89G,EAAgB,wBAAwB,SAAU9zC,GAChD,MAAO,qBAAuBA,IAC7BhqE,WACH89G,EAAgB,qCAAsC,oCACtDhzD,EAAO5sE,QAAQ,EAAQ2/H,+CCnGnBc,EAAa3gI,OAAO0N,MAAQ,SAAUsvC,GACxC,IAAItvC,EAAO,GAEX,IAAK,IAAIzL,KAAO+6C,EACdtvC,EAAKnH,KAAKtE,GAGZ,OAAOyL,GAKTo/D,EAAO5sE,QAAU0gI,EAEjB,IAAIl0H,EAAW,EAAQ,OAEnBm0H,EAAW,EAAQ,MAEvB,EAAQ,MAAR,CAAoBD,EAAQl0H,GAM1B,IAFA,IAAIgB,EAAOizH,EAAWE,EAASv9H,WAEtBm4B,EAAI,EAAGA,EAAI/tB,EAAK7G,OAAQ40B,IAAK,CACpC,IAAI5J,EAASnkB,EAAK+tB,GACbmlG,EAAOt9H,UAAUuuB,KAAS+uG,EAAOt9H,UAAUuuB,GAAUgvG,EAASv9H,UAAUuuB,IAIjF,SAAS+uG,EAAOzuH,GACd,KAAMrR,gBAAgB8/H,GAAS,OAAO,IAAIA,EAAOzuH,GACjDzF,EAASlJ,KAAK1C,KAAMqR,GACpB0uH,EAASr9H,KAAK1C,KAAMqR,GACpBrR,KAAKggI,eAAgB,EAEjB3uH,KACuB,IAArBA,EAAQ+7G,WAAoBptH,KAAKotH,UAAW,IACvB,IAArB/7G,EAAQnP,WAAoBlC,KAAKkC,UAAW,IAElB,IAA1BmP,EAAQ2uH,gBACVhgI,KAAKggI,eAAgB,EACrBhgI,KAAK04F,KAAK,MAAOunC,KAiCvB,SAASA,IAEHjgI,KAAKmtH,eAAe+S,OAGxB3lH,EAAQo4G,SAASwN,EAASngI,MAG5B,SAASmgI,EAAQhlH,GACfA,EAAKyvE,MArCP1rF,OAAOC,eAAe2gI,EAAOt9H,UAAW,wBAAyB,CAI/DJ,YAAY,EACZC,IAAK,WACH,OAAOrC,KAAKmtH,eAAeiT,iBAG/BlhI,OAAOC,eAAe2gI,EAAOt9H,UAAW,iBAAkB,CAIxDJ,YAAY,EACZC,IAAK,WACH,OAAOrC,KAAKmtH,gBAAkBntH,KAAKmtH,eAAekT,eAGtDnhI,OAAOC,eAAe2gI,EAAOt9H,UAAW,iBAAkB,CAIxDJ,YAAY,EACZC,IAAK,WACH,OAAOrC,KAAKmtH,eAAepnH,UAgB/B7G,OAAOC,eAAe2gI,EAAOt9H,UAAW,YAAa,CAInDJ,YAAY,EACZC,IAAK,WACH,YAA4BP,IAAxB9B,KAAKqtH,qBAAwDvrH,IAAxB9B,KAAKmtH,gBAIvCntH,KAAKqtH,eAAekR,WAAav+H,KAAKmtH,eAAeoR,WAE9Dh5H,IAAK,SAAalG,QAGYyC,IAAxB9B,KAAKqtH,qBAAwDvrH,IAAxB9B,KAAKmtH,iBAM9CntH,KAAKqtH,eAAekR,UAAYl/H,EAChCW,KAAKmtH,eAAeoR,UAAYl/H,oCC/GpC2sE,EAAO5sE,QAAUkhI,EAEjB,IAAIC,EAAY,EAAQ,OAIxB,SAASD,EAAYjvH,GACnB,KAAMrR,gBAAgBsgI,GAAc,OAAO,IAAIA,EAAYjvH,GAC3DkvH,EAAU79H,KAAK1C,KAAMqR,GAJvB,EAAQ,MAAR,CAAoBivH,EAAaC,GAOjCD,EAAY99H,UAAUgrH,WAAa,SAAU9kC,EAAO2C,EAAU0yC,GAC5DA,EAAG,KAAMr1C,sCCZPo3C,aAHJ9zD,EAAO5sE,QAAUwM,EAMjBA,EAAS40H,cAAgBA,EAGhB,sBAAT,IA8BI1pH,EA5BA2pH,EAAkB,SAAyB9nC,EAASxyF,GACtD,OAAOwyF,EAAQoC,UAAU50F,GAAMJ,QAO7B26H,EAAS,EAAQ,OAIjBpgE,EAAS,gBAETqgE,EAAgB,EAAAjmG,EAAO9b,YAAc,aAYrCgiH,EAAY,EAAQ,OAKtB9pH,EADE8pH,GAAaA,EAAUC,SACjBD,EAAUC,SAAS,UAEnB,aAKV,IAcIC,EACAC,EACArpG,EAhBAspG,EAAa,EAAQ,OAErBC,EAAc,EAAQ,OAGtBC,EADW,EAAQ,OACSA,iBAE5BC,EAAiB,WACjBzuC,EAAuByuC,EAAezuC,qBACtC0uC,EAA4BD,EAAeC,0BAC3CC,EAA6BF,EAAeE,2BAC5CC,EAAqCH,EAAeG,mCAOxD,EAAQ,MAAR,CAAoB11H,EAAU80H,GAE9B,IAAIa,EAAiBN,EAAYM,eAC7BC,EAAe,CAAC,QAAS,QAAS,UAAW,QAAS,UAa1D,SAAShB,EAAcnvH,EAASo3E,EAAQg5C,GACtC3B,EAASA,GAAU,EAAQ,OAC3BzuH,EAAUA,GAAW,GAMG,kBAAbowH,IAAwBA,EAAWh5C,aAAkBq3C,GAGhE9/H,KAAK0hI,aAAerwH,EAAQqwH,WACxBD,IAAUzhI,KAAK0hI,WAAa1hI,KAAK0hI,cAAgBrwH,EAAQswH,oBAG7D3hI,KAAKogI,cAAgBc,EAAiBlhI,KAAMqR,EAAS,wBAAyBowH,GAI9EzhI,KAAK6e,OAAS,IAAImiH,EAClBhhI,KAAK+F,OAAS,EACd/F,KAAK4hI,MAAQ,KACb5hI,KAAK6hI,WAAa,EAClB7hI,KAAK8hI,QAAU,KACf9hI,KAAKkgI,OAAQ,EACblgI,KAAK+hI,YAAa,EAClB/hI,KAAKgiI,SAAU,EAKfhiI,KAAKiiI,MAAO,EAGZjiI,KAAKkiI,cAAe,EACpBliI,KAAKmiI,iBAAkB,EACvBniI,KAAKoiI,mBAAoB,EACzBpiI,KAAKqiI,iBAAkB,EACvBriI,KAAKsiI,QAAS,EAEdtiI,KAAKuiI,WAAkC,IAAtBlxH,EAAQkxH,UAEzBviI,KAAKwiI,cAAgBnxH,EAAQmxH,YAE7BxiI,KAAKu+H,WAAY,EAIjBv+H,KAAKyiI,gBAAkBpxH,EAAQoxH,iBAAmB,OAElDziI,KAAK0iI,WAAa,EAElB1iI,KAAK2iI,aAAc,EACnB3iI,KAAKse,QAAU,KACfte,KAAKqrF,SAAW,KAEZh6E,EAAQg6E,WACLy1C,IAAeA,EAAgB,wBACpC9gI,KAAKse,QAAU,IAAIwiH,EAAczvH,EAAQg6E,UACzCrrF,KAAKqrF,SAAWh6E,EAAQg6E,UAI5B,SAASz/E,EAASyF,GAEhB,GADAyuH,EAASA,GAAU,EAAQ,SACrB9/H,gBAAgB4L,GAAW,OAAO,IAAIA,EAASyF,GAGrD,IAAIowH,EAAWzhI,gBAAgB8/H,EAC/B9/H,KAAKqtH,eAAiB,IAAImT,EAAcnvH,EAASrR,KAAMyhI,GAEvDzhI,KAAKotH,UAAW,EAEZ/7G,IAC0B,mBAAjBA,EAAQ2xD,OAAqBhjE,KAAK6L,MAAQwF,EAAQ2xD,MAC9B,mBAApB3xD,EAAQ6K,UAAwBlc,KAAK4iI,SAAWvxH,EAAQ6K,UAGrEwkH,EAAOh+H,KAAK1C,MAiEd,SAAS6iI,EAAiBp6C,EAAQC,EAAO2C,EAAUy3C,EAAYC,GAC7DjsH,EAAM,mBAAoB4xE,GAC1B,IAMMoS,EANFr4D,EAAQgmD,EAAO4kC,eAEnB,GAAc,OAAV3kC,EACFjmD,EAAMu/F,SAAU,EAyOpB,SAAoBv5C,EAAQhmD,GAE1B,GADA3rB,EAAM,eACF2rB,EAAMy9F,MAAV,CAEA,GAAIz9F,EAAMnkB,QAAS,CACjB,IAAIoqE,EAAQjmD,EAAMnkB,QAAQssE,MAEtBlC,GAASA,EAAM3iF,SACjB08B,EAAM5jB,OAAOpZ,KAAKijF,GAClBjmD,EAAM18B,QAAU08B,EAAMi/F,WAAa,EAAIh5C,EAAM3iF,QAIjD08B,EAAMy9F,OAAQ,EAEVz9F,EAAMw/F,KAIRe,EAAav6C,IAGbhmD,EAAMy/F,cAAe,EAEhBz/F,EAAM0/F,kBACT1/F,EAAM0/F,iBAAkB,EACxBc,EAAcx6C,MAlQhBy6C,CAAWz6C,EAAQhmD,QAKnB,GAFKsgG,IAAgBjoC,EAmDzB,SAAsBr4D,EAAOimD,GAC3B,IAAIoS,EAhQiB5+C,EAsQrB,OAtQqBA,EAkQFwsC,EAjQZpoB,EAAOG,SAASvkB,IAAQA,aAAeykF,GAiQA,iBAAVj4C,QAAgC5mF,IAAV4mF,GAAwBjmD,EAAMi/F,aACtF5mC,EAAK,IAAIpI,EAAqB,QAAS,CAAC,SAAU,SAAU,cAAehK,IAGtEoS,EA1DqBqoC,CAAa1gG,EAAOimD,IAE1CoS,EACFymC,EAAe94C,EAAQqS,QAClB,GAAIr4D,EAAMi/F,YAAch5C,GAASA,EAAM3iF,OAAS,EAKrD,GAJqB,iBAAV2iF,GAAuBjmD,EAAMi/F,YAAcxiI,OAAOgf,eAAewqE,KAAWpoB,EAAO99D,YAC5FkmF,EAtNR,SAA6BA,GAC3B,OAAOpoB,EAAO5oC,KAAKgxD,GAqNL06C,CAAoB16C,IAG1Bo6C,EACErgG,EAAMs/F,WAAYR,EAAe94C,EAAQ,IAAI64C,GAA2C+B,EAAS56C,EAAQhmD,EAAOimD,GAAO,QACtH,GAAIjmD,EAAMy9F,MACfqB,EAAe94C,EAAQ,IAAI24C,OACtB,IAAI3+F,EAAM87F,UACf,OAAO,EAEP97F,EAAMu/F,SAAU,EAEZv/F,EAAMnkB,UAAY+sE,GACpB3C,EAAQjmD,EAAMnkB,QAAQ7D,MAAMiuE,GACxBjmD,EAAMi/F,YAA+B,IAAjBh5C,EAAM3iF,OAAcs9H,EAAS56C,EAAQhmD,EAAOimD,GAAO,GAAY46C,EAAc76C,EAAQhmD,IAE7G4gG,EAAS56C,EAAQhmD,EAAOimD,GAAO,QAGzBo6C,IACVrgG,EAAMu/F,SAAU,EAChBsB,EAAc76C,EAAQhmD,IAO1B,OAAQA,EAAMy9F,QAAUz9F,EAAM18B,OAAS08B,EAAM29F,eAAkC,IAAjB39F,EAAM18B,QAGtE,SAASs9H,EAAS56C,EAAQhmD,EAAOimD,EAAOo6C,GAClCrgG,EAAMq/F,SAA4B,IAAjBr/F,EAAM18B,SAAiB08B,EAAMw/F,MAChDx/F,EAAMigG,WAAa,EACnBj6C,EAAOz8E,KAAK,OAAQ08E,KAGpBjmD,EAAM18B,QAAU08B,EAAMi/F,WAAa,EAAIh5C,EAAM3iF,OACzC+8H,EAAYrgG,EAAM5jB,OAAO26B,QAAQkvC,GAAYjmD,EAAM5jB,OAAOpZ,KAAKijF,GAC/DjmD,EAAMy/F,cAAcc,EAAav6C,IAGvC66C,EAAc76C,EAAQhmD,GAvHxBvjC,OAAOC,eAAeyM,EAASpJ,UAAW,YAAa,CAIrDJ,YAAY,EACZC,IAAK,WACH,YAA4BP,IAAxB9B,KAAKqtH,gBAIFrtH,KAAKqtH,eAAekR,WAE7Bh5H,IAAK,SAAalG,GAGXW,KAAKqtH,iBAMVrtH,KAAKqtH,eAAekR,UAAYl/H,MAGpCuM,EAASpJ,UAAU0Z,QAAU+kH,EAAY/kH,QACzCtQ,EAASpJ,UAAU+gI,WAAatC,EAAYuC,UAE5C53H,EAASpJ,UAAUogI,SAAW,SAAU13G,EAAK6yG,GAC3CA,EAAG7yG,IAOLtf,EAASpJ,UAAUiD,KAAO,SAAUijF,EAAO2C,GACzC,IACI03C,EADAtgG,EAAQziC,KAAKqtH,eAkBjB,OAfK5qF,EAAMi/F,WAYTqB,GAAiB,EAXI,iBAAVr6C,KACT2C,EAAWA,GAAY5oD,EAAMggG,mBAEZhgG,EAAM4oD,WACrB3C,EAAQpoB,EAAO5oC,KAAKgxD,EAAO2C,GAC3BA,EAAW,IAGb03C,GAAiB,GAMdF,EAAiB7iI,KAAM0oF,EAAO2C,GAAU,EAAO03C,IAIxDn3H,EAASpJ,UAAUg3C,QAAU,SAAUkvC,GACrC,OAAOm6C,EAAiB7iI,KAAM0oF,EAAO,MAAM,GAAM,IAyEnD98E,EAASpJ,UAAUihI,SAAW,WAC5B,OAAuC,IAAhCzjI,KAAKqtH,eAAeyU,SAI7Bl2H,EAASpJ,UAAUkhI,YAAc,SAAUliH,GACpCs/G,IAAeA,EAAgB,wBACpC,IAAIxiH,EAAU,IAAIwiH,EAAct/G,GAChCxhB,KAAKqtH,eAAe/uG,QAAUA,EAE9Bte,KAAKqtH,eAAehiC,SAAWrrF,KAAKqtH,eAAe/uG,QAAQ+sE,SAK3D,IAHA,IAAI9oF,EAAIvC,KAAKqtH,eAAexuG,OAAO6iG,KAC/BiiB,EAAU,GAED,OAANphI,GACLohI,GAAWrlH,EAAQ7D,MAAMlY,EAAE2G,MAC3B3G,EAAIA,EAAEk0C,KAOR,OAJAz2C,KAAKqtH,eAAexuG,OAAO6zD,QAEX,KAAZixD,GAAgB3jI,KAAKqtH,eAAexuG,OAAOpZ,KAAKk+H,GACpD3jI,KAAKqtH,eAAetnH,OAAS49H,EAAQ59H,OAC9B/F,MAIT,IAAI4jI,EAAU,WAuBd,SAASC,EAAcn1G,EAAG+T,GACxB,OAAI/T,GAAK,GAAsB,IAAjB+T,EAAM18B,QAAgB08B,EAAMy9F,MAAc,EACpDz9F,EAAMi/F,WAAmB,EAEzBhzG,GAAMA,EAEJ+T,EAAMq/F,SAAWr/F,EAAM18B,OAAe08B,EAAM5jB,OAAO6iG,KAAKx4G,KAAKnD,OAAmB08B,EAAM18B,QAIxF2oB,EAAI+T,EAAM29F,gBAAe39F,EAAM29F,cA/BrC,SAAiC1xG,GAgB/B,OAfIA,GAAKk1G,EAEPl1G,EAAIk1G,GAIJl1G,IACAA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,GACXA,KAGKA,EAe4Co1G,CAAwBp1G,IACvEA,GAAK+T,EAAM18B,OAAe2oB,EAEzB+T,EAAMy9F,MAKJz9F,EAAM18B,QAJX08B,EAAMy/F,cAAe,EACd,IAwIX,SAASc,EAAav6C,GACpB,IAAIhmD,EAAQgmD,EAAO4kC,eACnBv2G,EAAM,eAAgB2rB,EAAMy/F,aAAcz/F,EAAM0/F,iBAChD1/F,EAAMy/F,cAAe,EAEhBz/F,EAAM0/F,kBACTrrH,EAAM,eAAgB2rB,EAAMq/F,SAC5Br/F,EAAM0/F,iBAAkB,EACxB5nH,EAAQo4G,SAASsQ,EAAex6C,IAIpC,SAASw6C,EAAcx6C,GACrB,IAAIhmD,EAAQgmD,EAAO4kC,eACnBv2G,EAAM,gBAAiB2rB,EAAM87F,UAAW97F,EAAM18B,OAAQ08B,EAAMy9F,OAEvDz9F,EAAM87F,YAAc97F,EAAM18B,SAAU08B,EAAMy9F,QAC7Cz3C,EAAOz8E,KAAK,YACZy2B,EAAM0/F,iBAAkB,GAS1B1/F,EAAMy/F,cAAgBz/F,EAAMq/F,UAAYr/F,EAAMy9F,OAASz9F,EAAM18B,QAAU08B,EAAM29F,cAC7E2D,EAAKt7C,GASP,SAAS66C,EAAc76C,EAAQhmD,GACxBA,EAAMkgG,cACTlgG,EAAMkgG,aAAc,EACpBpoH,EAAQo4G,SAASqR,EAAgBv7C,EAAQhmD,IAI7C,SAASuhG,EAAev7C,EAAQhmD,GAwB9B,MAAQA,EAAMu/F,UAAYv/F,EAAMy9F,QAAUz9F,EAAM18B,OAAS08B,EAAM29F,eAAiB39F,EAAMq/F,SAA4B,IAAjBr/F,EAAM18B,SAAe,CACpH,IAAI2d,EAAM+e,EAAM18B,OAGhB,GAFA+Q,EAAM,wBACN2xE,EAAOzlB,KAAK,GACRt/C,IAAQ+e,EAAM18B,OAChB,MAGJ08B,EAAMkgG,aAAc,EA6QtB,SAASsB,EAAwB9oH,GAC/B,IAAIsnB,EAAQtnB,EAAKkyG,eACjB5qF,EAAM2/F,kBAAoBjnH,EAAKs/E,cAAc,YAAc,EAEvDh4D,EAAM4/F,kBAAoB5/F,EAAM6/F,OAGlC7/F,EAAMq/F,SAAU,EACP3mH,EAAKs/E,cAAc,QAAU,GACtCt/E,EAAK2jH,SAIT,SAASoF,EAAiB/oH,GACxBrE,EAAM,4BACNqE,EAAK6nD,KAAK,GA4BZ,SAASmhE,EAAQ17C,EAAQhmD,GACvB3rB,EAAM,SAAU2rB,EAAMu/F,SAEjBv/F,EAAMu/F,SACTv5C,EAAOzlB,KAAK,GAGdvgC,EAAM4/F,iBAAkB,EACxB55C,EAAOz8E,KAAK,UACZ+3H,EAAKt7C,GACDhmD,EAAMq/F,UAAYr/F,EAAMu/F,SAASv5C,EAAOzlB,KAAK,GAgBnD,SAAS+gE,EAAKt7C,GACZ,IAAIhmD,EAAQgmD,EAAO4kC,eAGnB,IAFAv2G,EAAM,OAAQ2rB,EAAMq/F,SAEbr/F,EAAMq/F,SAA6B,OAAlBr5C,EAAOzlB,UA4HjC,SAASohE,EAAS11G,EAAG+T,GAEnB,OAAqB,IAAjBA,EAAM18B,OAAqB,MAE3B08B,EAAMi/F,WAAYlyC,EAAM/sD,EAAM5jB,OAAOs7B,SAAkBzrB,GAAKA,GAAK+T,EAAM18B,QAEtDypF,EAAf/sD,EAAMnkB,QAAemkB,EAAM5jB,OAAO2B,KAAK,IAAqC,IAAxBiiB,EAAM5jB,OAAO9Y,OAAoB08B,EAAM5jB,OAAO6qE,QAAmBjnD,EAAM5jB,OAAOJ,OAAOgkB,EAAM18B,QACnJ08B,EAAM5jB,OAAO6zD,SAGb8c,EAAM/sD,EAAM5jB,OAAOwlH,QAAQ31G,EAAG+T,EAAMnkB,SAE/BkxE,GATP,IAAIA,EAYN,SAAS80C,EAAY77C,GACnB,IAAIhmD,EAAQgmD,EAAO4kC,eACnBv2G,EAAM,cAAe2rB,EAAMs/F,YAEtBt/F,EAAMs/F,aACTt/F,EAAMy9F,OAAQ,EACd3lH,EAAQo4G,SAAS4R,EAAe9hG,EAAOgmD,IAI3C,SAAS87C,EAAc9hG,EAAOgmD,GAG5B,GAFA3xE,EAAM,gBAAiB2rB,EAAMs/F,WAAYt/F,EAAM18B,SAE1C08B,EAAMs/F,YAA+B,IAAjBt/F,EAAM18B,SAC7B08B,EAAMs/F,YAAa,EACnBt5C,EAAO2kC,UAAW,EAClB3kC,EAAOz8E,KAAK,OAERy2B,EAAM+/F,aAAa,CAGrB,IAAIgC,EAAS/7C,EAAO0kC,iBAEfqX,GAAUA,EAAOhC,aAAegC,EAAOC,WAC1Ch8C,EAAOvsE,WAgBf,SAASpE,EAAQ4sH,EAAIz2H,GACnB,IAAK,IAAI2K,EAAI,EAAGye,EAAIqtG,EAAG3+H,OAAQ6S,EAAIye,EAAGze,IACpC,GAAI8rH,EAAG9rH,KAAO3K,EAAG,OAAO2K,EAG1B,OAAQ,EA3tBVhN,EAASpJ,UAAUwgE,KAAO,SAAUt0C,GAClC5X,EAAM,OAAQ4X,GACdA,EAAI1M,SAAS0M,EAAG,IAChB,IAAI+T,EAAQziC,KAAKqtH,eACbsX,EAAQj2G,EAKZ,GAJU,IAANA,IAAS+T,EAAM0/F,iBAAkB,GAI3B,IAANzzG,GAAW+T,EAAMy/F,gBAA0C,IAAxBz/F,EAAM29F,cAAsB39F,EAAM18B,QAAU08B,EAAM29F,cAAgB39F,EAAM18B,OAAS,IAAM08B,EAAMy9F,OAGlI,OAFAppH,EAAM,qBAAsB2rB,EAAM18B,OAAQ08B,EAAMy9F,OAC3B,IAAjBz9F,EAAM18B,QAAgB08B,EAAMy9F,MAAOoE,EAAYtkI,MAAWgjI,EAAahjI,MACpE,KAKT,GAAU,KAFV0uB,EAAIm1G,EAAcn1G,EAAG+T,KAENA,EAAMy9F,MAEnB,OADqB,IAAjBz9F,EAAM18B,QAAcu+H,EAAYtkI,MAC7B,KAyBT,IA4BIwvF,EA5BAo1C,EAASniG,EAAMy/F,aAgDnB,OA/CAprH,EAAM,gBAAiB8tH,IAEF,IAAjBniG,EAAM18B,QAAgB08B,EAAM18B,OAAS2oB,EAAI+T,EAAM29F,gBAEjDtpH,EAAM,6BADN8tH,GAAS,GAMPniG,EAAMy9F,OAASz9F,EAAMu/F,QAEvBlrH,EAAM,mBADN8tH,GAAS,GAEAA,IACT9tH,EAAM,WACN2rB,EAAMu/F,SAAU,EAChBv/F,EAAMw/F,MAAO,EAEQ,IAAjBx/F,EAAM18B,SAAc08B,EAAMy/F,cAAe,GAE7CliI,KAAK6L,MAAM42B,EAAM29F,eAEjB39F,EAAMw/F,MAAO,EAGRx/F,EAAMu/F,UAAStzG,EAAIm1G,EAAcc,EAAOliG,KAMnC,QAFD+sD,EAAP9gE,EAAI,EAAS01G,EAAS11G,EAAG+T,GAAkB,OAG7CA,EAAMy/F,aAAez/F,EAAM18B,QAAU08B,EAAM29F,cAC3C1xG,EAAI,IAEJ+T,EAAM18B,QAAU2oB,EAChB+T,EAAMigG,WAAa,GAGA,IAAjBjgG,EAAM18B,SAGH08B,EAAMy9F,QAAOz9F,EAAMy/F,cAAe,GAEnCyC,IAAUj2G,GAAK+T,EAAMy9F,OAAOoE,EAAYtkI,OAGlC,OAARwvF,GAAcxvF,KAAKgM,KAAK,OAAQwjF,GAC7BA,GAwHT5jF,EAASpJ,UAAUqJ,MAAQ,SAAU6iB,GACnC6yG,EAAevhI,KAAM,IAAIqhI,EAA2B,aAGtDz1H,EAASpJ,UAAUyqH,KAAO,SAAU4X,EAAMC,GACxC,IAAIh7F,EAAM9pC,KACNyiC,EAAQziC,KAAKqtH,eAEjB,OAAQ5qF,EAAMo/F,YACZ,KAAK,EACHp/F,EAAMm/F,MAAQiD,EACd,MAEF,KAAK,EACHpiG,EAAMm/F,MAAQ,CAACn/F,EAAMm/F,MAAOiD,GAC5B,MAEF,QACEpiG,EAAMm/F,MAAMn8H,KAAKo/H,GAIrBpiG,EAAMo/F,YAAc,EACpB/qH,EAAM,wBAAyB2rB,EAAMo/F,WAAYiD,GACjD,IACIC,EADUD,IAA6B,IAAjBA,EAASl6C,KAAkBi6C,IAAStqH,EAAQyqH,QAAUH,IAAStqH,EAAQC,OACrEyqH,EAARhF,EAepB,SAASA,IACPnpH,EAAM,SACN+tH,EAAKj6C,MAhBHnoD,EAAMs/F,WAAYxnH,EAAQo4G,SAASoS,GAAYj7F,EAAI4uD,KAAK,MAAOqsC,GACnEF,EAAKr5H,GAAG,UAER,SAAS05H,EAAS9X,EAAU+X,GAC1BruH,EAAM,YAEFs2G,IAAatjF,GACXq7F,IAAwC,IAA1BA,EAAWC,aAC3BD,EAAWC,YAAa,EAoB5BtuH,EAAM,WAEN+tH,EAAKhsC,eAAe,QAASwsC,GAC7BR,EAAKhsC,eAAe,SAAUysC,GAC9BT,EAAKhsC,eAAe,QAAS0sC,GAC7BV,EAAKhsC,eAAe,QAASh3D,GAC7BgjG,EAAKhsC,eAAe,SAAUqsC,GAC9Bp7F,EAAI+uD,eAAe,MAAOonC,GAC1Bn2F,EAAI+uD,eAAe,MAAOosC,GAC1Bn7F,EAAI+uD,eAAe,OAAQ2sC,GAC3BC,GAAY,GAMRhjG,EAAMigG,YAAgBmC,EAAK1X,iBAAkB0X,EAAK1X,eAAeuY,WAAYH,QArBnF,IAAIA,EAwFN,SAAqBz7F,GACnB,OAAO,WACL,IAAIrH,EAAQqH,EAAIujF,eAChBv2G,EAAM,cAAe2rB,EAAMigG,YACvBjgG,EAAMigG,YAAYjgG,EAAMigG,aAEH,IAArBjgG,EAAMigG,YAAoBjC,EAAgB32F,EAAK,UACjDrH,EAAMq/F,SAAU,EAChBiC,EAAKj6F,KAhGK67F,CAAY77F,GAC1B+6F,EAAKr5H,GAAG,QAAS+5H,GACjB,IAAIE,GAAY,EAwBhB,SAASD,EAAO98C,GACd5xE,EAAM,UACN,IAAI04E,EAAMq1C,EAAKpqH,MAAMiuE,GACrB5xE,EAAM,aAAc04E,IAER,IAARA,KAKwB,IAArB/sD,EAAMo/F,YAAoBp/F,EAAMm/F,QAAUiD,GAAQpiG,EAAMo/F,WAAa,IAAqC,IAAhC/pH,EAAQ2qB,EAAMm/F,MAAOiD,MAAkBY,IACpH3uH,EAAM,8BAA+B2rB,EAAMigG,YAC3CjgG,EAAMigG,cAGR54F,EAAI80F,SAMR,SAAS/8F,EAAQi5D,GACfhkF,EAAM,UAAWgkF,GACjBmqC,IACAJ,EAAKhsC,eAAe,QAASh3D,GACU,IAAnC4+F,EAAgBoE,EAAM,UAAgBtD,EAAesD,EAAM/pC,GAMjE,SAASuqC,IACPR,EAAKhsC,eAAe,SAAUysC,GAC9BL,IAKF,SAASK,IACPxuH,EAAM,YACN+tH,EAAKhsC,eAAe,QAASwsC,GAC7BJ,IAKF,SAASA,IACPnuH,EAAM,UACNgzB,EAAIm7F,OAAOJ,GAWb,OA7DA/6F,EAAIt+B,GAAG,OAAQg6H,GAtkBjB,SAAyB7sC,EAASitC,EAAO54H,GAGvC,GAAuC,mBAA5B2rF,EAAQsC,gBAAgC,OAAOtC,EAAQsC,gBAAgB2qC,EAAO54H,GAKpF2rF,EAAQ5zB,SAAY4zB,EAAQ5zB,QAAa,MAAkCjpD,MAAMC,QAAQ48E,EAAQ5zB,QAAa,OAAI4zB,EAAQ5zB,QAAa,MAAEvrB,QAAQxsC,GAAS2rF,EAAQ5zB,QAAa,MAAI,CAAC/3D,EAAI2rF,EAAQ5zB,QAAa,OAAjK4zB,EAAQntF,GAAGo6H,EAAO54H,GA6lBnEiuF,CAAgB4pC,EAAM,QAAShjG,GAO/BgjG,EAAKnsC,KAAK,QAAS2sC,GAQnBR,EAAKnsC,KAAK,SAAU4sC,GAQpBT,EAAK74H,KAAK,OAAQ89B,GAEbrH,EAAMq/F,UACThrH,EAAM,eACNgzB,EAAIg1F,UAGC+F,GAgBTj5H,EAASpJ,UAAUyiI,OAAS,SAAUJ,GACpC,IAAIpiG,EAAQziC,KAAKqtH,eACb8X,EAAa,CACfC,YAAY,GAGd,GAAyB,IAArB3iG,EAAMo/F,WAAkB,OAAO7hI,KAEnC,GAAyB,IAArByiC,EAAMo/F,WAER,OAAIgD,GAAQA,IAASpiG,EAAMm/F,QACtBiD,IAAMA,EAAOpiG,EAAMm/F,OAExBn/F,EAAMm/F,MAAQ,KACdn/F,EAAMo/F,WAAa,EACnBp/F,EAAMq/F,SAAU,EACZ+C,GAAMA,EAAK74H,KAAK,SAAUhM,KAAMmlI,IANKnlI,KAW3C,IAAK6kI,EAAM,CAET,IAAIgB,EAAQpjG,EAAMm/F,MACdl+G,EAAM+e,EAAMo/F,WAChBp/F,EAAMm/F,MAAQ,KACdn/F,EAAMo/F,WAAa,EACnBp/F,EAAMq/F,SAAU,EAEhB,IAAK,IAAIlpH,EAAI,EAAGA,EAAI8K,EAAK9K,IACvBitH,EAAMjtH,GAAG5M,KAAK,SAAUhM,KAAM,CAC5BolI,YAAY,IAIhB,OAAOplI,KAIT,IAAIoB,EAAQ0W,EAAQ2qB,EAAMm/F,MAAOiD,GACjC,OAAe,IAAXzjI,IACJqhC,EAAMm/F,MAAM7pH,OAAO3W,EAAO,GAC1BqhC,EAAMo/F,YAAc,EACK,IAArBp/F,EAAMo/F,aAAkBp/F,EAAMm/F,MAAQn/F,EAAMm/F,MAAM,IACtDiD,EAAK74H,KAAK,SAAUhM,KAAMmlI,IAJDnlI,MAU3B4L,EAASpJ,UAAUgJ,GAAK,SAAUs6H,EAAI94H,GACpC,IAAIkZ,EAAMw6G,EAAOl+H,UAAUgJ,GAAG9I,KAAK1C,KAAM8lI,EAAI94H,GACzCy1B,EAAQziC,KAAKqtH,eAuBjB,MArBW,SAAPyY,GAGFrjG,EAAM2/F,kBAAoBpiI,KAAKy6F,cAAc,YAAc,GAErC,IAAlBh4D,EAAMq/F,SAAmB9hI,KAAK8+H,UAClB,aAAPgH,IACJrjG,EAAMs/F,YAAet/F,EAAM2/F,oBAC9B3/F,EAAM2/F,kBAAoB3/F,EAAMy/F,cAAe,EAC/Cz/F,EAAMq/F,SAAU,EAChBr/F,EAAM0/F,iBAAkB,EACxBrrH,EAAM,cAAe2rB,EAAM18B,OAAQ08B,EAAMu/F,SAErCv/F,EAAM18B,OACRi9H,EAAahjI,MACHyiC,EAAMu/F,SAChBznH,EAAQo4G,SAASuR,EAAkBlkI,QAKlCkmB,GAGTta,EAASpJ,UAAUw4F,YAAcpvF,EAASpJ,UAAUgJ,GAEpDI,EAASpJ,UAAUq2F,eAAiB,SAAUitC,EAAI94H,GAChD,IAAIkZ,EAAMw6G,EAAOl+H,UAAUq2F,eAAen2F,KAAK1C,KAAM8lI,EAAI94H,GAYzD,MAVW,aAAP84H,GAOFvrH,EAAQo4G,SAASsR,EAAyBjkI,MAGrCkmB,GAGTta,EAASpJ,UAAU84F,mBAAqB,SAAUwqC,GAChD,IAAI5/G,EAAMw6G,EAAOl+H,UAAU84F,mBAAmBj7E,MAAMrgB,KAAM+c,WAY1D,MAVW,aAAP+oH,QAA4BhkI,IAAPgkI,GAOvBvrH,EAAQo4G,SAASsR,EAAyBjkI,MAGrCkmB,GAuBTta,EAASpJ,UAAUs8H,OAAS,WAC1B,IAAIr8F,EAAQziC,KAAKqtH,eAYjB,OAVK5qF,EAAMq/F,UACThrH,EAAM,UAIN2rB,EAAMq/F,SAAWr/F,EAAM2/F,kBAQ3B,SAAgB35C,EAAQhmD,GACjBA,EAAM4/F,kBACT5/F,EAAM4/F,iBAAkB,EACxB9nH,EAAQo4G,SAASwR,EAAS17C,EAAQhmD,IAVlCq8F,CAAO9+H,KAAMyiC,IAGfA,EAAM6/F,QAAS,EACRtiI,MAuBT4L,EAASpJ,UAAUo8H,MAAQ,WAUzB,OATA9nH,EAAM,wBAAyB9W,KAAKqtH,eAAeyU,UAEf,IAAhC9hI,KAAKqtH,eAAeyU,UACtBhrH,EAAM,SACN9W,KAAKqtH,eAAeyU,SAAU,EAC9B9hI,KAAKgM,KAAK,UAGZhM,KAAKqtH,eAAeiV,QAAS,EACtBtiI,MAeT4L,EAASpJ,UAAUgrB,KAAO,SAAUi7D,GAClC,IAAIs9C,EAAQ/lI,KAERyiC,EAAQziC,KAAKqtH,eACbiV,GAAS,EA0Bb,IAAK,IAAI1pH,KAzBT6vE,EAAOj9E,GAAG,OAAO,WAGf,GAFAsL,EAAM,eAEF2rB,EAAMnkB,UAAYmkB,EAAMy9F,MAAO,CACjC,IAAIx3C,EAAQjmD,EAAMnkB,QAAQssE,MACtBlC,GAASA,EAAM3iF,QAAQggI,EAAMtgI,KAAKijF,GAGxCq9C,EAAMtgI,KAAK,SAEbgjF,EAAOj9E,GAAG,QAAQ,SAAUk9E,GAC1B5xE,EAAM,gBACF2rB,EAAMnkB,UAASoqE,EAAQjmD,EAAMnkB,QAAQ7D,MAAMiuE,IAE3CjmD,EAAMi/F,YAAc,MAACh5C,IAAyDjmD,EAAMi/F,YAAgBh5C,GAAUA,EAAM3iF,UAE9GggI,EAAMtgI,KAAKijF,KAGnB45C,GAAS,EACT75C,EAAOm2C,aAKGn2C,OACI3mF,IAAZ9B,KAAK4Y,IAAyC,mBAAd6vE,EAAO7vE,KACzC5Y,KAAK4Y,GAAK,SAAoBmY,GAC5B,OAAO,WACL,OAAO03D,EAAO13D,GAAQ1Q,MAAMooE,EAAQ1rE,YAF9B,CAIRnE,IAKN,IAAK,IAAI8V,EAAI,EAAGA,EAAI8yG,EAAaz7H,OAAQ2oB,IACvC+5D,EAAOj9E,GAAGg2H,EAAa9yG,GAAI1uB,KAAKgM,KAAKwa,KAAKxmB,KAAMwhI,EAAa9yG,KAc/D,OATA1uB,KAAK6L,MAAQ,SAAU6iB,GACrB5X,EAAM,gBAAiB4X,GAEnB4zG,IACFA,GAAS,EACT75C,EAAOq2C,WAIJ9+H,MAGa,mBAAXkN,SACTtB,EAASpJ,UAAU0K,OAAO84H,eAAiB,WAKzC,YAJ0ClkI,IAAtCi/H,IACFA,EAAoC,EAAQ,OAGvCA,EAAkC/gI,QAI7Cd,OAAOC,eAAeyM,EAASpJ,UAAW,wBAAyB,CAIjEJ,YAAY,EACZC,IAAK,WACH,OAAOrC,KAAKqtH,eAAe+S,iBAG/BlhI,OAAOC,eAAeyM,EAASpJ,UAAW,iBAAkB,CAI1DJ,YAAY,EACZC,IAAK,WACH,OAAOrC,KAAKqtH,gBAAkBrtH,KAAKqtH,eAAexuG,UAGtD3f,OAAOC,eAAeyM,EAASpJ,UAAW,kBAAmB,CAI3DJ,YAAY,EACZC,IAAK,WACH,OAAOrC,KAAKqtH,eAAeyU,SAE7Bv8H,IAAK,SAAak9B,GACZziC,KAAKqtH,iBACPrtH,KAAKqtH,eAAeyU,QAAUr/F,MAKpC72B,EAASq6H,UAAY7B,EACrBllI,OAAOC,eAAeyM,EAASpJ,UAAW,iBAAkB,CAI1DJ,YAAY,EACZC,IAAK,WACH,OAAOrC,KAAKqtH,eAAetnH,UAoDT,mBAAXmH,SACTtB,EAAS8rB,KAAO,SAAU3pB,EAAUk+D,GAKlC,YAJanqE,IAAT41B,IACFA,EAAO,EAAQ,QAGVA,EAAK9rB,EAAUmC,EAAUk+D,mCC1hCpCD,EAAO5sE,QAAUmhI,EAEjB,IAAIY,EAAiB,WACjBE,EAA6BF,EAAeE,2BAC5C6E,EAAwB/E,EAAe+E,sBACvCC,EAAqChF,EAAegF,mCACpDC,EAA8BjF,EAAeiF,4BAE7CtG,EAAS,EAAQ,OAIrB,SAASuG,EAAevrC,EAAI5xF,GAC1B,IAAIo9H,EAAKtmI,KAAKumI,gBACdD,EAAGE,cAAe,EAClB,IAAIzI,EAAKuI,EAAGG,QAEZ,GAAW,OAAP1I,EACF,OAAO/9H,KAAKgM,KAAK,QAAS,IAAIk6H,GAGhCI,EAAGI,WAAa,KAChBJ,EAAGG,QAAU,KACD,MAARv9H,GACFlJ,KAAKyF,KAAKyD,GACZ60H,EAAGjjC,GACH,IAAI6rC,EAAK3mI,KAAKqtH,eACdsZ,EAAG3E,SAAU,GAET2E,EAAGzE,cAAgByE,EAAG5gI,OAAS4gI,EAAGvG,gBACpCpgI,KAAK6L,MAAM86H,EAAGvG,eAIlB,SAASG,EAAUlvH,GACjB,KAAMrR,gBAAgBugI,GAAY,OAAO,IAAIA,EAAUlvH,GACvDyuH,EAAOp9H,KAAK1C,KAAMqR,GAClBrR,KAAKumI,gBAAkB,CACrBF,eAAgBA,EAAe7/G,KAAKxmB,MACpC4mI,eAAe,EACfJ,cAAc,EACdC,QAAS,KACTC,WAAY,KACZG,cAAe,MAGjB7mI,KAAKqtH,eAAe6U,cAAe,EAInCliI,KAAKqtH,eAAe4U,MAAO,EAEvB5wH,IAC+B,mBAAtBA,EAAQk8G,YAA0BvtH,KAAKwtH,WAAan8G,EAAQk8G,WAC1C,mBAAlBl8G,EAAQy1H,QAAsB9mI,KAAK+mI,OAAS11H,EAAQy1H,QAIjE9mI,KAAKwL,GAAG,YAAaw7H,GAGvB,SAASA,IACP,IAAIjB,EAAQ/lI,KAEe,mBAAhBA,KAAK+mI,QAA0B/mI,KAAKqtH,eAAekR,UAK5DxpC,EAAK/0F,KAAM,KAAM,MAJjBA,KAAK+mI,QAAO,SAAUjsC,EAAI5xF,GACxB6rF,EAAKgxC,EAAOjrC,EAAI5xF,MA6DtB,SAAS6rF,EAAKtM,EAAQqS,EAAI5xF,GACxB,GAAI4xF,EAAI,OAAOrS,EAAOz8E,KAAK,QAAS8uF,GAMpC,GALY,MAAR5xF,GACFu/E,EAAOhjF,KAAKyD,GAIVu/E,EAAO0kC,eAAepnH,OAAQ,MAAM,IAAIqgI,EAC5C,GAAI39C,EAAO89C,gBAAgBC,aAAc,MAAM,IAAIL,EACnD,OAAO19C,EAAOhjF,KAAK,MA9HrB,EAAQ,MAAR,CAAoB86H,EAAWT,GA+D/BS,EAAU/9H,UAAUiD,KAAO,SAAUijF,EAAO2C,GAE1C,OADArrF,KAAKumI,gBAAgBK,eAAgB,EAC9B9G,EAAOt9H,UAAUiD,KAAK/C,KAAK1C,KAAM0oF,EAAO2C,IAajDk1C,EAAU/9H,UAAUgrH,WAAa,SAAU9kC,EAAO2C,EAAU0yC,GAC1DA,EAAG,IAAIsD,EAA2B,kBAGpCd,EAAU/9H,UAAU0qH,OAAS,SAAUxkC,EAAO2C,EAAU0yC,GACtD,IAAIuI,EAAKtmI,KAAKumI,gBAKd,GAJAD,EAAGG,QAAU1I,EACbuI,EAAGI,WAAah+C,EAChB49C,EAAGO,cAAgBx7C,GAEdi7C,EAAGE,aAAc,CACpB,IAAIG,EAAK3mI,KAAKqtH,gBACViZ,EAAGM,eAAiBD,EAAGzE,cAAgByE,EAAG5gI,OAAS4gI,EAAGvG,gBAAepgI,KAAK6L,MAAM86H,EAAGvG,iBAO3FG,EAAU/9H,UAAUqJ,MAAQ,SAAU6iB,GACpC,IAAI43G,EAAKtmI,KAAKumI,gBAEQ,OAAlBD,EAAGI,YAAwBJ,EAAGE,aAOhCF,EAAGM,eAAgB,GANnBN,EAAGE,cAAe,EAElBxmI,KAAKwtH,WAAW8Y,EAAGI,WAAYJ,EAAGO,cAAeP,EAAGD,kBAQxD9F,EAAU/9H,UAAUogI,SAAW,SAAU13G,EAAK6yG,GAC5C+B,EAAOt9H,UAAUogI,SAASlgI,KAAK1C,KAAMkrB,GAAK,SAAU+7G,GAClDlJ,EAAGkJ,wCCtIHnH,aAfJ,SAASoH,EAAczkG,GACrB,IAAIsjG,EAAQ/lI,KAEZA,KAAKy2C,KAAO,KACZz2C,KAAKuS,MAAQ,KAEbvS,KAAKmnI,OAAS,YAimBhB,SAAwBC,EAAS3kG,EAAOvX,GACtC,IAAI3Y,EAAQ60H,EAAQ70H,MAGpB,IAFA60H,EAAQ70H,MAAQ,KAETA,GAAO,CACZ,IAAIwrH,EAAKxrH,EAAMvE,SACfy0B,EAAM4kG,YACNtJ,EAvmBAuJ,WAwmBA/0H,EAAQA,EAAMkkC,KAIhBhU,EAAM8kG,mBAAmB9wF,KAAO2wF,EA5mB9BE,CAAevB,EAAOtjG,IAnB1BupC,EAAO5sE,QAAU2gI,EA8BjBA,EAASyH,cAAgBA,EAGzB,IAyJIC,EAzJAC,EAAe,CACjBC,UAAW,EAAQ,OAMjBjH,EAAS,EAAQ,OAIjBpgE,EAAS,gBAETqgE,EAAgB,EAAAjmG,EAAO9b,YAAc,aAUrCqiH,EAAc,EAAQ,OAGtBC,EADW,EAAQ,OACSA,iBAE5BC,EAAiB,WACjBzuC,EAAuByuC,EAAezuC,qBACtC2uC,EAA6BF,EAAeE,2BAC5C6E,EAAwB/E,EAAe+E,sBACvC0B,EAAyBzG,EAAeyG,uBACxCC,EAAuB1G,EAAe0G,qBACtCC,EAAyB3G,EAAe2G,uBACxCC,EAA6B5G,EAAe4G,2BAC5CC,EAAuB7G,EAAe6G,qBAEtCzG,EAAiBN,EAAYM,eAIjC,SAAS0G,KAET,SAAST,EAAcn2H,EAASo3E,EAAQg5C,GACtC3B,EAASA,GAAU,EAAQ,OAC3BzuH,EAAUA,GAAW,GAMG,kBAAbowH,IAAwBA,EAAWh5C,aAAkBq3C,GAGhE9/H,KAAK0hI,aAAerwH,EAAQqwH,WACxBD,IAAUzhI,KAAK0hI,WAAa1hI,KAAK0hI,cAAgBrwH,EAAQ62H,oBAI7DloI,KAAKogI,cAAgBc,EAAiBlhI,KAAMqR,EAAS,wBAAyBowH,GAE9EzhI,KAAKmoI,aAAc,EAEnBnoI,KAAK0lI,WAAY,EAEjB1lI,KAAKooI,QAAS,EAEdpoI,KAAKkgI,OAAQ,EAEblgI,KAAKykI,UAAW,EAEhBzkI,KAAKu+H,WAAY,EAIjB,IAAI8J,GAAqC,IAA1Bh3H,EAAQi3H,cACvBtoI,KAAKsoI,eAAiBD,EAItBroI,KAAKyiI,gBAAkBpxH,EAAQoxH,iBAAmB,OAIlDziI,KAAK+F,OAAS,EAEd/F,KAAKuoI,SAAU,EAEfvoI,KAAKwoI,OAAS,EAKdxoI,KAAKiiI,MAAO,EAIZjiI,KAAKyoI,kBAAmB,EAExBzoI,KAAK0oI,QAAU,SAAU5tC,IA6R3B,SAAiBrS,EAAQqS,GACvB,IAAIr4D,EAAQgmD,EAAO0kC,eACf8U,EAAOx/F,EAAMw/F,KACblE,EAAKt7F,EAAMgkG,QACf,GAAkB,mBAAP1I,EAAmB,MAAM,IAAImI,EAExC,GAbF,SAA4BzjG,GAC1BA,EAAM8lG,SAAU,EAChB9lG,EAAMgkG,QAAU,KAChBhkG,EAAM18B,QAAU08B,EAAMkmG,SACtBlmG,EAAMkmG,SAAW,EAQjBC,CAAmBnmG,GACfq4D,GArCN,SAAsBrS,EAAQhmD,EAAOw/F,EAAMnnC,EAAIijC,KAC3Ct7F,EAAM4kG,UAEJpF,GAGF1nH,EAAQo4G,SAASoL,EAAIjjC,GAGrBvgF,EAAQo4G,SAASkW,EAAapgD,EAAQhmD,GACtCgmD,EAAO0kC,eAAe2b,cAAe,EACrCvH,EAAe94C,EAAQqS,KAIvBijC,EAAGjjC,GACHrS,EAAO0kC,eAAe2b,cAAe,EACrCvH,EAAe94C,EAAQqS,GAGvB+tC,EAAYpgD,EAAQhmD,IAiBdsmG,CAAatgD,EAAQhmD,EAAOw/F,EAAMnnC,EAAIijC,OAAS,CAErD,IAAI0G,EAAWuE,EAAWvmG,IAAUgmD,EAAO81C,UAEtCkG,GAAahiG,EAAM+lG,QAAW/lG,EAAMgmG,mBAAoBhmG,EAAMwmG,iBACjEC,EAAYzgD,EAAQhmD,GAGlBw/F,EACF1nH,EAAQo4G,SAASwW,EAAY1gD,EAAQhmD,EAAOgiG,EAAU1G,GAEtDoL,EAAW1gD,EAAQhmD,EAAOgiG,EAAU1G,IA7StC2K,CAAQjgD,EAAQqS,IAIlB96F,KAAKymI,QAAU,KAEfzmI,KAAK2oI,SAAW,EAChB3oI,KAAKipI,gBAAkB,KACvBjpI,KAAKopI,oBAAsB,KAG3BppI,KAAKqnI,UAAY,EAGjBrnI,KAAKqpI,aAAc,EAEnBrpI,KAAK8oI,cAAe,EAEpB9oI,KAAKuiI,WAAkC,IAAtBlxH,EAAQkxH,UAEzBviI,KAAKwiI,cAAgBnxH,EAAQmxH,YAE7BxiI,KAAKspI,qBAAuB,EAG5BtpI,KAAKunI,mBAAqB,IAAIL,EAAclnI,MA4C9C,SAAS+/H,EAAS1uH,GAUhB,IAAIowH,EAAWzhI,gBATf8/H,EAASA,GAAU,EAAQ,QAU3B,IAAK2B,IAAagG,EAAgB/kI,KAAKq9H,EAAU//H,MAAO,OAAO,IAAI+/H,EAAS1uH,GAC5ErR,KAAKmtH,eAAiB,IAAIqa,EAAcn2H,EAASrR,KAAMyhI,GAEvDzhI,KAAKkC,UAAW,EAEZmP,IAC2B,mBAAlBA,EAAQoJ,QAAsBza,KAAKktH,OAAS77G,EAAQoJ,OACjC,mBAAnBpJ,EAAQk4H,SAAuBvpI,KAAKwpI,QAAUn4H,EAAQk4H,QAClC,mBAApBl4H,EAAQ6K,UAAwBlc,KAAK4iI,SAAWvxH,EAAQ6K,SACtC,mBAAlB7K,EAAQo4H,QAAsBzpI,KAAK0pI,OAASr4H,EAAQo4H,QAGjE/I,EAAOh+H,KAAK1C,MAwJd,SAAS2pI,EAAQlhD,EAAQhmD,EAAO8mG,EAAQ7lH,EAAKglE,EAAO2C,EAAU0yC,GAC5Dt7F,EAAMkmG,SAAWjlH,EACjB+e,EAAMgkG,QAAU1I,EAChBt7F,EAAM8lG,SAAU,EAChB9lG,EAAMw/F,MAAO,EACTx/F,EAAM87F,UAAW97F,EAAMimG,QAAQ,IAAIb,EAAqB,UAAmB0B,EAAQ9gD,EAAO+gD,QAAQ9gD,EAAOjmD,EAAMimG,SAAcjgD,EAAOykC,OAAOxkC,EAAO2C,EAAU5oD,EAAMimG,SACtKjmG,EAAMw/F,MAAO,EAwDf,SAASkH,EAAW1gD,EAAQhmD,EAAOgiG,EAAU1G,GACtC0G,GASP,SAAsBh8C,EAAQhmD,GACP,IAAjBA,EAAM18B,QAAgB08B,EAAMijG,YAC9BjjG,EAAMijG,WAAY,EAClBj9C,EAAOz8E,KAAK,UAZC49H,CAAanhD,EAAQhmD,GACpCA,EAAM4kG,YACNtJ,IACA8K,EAAYpgD,EAAQhmD,GActB,SAASymG,EAAYzgD,EAAQhmD,GAC3BA,EAAMgmG,kBAAmB,EACzB,IAAIl2H,EAAQkwB,EAAMwmG,gBAElB,GAAIxgD,EAAO+gD,SAAWj3H,GAASA,EAAMkkC,KAAM,CAEzC,IAAIpf,EAAIoL,EAAM6mG,qBACVzqH,EAAS,IAAI/C,MAAMub,GACnBwyG,EAASpnG,EAAM8kG,mBACnBsC,EAAOt3H,MAAQA,EAIf,IAHA,IAAIwnF,EAAQ,EACR+vC,GAAa,EAEVv3H,GACLsM,EAAOk7E,GAASxnF,EACXA,EAAMw3H,QAAOD,GAAa,GAC/Bv3H,EAAQA,EAAMkkC,KACdsjD,GAAS,EAGXl7E,EAAOirH,WAAaA,EACpBH,EAAQlhD,EAAQhmD,GAAO,EAAMA,EAAM18B,OAAQ8Y,EAAQ,GAAIgrH,EAAO1C,QAG9D1kG,EAAM4kG,YACN5kG,EAAM2mG,oBAAsB,KAExBS,EAAOpzF,MACThU,EAAM8kG,mBAAqBsC,EAAOpzF,KAClCozF,EAAOpzF,KAAO,MAEdhU,EAAM8kG,mBAAqB,IAAIL,EAAczkG,GAG/CA,EAAM6mG,qBAAuB,MACxB,CAEL,KAAO/2H,GAAO,CACZ,IAAIm2E,EAAQn2E,EAAMm2E,MACd2C,EAAW94E,EAAM84E,SACjB0yC,EAAKxrH,EAAMvE,SASf,GAPA27H,EAAQlhD,EAAQhmD,GAAO,EADbA,EAAMi/F,WAAa,EAAIh5C,EAAM3iF,OACJ2iF,EAAO2C,EAAU0yC,GACpDxrH,EAAQA,EAAMkkC,KACdhU,EAAM6mG,uBAKF7mG,EAAM8lG,QACR,MAIU,OAAVh2H,IAAgBkwB,EAAM2mG,oBAAsB,MAGlD3mG,EAAMwmG,gBAAkB12H,EACxBkwB,EAAMgmG,kBAAmB,EA2C3B,SAASO,EAAWvmG,GAClB,OAAOA,EAAM2lG,QAA2B,IAAjB3lG,EAAM18B,QAA0C,OAA1B08B,EAAMwmG,kBAA6BxmG,EAAMgiG,WAAahiG,EAAM8lG,QAG3G,SAASyB,EAAUvhD,EAAQhmD,GACzBgmD,EAAOihD,QAAO,SAAUx+G,GACtBuX,EAAM4kG,YAEFn8G,GACFq2G,EAAe94C,EAAQv9D,GAGzBuX,EAAM4mG,aAAc,EACpB5gD,EAAOz8E,KAAK,aACZ68H,EAAYpgD,EAAQhmD,MAiBxB,SAASomG,EAAYpgD,EAAQhmD,GAC3B,IAAIwnG,EAAOjB,EAAWvmG,GAEtB,GAAIwnG,IAhBN,SAAmBxhD,EAAQhmD,GACpBA,EAAM4mG,aAAgB5mG,EAAM0lG,cACF,mBAAlB1/C,EAAOihD,QAA0BjnG,EAAM87F,WAKhD97F,EAAM4mG,aAAc,EACpB5gD,EAAOz8E,KAAK,eALZy2B,EAAM4kG,YACN5kG,EAAM0lG,aAAc,EACpB5tH,EAAQo4G,SAASqX,EAAWvhD,EAAQhmD,KAYtCukG,CAAUv+C,EAAQhmD,GAEM,IAApBA,EAAM4kG,YACR5kG,EAAMgiG,UAAW,EACjBh8C,EAAOz8E,KAAK,UAERy2B,EAAM+/F,cAAa,CAGrB,IAAI0H,EAASzhD,EAAO4kC,iBAEf6c,GAAUA,EAAO1H,aAAe0H,EAAOnI,aAC1Ct5C,EAAOvsE,UAMf,OAAO+tH,EA3hBT,EAAQ,MAAR,CAAoBlK,EAAUW,GAyF9B8G,EAAchlI,UAAU69H,UAAY,WAIlC,IAHA,IAAI8J,EAAUnqI,KAAKipI,gBACftlH,EAAM,GAEHwmH,GACLxmH,EAAIle,KAAK0kI,GACTA,EAAUA,EAAQ1zF,KAGpB,OAAO9yB,GAGT,WACE,IACEzkB,OAAOC,eAAeqoI,EAAchlI,UAAW,SAAU,CACvDH,IAAKqlI,EAAaC,WAAU,WAC1B,OAAO3nI,KAAKqgI,cACX,6EAAmF,aAExF,MAAOtlG,KAPX,GAcsB,mBAAX7tB,QAAyBA,OAAOk9H,aAAiE,mBAA3C9lE,SAAS9hE,UAAU0K,OAAOk9H,cACzF3C,EAAkBnjE,SAAS9hE,UAAU0K,OAAOk9H,aAC5ClrI,OAAOC,eAAe4gI,EAAU7yH,OAAOk9H,YAAa,CAClD/qI,MAAO,SAAeuH,GACpB,QAAI6gI,EAAgB/kI,KAAK1C,KAAM4G,IAC3B5G,OAAS+/H,GACNn5H,GAAUA,EAAOumH,0BAA0Bqa,MAItDC,EAAkB,SAAyB7gI,GACzC,OAAOA,aAAkB5G,MA+B7B+/H,EAASv9H,UAAUyqH,KAAO,WACxBsU,EAAevhI,KAAM,IAAI4nI,IA+B3B7H,EAASv9H,UAAUiY,MAAQ,SAAUiuE,EAAO2C,EAAU0yC,GACpD,IAnNqB7hF,EAmNjBzZ,EAAQziC,KAAKmtH,eACb39B,GAAM,EAENu6C,GAAStnG,EAAMi/F,aAtNExlF,EAsN0BwsC,EArNxCpoB,EAAOG,SAASvkB,IAAQA,aAAeykF,GAsO9C,OAfIoJ,IAAUzpE,EAAOG,SAASioB,KAC5BA,EA7NJ,SAA6BA,GAC3B,OAAOpoB,EAAO5oC,KAAKgxD,GA4NT06C,CAAoB16C,IAGN,mBAAb2C,IACT0yC,EAAK1yC,EACLA,EAAW,MAGT0+C,EAAO1+C,EAAW,SAAmBA,IAAUA,EAAW5oD,EAAMggG,iBAClD,mBAAP1E,IAAmBA,EAAKkK,GAC/BxlG,EAAM2lG,OA7CZ,SAAuB3/C,EAAQs1C,GAC7B,IAAIjjC,EAAK,IAAIitC,EAEbxG,EAAe94C,EAAQqS,GACvBvgF,EAAQo4G,SAASoL,EAAIjjC,GAyCHuvC,CAAcrqI,KAAM+9H,IAAagM,GAnCrD,SAAoBthD,EAAQhmD,EAAOimD,EAAOq1C,GACxC,IAAIjjC,EAQJ,OANc,OAAVpS,EACFoS,EAAK,IAAIgtC,EACiB,iBAAVp/C,GAAuBjmD,EAAMi/F,aAC7C5mC,EAAK,IAAIpI,EAAqB,QAAS,CAAC,SAAU,UAAWhK,KAG3DoS,IACFymC,EAAe94C,EAAQqS,GACvBvgF,EAAQo4G,SAASoL,EAAIjjC,IACd,GAuBmDwvC,CAAWtqI,KAAMyiC,EAAOimD,EAAOq1C,MACzFt7F,EAAM4kG,YACN73C,EAwDJ,SAAuB/G,EAAQhmD,EAAOsnG,EAAOrhD,EAAO2C,EAAU0yC,GAC5D,IAAKgM,EAAO,CACV,IAAIQ,EAtBR,SAAqB9nG,EAAOimD,EAAO2C,GAKjC,OAJK5oD,EAAMi/F,aAAsC,IAAxBj/F,EAAM6lG,eAA4C,iBAAV5/C,IAC/DA,EAAQpoB,EAAO5oC,KAAKgxD,EAAO2C,IAGtB3C,EAiBU8hD,CAAY/nG,EAAOimD,EAAO2C,GAErC3C,IAAU6hD,IACZR,GAAQ,EACR1+C,EAAW,SACX3C,EAAQ6hD,GAIZ,IAAI7mH,EAAM+e,EAAMi/F,WAAa,EAAIh5C,EAAM3iF,OACvC08B,EAAM18B,QAAU2d,EAChB,IAAI8rE,EAAM/sD,EAAM18B,OAAS08B,EAAM29F,cAI/B,GAFK5wC,IAAK/sD,EAAMijG,WAAY,GAExBjjG,EAAM8lG,SAAW9lG,EAAM+lG,OAAQ,CACjC,IAAIjmH,EAAOkgB,EAAM2mG,oBACjB3mG,EAAM2mG,oBAAsB,CAC1B1gD,MAAOA,EACP2C,SAAUA,EACV0+C,MAAOA,EACP/7H,SAAU+vH,EACVtnF,KAAM,MAGJl0B,EACFA,EAAKk0B,KAAOhU,EAAM2mG,oBAElB3mG,EAAMwmG,gBAAkBxmG,EAAM2mG,oBAGhC3mG,EAAM6mG,sBAAwB,OAE9BK,EAAQlhD,EAAQhmD,GAAO,EAAO/e,EAAKglE,EAAO2C,EAAU0yC,GAGtD,OAAOvuC,EA9FCi7C,CAAczqI,KAAMyiC,EAAOsnG,EAAOrhD,EAAO2C,EAAU0yC,IAEpDvuC,GAGTuwC,EAASv9H,UAAUkoI,KAAO,WACxB1qI,KAAKmtH,eAAeqb,UAGtBzI,EAASv9H,UAAUmoI,OAAS,WAC1B,IAAIloG,EAAQziC,KAAKmtH,eAEb1qF,EAAM+lG,SACR/lG,EAAM+lG,SACD/lG,EAAM8lG,SAAY9lG,EAAM+lG,QAAW/lG,EAAMgmG,mBAAoBhmG,EAAMwmG,iBAAiBC,EAAYlpI,KAAMyiC,KAI/Gs9F,EAASv9H,UAAUooI,mBAAqB,SAA4Bv/C,GAGlE,GADwB,iBAAbA,IAAuBA,EAAWA,EAAS33D,iBAChD,CAAC,MAAO,OAAQ,QAAS,QAAS,SAAU,SAAU,OAAQ,QAAS,UAAW,WAAY,OAAO5b,SAASuzE,EAAW,IAAI33D,gBAAkB,GAAI,MAAM,IAAIs0G,EAAqB38C,GAExL,OADArrF,KAAKmtH,eAAesV,gBAAkBp3C,EAC/BrrF,MAGTd,OAAOC,eAAe4gI,EAASv9H,UAAW,iBAAkB,CAI1DJ,YAAY,EACZC,IAAK,WACH,OAAOrC,KAAKmtH,gBAAkBntH,KAAKmtH,eAAekT,eAYtDnhI,OAAOC,eAAe4gI,EAASv9H,UAAW,wBAAyB,CAIjEJ,YAAY,EACZC,IAAK,WACH,OAAOrC,KAAKmtH,eAAeiT,iBA4L/BL,EAASv9H,UAAU0qH,OAAS,SAAUxkC,EAAO2C,EAAU0yC,GACrDA,EAAG,IAAIsD,EAA2B,cAGpCtB,EAASv9H,UAAUgnI,QAAU,KAE7BzJ,EAASv9H,UAAUooF,IAAM,SAAUlC,EAAO2C,EAAU0yC,GAClD,IAAIt7F,EAAQziC,KAAKmtH,eAoBjB,MAlBqB,mBAAVzkC,GACTq1C,EAAKr1C,EACLA,EAAQ,KACR2C,EAAW,MACkB,mBAAbA,IAChB0yC,EAAK1yC,EACLA,EAAW,MAGT3C,MAAAA,GAAuC1oF,KAAKya,MAAMiuE,EAAO2C,GAEzD5oD,EAAM+lG,SACR/lG,EAAM+lG,OAAS,EACfxoI,KAAK2qI,UAIFloG,EAAM2lG,QAsEb,SAAqB3/C,EAAQhmD,EAAOs7F,GAClCt7F,EAAM2lG,QAAS,EACfS,EAAYpgD,EAAQhmD,GAEhBs7F,IACEt7F,EAAMgiG,SAAUlqH,EAAQo4G,SAASoL,GAASt1C,EAAOiQ,KAAK,SAAUqlC,IAGtEt7F,EAAMy9F,OAAQ,EACdz3C,EAAOvmF,UAAW,EA/EC2oI,CAAY7qI,KAAMyiC,EAAOs7F,GACrC/9H,MAGTd,OAAOC,eAAe4gI,EAASv9H,UAAW,iBAAkB,CAI1DJ,YAAY,EACZC,IAAK,WACH,OAAOrC,KAAKmtH,eAAepnH,UAuF/B7G,OAAOC,eAAe4gI,EAASv9H,UAAW,YAAa,CAIrDJ,YAAY,EACZC,IAAK,WACH,YAA4BP,IAAxB9B,KAAKmtH,gBAIFntH,KAAKmtH,eAAeoR,WAE7Bh5H,IAAK,SAAalG,GAGXW,KAAKmtH,iBAMVntH,KAAKmtH,eAAeoR,UAAYl/H,MAGpC0gI,EAASv9H,UAAU0Z,QAAU+kH,EAAY/kH,QACzC6jH,EAASv9H,UAAU+gI,WAAatC,EAAYuC,UAE5CzD,EAASv9H,UAAUogI,SAAW,SAAU13G,EAAK6yG,GAC3CA,EAAG7yG,qCCrrBD4/G,aAEJ,SAASC,EAAgB7uF,EAAK/6C,EAAK9B,GAAiK,OAApJ8B,KAAO+6C,EAAOh9C,OAAOC,eAAe+8C,EAAK/6C,EAAK,CAAE9B,MAAOA,EAAO+C,YAAY,EAAMD,cAAc,EAAMD,UAAU,IAAkBg6C,EAAI/6C,GAAO9B,EAAgB68C,EAE3M,IAAIuoF,EAAW,EAAQ,OAEnBuG,EAAe99H,OAAO,eACtB+9H,EAAc/9H,OAAO,cACrBg+H,EAASh+H,OAAO,SAChBi+H,EAASj+H,OAAO,SAChBk+H,EAAel+H,OAAO,eACtBm+H,EAAiBn+H,OAAO,iBACxBo+H,EAAUp+H,OAAO,UAErB,SAASq+H,EAAiBlsI,EAAO01F,GAC/B,MAAO,CACL11F,MAAOA,EACP01F,KAAMA,GAIV,SAASy2C,EAAerlH,GACtB,IAAIlb,EAAUkb,EAAK6kH,GAEnB,GAAgB,OAAZ//H,EAAkB,CACpB,IAAI/B,EAAOid,EAAKmlH,GAAStoE,OAIZ,OAAT95D,IACFid,EAAKilH,GAAgB,KACrBjlH,EAAK6kH,GAAgB,KACrB7kH,EAAK8kH,GAAe,KACpBhgI,EAAQsgI,EAAiBriI,GAAM,MAKrC,SAASuiI,EAAWtlH,GAGlB5L,EAAQo4G,SAAS6Y,EAAgBrlH,GAgBnC,IAAIulH,EAAyBxsI,OAAOgf,gBAAe,eAC/CytH,EAAuCzsI,OAAOgmC,gBA4D/C6lG,EA5D+DD,EAAwB,CACpFriD,aACF,OAAOzoF,KAAKsrI,IAGd70F,KAAM,WACJ,IAAIsvF,EAAQ/lI,KAIR+L,EAAQ/L,KAAKkrI,GAEjB,GAAc,OAAVn/H,EACF,OAAOf,QAAQE,OAAOa,GAGxB,GAAI/L,KAAKmrI,GACP,OAAOngI,QAAQC,QAAQsgI,OAAiBzpI,GAAW,IAGrD,GAAI9B,KAAKsrI,GAAS/M,UAKhB,OAAO,IAAIvzH,SAAQ,SAAUC,EAASC,GACpCqP,EAAQo4G,UAAS,WACXoT,EAAMmF,GACRhgI,EAAO66H,EAAMmF,IAEbjgI,EAAQsgI,OAAiBzpI,GAAW,UAU5C,IACIgqC,EADA8/F,EAAc5rI,KAAKorI,GAGvB,GAAIQ,EACF9/F,EAAU,IAAI9gC,QA1DpB,SAAqB4gI,EAAazlH,GAChC,OAAO,SAAUlb,EAASC,GACxB0gI,EAAYz/H,MAAK,WACXga,EAAKglH,GACPlgI,EAAQsgI,OAAiBzpI,GAAW,IAItCqkB,EAAKklH,GAAgBpgI,EAASC,KAC7BA,IAiDqB2gI,CAAYD,EAAa5rI,WAC1C,CAGL,IAAIkJ,EAAOlJ,KAAKsrI,GAAStoE,OAEzB,GAAa,OAAT95D,EACF,OAAO8B,QAAQC,QAAQsgI,EAAiBriI,GAAM,IAGhD4iC,EAAU,IAAI9gC,QAAQhL,KAAKqrI,IAI7B,OADArrI,KAAKorI,GAAgBt/F,EACdA,IAE+B5+B,OAAO84H,eAAe,WAC9D,OAAOhmI,QACL+qI,EAAgBD,EAAuB,UAAU,WACnD,IAAIgB,EAAS9rI,KAKb,OAAO,IAAIgL,SAAQ,SAAUC,EAASC,GACpC4gI,EAAOR,GAASpvH,QAAQ,MAAM,SAAUgP,GAClCA,EACFhgB,EAAOggB,GAITjgB,EAAQsgI,OAAiBzpI,GAAW,aAGtCgpI,GAAwBY,GAoE5B1/D,EAAO5sE,QAlEiC,SAA2CqpF,GACjF,IAAIsjD,EAEA5+H,EAAWjO,OAAOuC,OAAOkqI,GAA4DZ,EAArBgB,EAAiB,GAAoCT,EAAS,CAChIjsI,MAAOopF,EACPvmF,UAAU,IACR6oI,EAAgBgB,EAAgBf,EAAc,CAChD3rI,MAAO,KACP6C,UAAU,IACR6oI,EAAgBgB,EAAgBd,EAAa,CAC/C5rI,MAAO,KACP6C,UAAU,IACR6oI,EAAgBgB,EAAgBb,EAAQ,CAC1C7rI,MAAO,KACP6C,UAAU,IACR6oI,EAAgBgB,EAAgBZ,EAAQ,CAC1C9rI,MAAOopF,EAAO4kC,eAAe0U,WAC7B7/H,UAAU,IACR6oI,EAAgBgB,EAAgBV,EAAgB,CAClDhsI,MAAO,SAAe4L,EAASC,GAC7B,IAAIhC,EAAOiE,EAASm+H,GAAStoE,OAEzB95D,GACFiE,EAASi+H,GAAgB,KACzBj+H,EAAS69H,GAAgB,KACzB79H,EAAS89H,GAAe,KACxBhgI,EAAQsgI,EAAiBriI,GAAM,MAE/BiE,EAAS69H,GAAgB//H,EACzBkC,EAAS89H,GAAe//H,IAG5BhJ,UAAU,IACR6pI,IA8BJ,OA7BA5+H,EAASi+H,GAAgB,KACzB3G,EAASh8C,GAAQ,SAAUv9D,GACzB,GAAIA,GAAoB,+BAAbA,EAAIzO,KAAuC,CACpD,IAAIvR,EAASiC,EAAS89H,GAWtB,OARe,OAAX//H,IACFiC,EAASi+H,GAAgB,KACzBj+H,EAAS69H,GAAgB,KACzB79H,EAAS89H,GAAe,KACxB//H,EAAOggB,SAGT/d,EAAS+9H,GAAUhgH,GAIrB,IAAIjgB,EAAUkC,EAAS69H,GAEP,OAAZ//H,IACFkC,EAASi+H,GAAgB,KACzBj+H,EAAS69H,GAAgB,KACzB79H,EAAS89H,GAAe,KACxBhgI,EAAQsgI,OAAiBzpI,GAAW,KAGtCqL,EAASg+H,IAAU,KAErB1iD,EAAOj9E,GAAG,WAAYigI,EAAWjlH,KAAK,KAAMrZ,IACrCA,iCCzMT,SAASorF,EAAQ3xF,EAAQolI,GAAkB,IAAIp/H,EAAO1N,OAAO0N,KAAKhG,GAAS,GAAI1H,OAAOs5F,sBAAuB,CAAE,IAAIyzC,EAAU/sI,OAAOs5F,sBAAsB5xF,GAAaolI,IAAgBC,EAAUA,EAAQ3+H,QAAO,SAAU8kF,GAAO,OAAOlzF,OAAO8C,yBAAyB4E,EAAQwrF,GAAKhwF,eAAgBwK,EAAKnH,KAAK4a,MAAMzT,EAAMq/H,GAAY,OAAOr/H,EAI9U,SAASm+H,EAAgB7uF,EAAK/6C,EAAK9B,GAAiK,OAApJ8B,KAAO+6C,EAAOh9C,OAAOC,eAAe+8C,EAAK/6C,EAAK,CAAE9B,MAAOA,EAAO+C,YAAY,EAAMD,cAAc,EAAMD,UAAU,IAAkBg6C,EAAI/6C,GAAO9B,EAAgB68C,EAI3M,SAASgwF,EAAkBlhG,EAAQmhG,GAAS,IAAK,IAAIvzH,EAAI,EAAGA,EAAIuzH,EAAMpmI,OAAQ6S,IAAK,CAAE,IAAIonF,EAAamsC,EAAMvzH,GAAIonF,EAAW59F,WAAa49F,EAAW59F,aAAc,EAAO49F,EAAW79F,cAAe,EAAU,UAAW69F,IAAYA,EAAW99F,UAAW,GAAMhD,OAAOC,eAAe6rC,EAAQg1D,EAAW7+F,IAAK6+F,IAI7S,IACI1/B,EADW,EAAQ,OACDA,OAGlB1lD,EADY,EAAQ,OACAA,QAEpBwxH,EAASxxH,GAAWA,EAAQwxH,QAAU,UAM1CpgE,EAAO5sE,QAEP,WACE,SAAS4hI,KArBX,SAAyBqL,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIprH,UAAU,qCAsB5GqrH,CAAgBvsI,KAAMghI,GAEtBhhI,KAAK0hH,KAAO,KACZ1hH,KAAKu/G,KAAO,KACZv/G,KAAK+F,OAAS,EAtBlB,IAAsBumI,EAAaE,EAoMjC,OApMoBF,EAyBPtL,EAzBoBwL,EAyBR,CAAC,CACxBrrI,IAAK,OACL9B,MAAO,SAAcs7B,GACnB,IAAIpoB,EAAQ,CACVrJ,KAAMyxB,EACN8b,KAAM,MAEJz2C,KAAK+F,OAAS,EAAG/F,KAAKu/G,KAAK9oE,KAAOlkC,EAAWvS,KAAK0hH,KAAOnvG,EAC7DvS,KAAKu/G,KAAOhtG,IACVvS,KAAK+F,SAER,CACD5E,IAAK,UACL9B,MAAO,SAAiBs7B,GACtB,IAAIpoB,EAAQ,CACVrJ,KAAMyxB,EACN8b,KAAMz2C,KAAK0hH,MAEO,IAAhB1hH,KAAK+F,SAAc/F,KAAKu/G,KAAOhtG,GACnCvS,KAAK0hH,KAAOnvG,IACVvS,KAAK+F,SAER,CACD5E,IAAK,QACL9B,MAAO,WACL,GAAoB,IAAhBW,KAAK+F,OAAT,CACA,IAAIypF,EAAMxvF,KAAK0hH,KAAKx4G,KAGpB,OAFoB,IAAhBlJ,KAAK+F,OAAc/F,KAAK0hH,KAAO1hH,KAAKu/G,KAAO,KAAUv/G,KAAK0hH,KAAO1hH,KAAK0hH,KAAKjrE,OAC7Ez2C,KAAK+F,OACAypF,KAER,CACDruF,IAAK,QACL9B,MAAO,WACLW,KAAK0hH,KAAO1hH,KAAKu/G,KAAO,KACxBv/G,KAAK+F,OAAS,IAEf,CACD5E,IAAK,OACL9B,MAAO,SAAcwqB,GACnB,GAAoB,IAAhB7pB,KAAK+F,OAAc,MAAO,GAI9B,IAHA,IAAIxD,EAAIvC,KAAK0hH,KACTlyB,EAAM,GAAKjtF,EAAE2G,KAEV3G,EAAIA,EAAEk0C,MACX+4C,GAAO3lE,EAAItnB,EAAE2G,KAGf,OAAOsmF,IAER,CACDruF,IAAK,SACL9B,MAAO,SAAgBqvB,GACrB,GAAoB,IAAhB1uB,KAAK+F,OAAc,OAAOu6D,EAAOU,MAAM,GAK3C,IAJA,IArEcl3B,EAAKkB,EAAQ7rB,EAqEvBqwE,EAAMlvB,EAAOkB,YAAY9yC,IAAM,GAC/BnsB,EAAIvC,KAAK0hH,KACT9oG,EAAI,EAEDrW,GAzEOunC,EA0EDvnC,EAAE2G,KA1EI8hC,EA0EEwkD,EA1EMrwE,EA0EDvG,EAzE9B0nD,EAAO99D,UAAUk+D,KAAKh+D,KAAKonC,EAAKkB,EAAQ7rB,GA0ElCvG,GAAKrW,EAAE2G,KAAKnD,OACZxD,EAAIA,EAAEk0C,KAGR,OAAO+4C,IAGR,CACDruF,IAAK,UACL9B,MAAO,SAAiBqvB,EAAG+9G,GACzB,IAAIj9C,EAcJ,OAZI9gE,EAAI1uB,KAAK0hH,KAAKx4G,KAAKnD,QAErBypF,EAAMxvF,KAAK0hH,KAAKx4G,KAAKma,MAAM,EAAGqL,GAC9B1uB,KAAK0hH,KAAKx4G,KAAOlJ,KAAK0hH,KAAKx4G,KAAKma,MAAMqL,IAGtC8gE,EAFS9gE,IAAM1uB,KAAK0hH,KAAKx4G,KAAKnD,OAExB/F,KAAKm6C,QAGLsyF,EAAazsI,KAAK0sI,WAAWh+G,GAAK1uB,KAAK2sI,WAAWj+G,GAGnD8gE,IAER,CACDruF,IAAK,QACL9B,MAAO,WACL,OAAOW,KAAK0hH,KAAKx4G,OAGlB,CACD/H,IAAK,aACL9B,MAAO,SAAoBqvB,GACzB,IAAInsB,EAAIvC,KAAK0hH,KACT3gG,EAAI,EACJyuE,EAAMjtF,EAAE2G,KAGZ,IAFAwlB,GAAK8gE,EAAIzpF,OAEFxD,EAAIA,EAAEk0C,MAAM,CACjB,IAAInjB,EAAM/wB,EAAE2G,KACR0jI,EAAKl+G,EAAI4E,EAAIvtB,OAASutB,EAAIvtB,OAAS2oB,EAIvC,GAHIk+G,IAAOt5G,EAAIvtB,OAAQypF,GAAOl8D,EAASk8D,GAAOl8D,EAAIjQ,MAAM,EAAGqL,GAGjD,IAFVA,GAAKk+G,GAEQ,CACPA,IAAOt5G,EAAIvtB,UACXgb,EACExe,EAAEk0C,KAAMz2C,KAAK0hH,KAAOn/G,EAAEk0C,KAAUz2C,KAAK0hH,KAAO1hH,KAAKu/G,KAAO,OAE5Dv/G,KAAK0hH,KAAOn/G,EACZA,EAAE2G,KAAOoqB,EAAIjQ,MAAMupH,IAGrB,QAGA7rH,EAIJ,OADA/gB,KAAK+F,QAAUgb,EACRyuE,IAGR,CACDruF,IAAK,aACL9B,MAAO,SAAoBqvB,GACzB,IAAI8gE,EAAMlvB,EAAOkB,YAAY9yC,GACzBnsB,EAAIvC,KAAK0hH,KACT3gG,EAAI,EAIR,IAHAxe,EAAE2G,KAAKw3D,KAAK8uB,GACZ9gE,GAAKnsB,EAAE2G,KAAKnD,OAELxD,EAAIA,EAAEk0C,MAAM,CACjB,IAAI93B,EAAMpc,EAAE2G,KACR0jI,EAAKl+G,EAAI/P,EAAI5Y,OAAS4Y,EAAI5Y,OAAS2oB,EAIvC,GAHA/P,EAAI+hD,KAAK8uB,EAAKA,EAAIzpF,OAAS2oB,EAAG,EAAGk+G,GAGvB,IAFVl+G,GAAKk+G,GAEQ,CACPA,IAAOjuH,EAAI5Y,UACXgb,EACExe,EAAEk0C,KAAMz2C,KAAK0hH,KAAOn/G,EAAEk0C,KAAUz2C,KAAK0hH,KAAO1hH,KAAKu/G,KAAO,OAE5Dv/G,KAAK0hH,KAAOn/G,EACZA,EAAE2G,KAAOyV,EAAI0E,MAAMupH,IAGrB,QAGA7rH,EAIJ,OADA/gB,KAAK+F,QAAUgb,EACRyuE,IAGR,CACDruF,IAAKirI,EACL/sI,MAAO,SAAe07B,EAAG1pB,GACvB,OAAOuJ,EAAQ5a,KAnMrB,SAAuBgrC,GAAU,IAAK,IAAIpyB,EAAI,EAAGA,EAAImE,UAAUhX,OAAQ6S,IAAK,CAAE,IAAI1D,EAAyB,MAAhB6H,UAAUnE,GAAamE,UAAUnE,GAAK,GAAQA,EAAI,EAAK2/E,EAAQr5F,OAAOgW,IAAS,GAAMhU,SAAQ,SAAUC,GAAO4pI,EAAgB//F,EAAQ7pC,EAAK+T,EAAO/T,OAAsBjC,OAAO2tI,0BAA6B3tI,OAAO4tI,iBAAiB9hG,EAAQ9rC,OAAO2tI,0BAA0B33H,IAAmBqjF,EAAQr5F,OAAOgW,IAAShU,SAAQ,SAAUC,GAAOjC,OAAOC,eAAe6rC,EAAQ7pC,EAAKjC,OAAO8C,yBAAyBkT,EAAQ/T,OAAe,OAAO6pC,EAmMlf+hG,CAAc,GAAI17H,EAAS,CAE9CgiG,MAAO,EAEP25B,eAAe,QA/L2CR,GAAYN,EAAkBI,EAAY9pI,UAAWgqI,GAoM9GxL,EApLT,gDC2BA,SAASiM,EAAoB9xH,EAAM+P,GACjCgiH,EAAY/xH,EAAM+P,GAClBiiH,EAAYhyH,GAGd,SAASgyH,EAAYhyH,GACfA,EAAKgyG,iBAAmBhyG,EAAKgyG,eAAeoV,WAC5CpnH,EAAKkyG,iBAAmBlyG,EAAKkyG,eAAekV,WAChDpnH,EAAKnP,KAAK,SAsBZ,SAASkhI,EAAY/xH,EAAM+P,GACzB/P,EAAKnP,KAAK,QAASkf,GAcrB8gD,EAAO5sE,QAAU,CACf8c,QAnGF,SAAiBgP,EAAK6yG,GACpB,IAAIgI,EAAQ/lI,KAERotI,EAAoBptI,KAAKqtH,gBAAkBrtH,KAAKqtH,eAAekR,UAC/D8O,EAAoBrtI,KAAKmtH,gBAAkBntH,KAAKmtH,eAAeoR,UAEnE,OAAI6O,GAAqBC,GACnBtP,EACFA,EAAG7yG,GACMA,IACJlrB,KAAKmtH,eAEEntH,KAAKmtH,eAAe2b,eAC9B9oI,KAAKmtH,eAAe2b,cAAe,EACnCvuH,EAAQo4G,SAASua,EAAaltI,KAAMkrB,IAHpC3Q,EAAQo4G,SAASua,EAAaltI,KAAMkrB,IAOjClrB,OAKLA,KAAKqtH,iBACPrtH,KAAKqtH,eAAekR,WAAY,GAI9Bv+H,KAAKmtH,iBACPntH,KAAKmtH,eAAeoR,WAAY,GAGlCv+H,KAAK4iI,SAAS13G,GAAO,MAAM,SAAUA,IAC9B6yG,GAAM7yG,EACJ66G,EAAM5Y,eAEC4Y,EAAM5Y,eAAe2b,aAI/BvuH,EAAQo4G,SAASwa,EAAapH,IAH9BA,EAAM5Y,eAAe2b,cAAe,EACpCvuH,EAAQo4G,SAASsa,EAAqBlH,EAAO76G,IAH7C3Q,EAAQo4G,SAASsa,EAAqBlH,EAAO76G,GAOtC6yG,GACTxjH,EAAQo4G,SAASwa,EAAapH,GAC9BhI,EAAG7yG,IAEH3Q,EAAQo4G,SAASwa,EAAapH,MAI3B/lI,OAkDPwjI,UApCF,WACMxjI,KAAKqtH,iBACPrtH,KAAKqtH,eAAekR,WAAY,EAChCv+H,KAAKqtH,eAAe2U,SAAU,EAC9BhiI,KAAKqtH,eAAe6S,OAAQ,EAC5BlgI,KAAKqtH,eAAe0U,YAAa,GAG/B/hI,KAAKmtH,iBACPntH,KAAKmtH,eAAeoR,WAAY,EAChCv+H,KAAKmtH,eAAe+S,OAAQ,EAC5BlgI,KAAKmtH,eAAeib,QAAS,EAC7BpoI,KAAKmtH,eAAegb,aAAc,EAClCnoI,KAAKmtH,eAAekc,aAAc,EAClCrpI,KAAKmtH,eAAesX,UAAW,EAC/BzkI,KAAKmtH,eAAe2b,cAAe,IAsBrCvH,eAdF,SAAwB94C,EAAQv9D,GAM9B,IAAIg/G,EAASzhD,EAAO4kC,eAChBmX,EAAS/7C,EAAO0kC,eAChB+c,GAAUA,EAAO1H,aAAegC,GAAUA,EAAOhC,YAAa/5C,EAAOvsE,QAAQgP,GAAUu9D,EAAOz8E,KAAK,QAASkf,mCC7FlH,IAAIoiH,EAA6B,sCAgBjC,SAAS5a,KAmFT1mD,EAAO5sE,QA7EP,SAASmuI,EAAI9kD,EAAQxc,EAAMj+D,GACzB,GAAoB,mBAATi+D,EAAqB,OAAOshE,EAAI9kD,EAAQ,KAAMxc,GACpDA,IAAMA,EAAO,IAClBj+D,EAvBF,SAAcA,GACZ,IAAIw/H,GAAS,EACb,OAAO,WACL,IAAIA,EAAJ,CACAA,GAAS,EAET,IAAK,IAAIC,EAAO1wH,UAAUhX,OAAQrG,EAAO,IAAIoc,MAAM2xH,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhuI,EAAKguI,GAAQ3wH,UAAU2wH,GAGzB1/H,EAASqS,MAAMrgB,KAAMN,KAaZg5F,CAAK1qF,GAAY0kH,GAC5B,IAAItF,EAAWnhD,EAAKmhD,WAA8B,IAAlBnhD,EAAKmhD,UAAsB3kC,EAAO2kC,SAC9DlrH,EAAW+pE,EAAK/pE,WAA8B,IAAlB+pE,EAAK/pE,UAAsBumF,EAAOvmF,SAE9DyrI,EAAiB,WACdllD,EAAOvmF,UAAUojI,KAGpBsI,EAAgBnlD,EAAO0kC,gBAAkB1kC,EAAO0kC,eAAesX,SAE/Da,EAAW,WACbpjI,GAAW,EACX0rI,GAAgB,EACXxgB,GAAUp/G,EAAStL,KAAK+lF,IAG3BolD,EAAgBplD,EAAO4kC,gBAAkB5kC,EAAO4kC,eAAe0U,WAE/D9B,EAAQ,WACV7S,GAAW,EACXygB,GAAgB,EACX3rI,GAAU8L,EAAStL,KAAK+lF,IAG3B5mD,EAAU,SAAiB3W,GAC7Bld,EAAStL,KAAK+lF,EAAQv9D,IAGpBm6G,EAAU,WACZ,IAAIn6G,EAEJ,OAAIkiG,IAAaygB,GACVplD,EAAO4kC,gBAAmB5kC,EAAO4kC,eAAe6S,QAAOh1G,EAAM,IAAIoiH,GAC/Dt/H,EAAStL,KAAK+lF,EAAQv9D,IAG3BhpB,IAAa0rI,GACVnlD,EAAO0kC,gBAAmB1kC,EAAO0kC,eAAe+S,QAAOh1G,EAAM,IAAIoiH,GAC/Dt/H,EAAStL,KAAK+lF,EAAQv9D,SAF/B,GAME4iH,EAAY,WACdrlD,EAAOslD,IAAIviI,GAAG,SAAU85H,IAiB1B,OAnEF,SAAmB78C,GACjB,OAAOA,EAAOulD,WAAqC,mBAAjBvlD,EAAOj4D,MAoDrCy9G,CAAUxlD,IACZA,EAAOj9E,GAAG,WAAY85H,GACtB78C,EAAOj9E,GAAG,QAAS65H,GACf58C,EAAOslD,IAAKD,IAAiBrlD,EAAOj9E,GAAG,UAAWsiI,IAC7C5rI,IAAaumF,EAAO0kC,iBAE7B1kC,EAAOj9E,GAAG,MAAOmiI,GACjBllD,EAAOj9E,GAAG,QAASmiI,IAGrBllD,EAAOj9E,GAAG,MAAOy0H,GACjBx3C,EAAOj9E,GAAG,SAAU85H,IACD,IAAfr5D,EAAKlgE,OAAiB08E,EAAOj9E,GAAG,QAASq2B,GAC7C4mD,EAAOj9E,GAAG,QAAS65H,GACZ,WACL58C,EAAOoQ,eAAe,WAAYysC,GAClC78C,EAAOoQ,eAAe,QAASwsC,GAC/B58C,EAAOoQ,eAAe,UAAWi1C,GAC7BrlD,EAAOslD,KAAKtlD,EAAOslD,IAAIl1C,eAAe,SAAUysC,GACpD78C,EAAOoQ,eAAe,MAAO80C,GAC7BllD,EAAOoQ,eAAe,QAAS80C,GAC/BllD,EAAOoQ,eAAe,SAAUysC,GAChC78C,EAAOoQ,eAAe,MAAOonC,GAC7Bx3C,EAAOoQ,eAAe,QAASh3D,GAC/B4mD,EAAOoQ,eAAe,QAASwsC,gBCnGnCr5D,EAAO5sE,QAAU,WACf,MAAM,IAAIoB,MAAM,gFCGlB,IAAI+sI,EAWApM,EAAiB,WACjB+M,EAAmB/M,EAAe+M,iBAClCrG,EAAuB1G,EAAe0G,qBAE1C,SAASnV,EAAKxnG,GAEZ,GAAIA,EAAK,MAAMA,EAOjB,SAASijH,EAAU1lD,EAAQu5C,EAASuG,EAASv6H,GAC3CA,EAvBF,SAAcA,GACZ,IAAIw/H,GAAS,EACb,OAAO,WACDA,IACJA,GAAS,EACTx/H,EAASqS,WAAM,EAAQtD,aAkBd27E,CAAK1qF,GAChB,IAAI+7D,GAAS,EACb0e,EAAOj9E,GAAG,SAAS,WACjBu+D,GAAS,UAECjoE,IAARyrI,IAAmBA,EAAM,EAAQ,QACrCA,EAAI9kD,EAAQ,CACV2kC,SAAU4U,EACV9/H,SAAUqmI,IACT,SAAUr9G,GACX,GAAIA,EAAK,OAAOld,EAASkd,GACzB6+C,GAAS,EACT/7D,OAEF,IAAIuwH,GAAY,EAChB,OAAO,SAAUrzG,GACf,IAAI6+C,IACAw0D,EAGJ,OAFAA,GAAY,EAvBhB,SAAmB91C,GACjB,OAAOA,EAAOulD,WAAqC,mBAAjBvlD,EAAOj4D,MAwBnCy9G,CAAUxlD,GAAgBA,EAAOj4D,QACP,mBAAnBi4D,EAAOvsE,QAA+BusE,EAAOvsE,eACxDlO,EAASkd,GAAO,IAAI28G,EAAqB,UAI7C,SAASnlI,EAAKsK,GACZA,IAGF,SAASigH,EAAKv1F,EAAM+9E,GAClB,OAAO/9E,EAAKu1F,KAAKxX,GAGnB,SAAS24B,EAAYC,GACnB,OAAKA,EAAQtoI,OAC8B,mBAAhCsoI,EAAQA,EAAQtoI,OAAS,GAA0B2sH,EACvD2b,EAAQ7rH,MAFakwG,EAgC9B1mD,EAAO5sE,QA3BP,WACE,IAAK,IAAIquI,EAAO1wH,UAAUhX,OAAQsoI,EAAU,IAAIvyH,MAAM2xH,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClFW,EAAQX,GAAQ3wH,UAAU2wH,GAG5B,IAOI3hI,EAPAiC,EAAWogI,EAAYC,GAG3B,GAFIvyH,MAAMC,QAAQsyH,EAAQ,MAAKA,EAAUA,EAAQ,IAE7CA,EAAQtoI,OAAS,EACnB,MAAM,IAAImoI,EAAiB,WAI7B,IAAII,EAAWD,EAAQroI,KAAI,SAAUyiF,EAAQ7vE,GAC3C,IAAIopH,EAAUppH,EAAIy1H,EAAQtoI,OAAS,EAEnC,OAAOooI,EAAU1lD,EAAQu5C,EADXppH,EAAI,GACyB,SAAUsS,GAC9Cnf,IAAOA,EAAQmf,GAChBA,GAAKojH,EAASptI,QAAQwB,GACtBs/H,IACJsM,EAASptI,QAAQwB,GACjBsL,EAASjC,UAGb,OAAOsiI,EAAQ90H,OAAO0zG,kCC3FxB,IAAIshB,EAAwB,iCAsB5BviE,EAAO5sE,QAAU,CACf8hI,iBAjBF,SAA0Bz+F,EAAOpxB,EAASm9H,EAAW/M,GACnD,IAAIgN,EALN,SAA2Bp9H,EAASowH,EAAU+M,GAC5C,OAAgC,MAAzBn9H,EAAQ+uH,cAAwB/uH,EAAQ+uH,cAAgBqB,EAAWpwH,EAAQm9H,GAAa,KAIrFE,CAAkBr9H,EAASowH,EAAU+M,GAE/C,GAAW,MAAPC,EAAa,CACf,IAAM1sE,SAAS0sE,IAAQlvH,KAAKC,MAAMivH,KAASA,GAAQA,EAAM,EAEvD,MAAM,IAAIF,EADC9M,EAAW+M,EAAY,gBACIC,GAGxC,OAAOlvH,KAAKC,MAAMivH,GAIpB,OAAOhsG,EAAMi/F,WAAa,GAAK,yBCrBjC11D,EAAO5sE,QAAU,EAAjB,sCCAAA,EAAU4sE,EAAO5sE,QAAU,EAAjB,QACFshI,OAASthI,EACjBA,EAAQwM,SAAWxM,EACnBA,EAAQ2gI,SAAW,EAAnB,MACA3gI,EAAQ0gI,OAAS,EAAjB,OACA1gI,EAAQmhI,UAAY,EAApB,OACAnhI,EAAQkhI,YAAc,EAAtB,OACAlhI,EAAQqlI,SAAW,EAAnB,OACArlI,EAAQuvI,SAAW,EAAnB,qCCPAzvI,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0P,6BAA0B,EAClC,MAAM8/H,EAAoB,EAAQ,OAOlC,MAAM9/H,UAAgC8/H,EAAkBhjI,SAKpDnM,YAAYgpF,GACR9oF,QACAK,KAAK6uI,UAAY,EACjB7uI,KAAK8uI,UAAW,EAChB9uI,KAAKm1F,OAAS1M,EAAOsmD,YAQzBnvI,cAGI,GAAII,KAAK8uI,SAEL,YADA9uI,KAAKyF,KAAK,MAGdzF,KAAKgvI,YAAchvI,KAAKm1F,OAAOnyB,OAC/B,MAAM95D,QAAalJ,KAAKgvI,mBAEjBhvI,KAAKgvI,YACR9lI,EAAK6rF,MAAQ/0F,KAAK8uI,SAClB9uI,KAAKyF,KAAK,OAGVzF,KAAK6uI,WAAa3lI,EAAK7J,MAAM0G,OAC7B/F,KAAKyF,KAAKyD,EAAK7J,QAOvBO,8BACQI,KAAKgvI,mBACChvI,KAAKgvI,YAMnBpvI,oBACUI,KAAKivI,iBAEfrvI,uBACII,KAAK8uI,UAAW,QACV9uI,KAAKkvI,8BACLlvI,KAAKm1F,OAAOg6C,eAG1B/vI,EAAQ0P,wBAA0BA,gCC/DlC5P,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IAHtD,SAAkBsC,GACd,IAAK,IAAIY,KAAKZ,EAAQvC,EAAQqD,eAAeF,KAAInD,EAAQmD,GAAKZ,EAAEY,IAGpE2vR,CAAS,EAAQ,oCC6GjB,SAASC,EAAkBzgR,GAGvB,MAAM0gR,EAAiB,GACvB,IAAIx5Q,EAAI,EACR,KAAOA,EAAIlH,EAAK3L,QAEZ,OAAQ2L,EAAKkH,IACT,IAAK,IACD,GAAoB,MAAhBlH,EAAKkH,EAAI,GACT,GAAoB,MAAhBlH,EAAKkH,EAAI,GAAY,CAErB,IAAKy5Q,EAA2C3gR,EAAKkH,EAAI,IAAK,CAC1Dw5Q,EAAe3sR,KAAK,IACpBmT,IACA,MAIJw5Q,EAAe5vQ,MAEV9Q,EAAKkH,EAAI,IACVw5Q,EAAe3sR,KAAK,IAExBmT,GAAK,MAEJ,CAED,IAAKy5Q,EAA2C3gR,EAAKkH,EAAI,IAAK,CAC1Dw5Q,EAAe3sR,KAAK,IACpBmT,IACA,MAGClH,EAAKkH,EAAI,IACVw5Q,EAAe3sR,KAAK,IAIxBmT,GAAK,OAKTw5Q,EAAe3sR,KAAK,IACpBmT,IAEJ,MACJ,IAAK,IACL,IAAK,IAEIw5Q,EAAersR,QAChBqsR,EAAe3sR,KAAK,IAExB2sR,EAAeA,EAAersR,OAAS,GAAGN,KAAKiM,EAAKuQ,OAAOrJ,IAE3DA,EAAIlH,EAAK3L,OACT,MACJ,QAESqsR,EAAersR,QAChBqsR,EAAe3sR,KAAK,IAExB2sR,EAAeA,EAAersR,OAAS,GAAGN,KAAKiM,EAAKkH,IACpDA,IAIZ,MAAO,IAAMw5Q,EAAepsR,KAAK6Y,GAAWA,EAAO2B,KAAK,MAAKA,KAAK,KAStE,SAAS8xQ,EAAwBvtM,EAAKwtM,GAElC,IAAIC,EAAeD,EAAgB,EAC/BA,GAAiB,EACc,MAA3BxtM,EAAIwtM,EAAgB,IAAyC,MAA3BxtM,EAAIwtM,EAAgB,KACtDC,EAAeD,EAAgB,GAIpB,MAAXxtM,EAAI,IAAyB,MAAXA,EAAI,KACtBytM,EAAe,GAIvB,MAAMC,EAAgB1tM,EAAIjtE,QAAQ,IAAK06Q,GACvC,OAAIC,EAAgB,EACT1tM,EAEEA,EAAI9iE,OAAO,EAAGwwQ,GAGbN,EAFDptM,EAAI9iE,OAAOwwQ,IAK5B,SAASJ,EAA2CzP,GAChD,OAAQA,GAA2B,MAAdA,GAAmC,MAAdA,GAAmC,MAAdA,EAvNnE1jR,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IA0GtDD,EAAQ6L,QAjGR,SAAiBynR,EAAapqR,GAE1B,MAAMqqR,GADNrqR,EAAUA,GAAW,IACWwP,QAAQ,KAMxC,GAJI66Q,EAAkB,IAClBrqR,EAAUA,EAAQ2Z,OAAO,EAAG0wQ,KAG3BD,EAAY3sR,OAAQ,CAErB,GAAIuC,EAAQwP,QAAQ,KAAO,EACvB,MAAM,IAAItX,MAAM,0BAA0B8H,iBAAuBoqR,MAErE,OAAOpqR,EAGX,GAAIoqR,EAAYprQ,WAAW,KAAM,CAC7B,MAAMsrQ,EAAetqR,EAAQwP,QAAQ,KAIrC,OAHI86Q,EAAe,IACftqR,EAAUA,EAAQ2Z,OAAO,EAAG2wQ,IAEzBtqR,EAAUoqR,EAGrB,GAAIA,EAAYprQ,WAAW,KACvB,OAAOhf,EAAUoqR,EAGrB,IAAKpqR,EAAQvC,OAAQ,CACjB,MAAM8sR,EAAmBH,EAAY56Q,QAAQ,KAC7C,GAAI+6Q,EAAmB,EACnB,MAAM,IAAIryR,MAAM,+BAA+BkyR,4BAEnD,OAAOJ,EAAwBI,EAAaG,GAGhD,MAAMC,EAAgBJ,EAAY56Q,QAAQ,KAC1C,GAAIg7Q,GAAiB,EACjB,OAAOR,EAAwBI,EAAaI,GAGhD,MAAMC,EAAezqR,EAAQwP,QAAQ,KACrC,GAAIi7Q,EAAe,EACf,MAAM,IAAIvyR,MAAM,0BAA0B8H,iBAAuBoqR,MAErE,MAAMM,EAAgB1qR,EAAQ2Z,OAAO,EAAG8wQ,EAAe,GAEvD,GAAkC,IAA9BL,EAAY56Q,QAAQ,MACpB,OAAOk7Q,EAAgBV,EAAwBI,EAAaI,GAGhE,IAAIG,EACJ,GAAI3qR,EAAQwP,QAAQ,KAAMi7Q,KAAkBA,EAAe,GAGvD,GADAE,EAAyB3qR,EAAQwP,QAAQ,IAAKi7Q,EAAe,GACzDE,EAAyB,EAGzB,OAAI3qR,EAAQvC,OAASgtR,EAAe,EACzBzqR,EAAU,IAAMgqR,EAAwBI,EAAaI,GAGrDE,EAAgBV,EAAwBI,EAAaI,QAOpE,GADAG,EAAyB3qR,EAAQwP,QAAQ,IAAKi7Q,EAAe,GACzDE,EAAyB,EAGzB,OAAOD,EAAgBV,EAAwBI,EAAaI,GAIpE,GAAiC,IAA7BJ,EAAY56Q,QAAQ,KACpB,OAAOxP,EAAQ2Z,OAAO,EAAGgxQ,GAA0Bd,EAAkBO,GAEzE,IAAIQ,EAAc5qR,EAAQ2Z,OAAOgxQ,GACjC,MAAME,EAAsBD,EAAYp5P,YAAY,KAepD,OAbIq5P,GAAuB,GAAKA,EAAsBD,EAAYntR,OAAS,IACvEmtR,EAAcA,EAAYjxQ,OAAO,EAAGkxQ,EAAsB,GAGnC,MAAnBT,EAAY,IAAiC,MAAnBA,EAAY,IAAiC,MAAnBA,EAAY,IAAcA,EAAY,KAC1FA,EAAcA,EAAYzwQ,OAAO,KAMzCywQ,EAAcP,EAFdO,EAAcQ,EAAcR,GAIrBpqR,EAAQ2Z,OAAO,EAAGgxQ,GAA0BP,GA+EvDtzR,EAAQ+yR,kBAAoBA,EA8B5B/yR,EAAQkzR,wBAA0BA,mBCpNlC,IAAIzzQ,EAAS,EAAQ,OACjByhD,EAASzhD,EAAOyhD,OAGpB,SAAS8uE,EAAWtlG,EAAKmpD,GACvB,IAAK,IAAI9xF,KAAO2oC,EACdmpD,EAAI9xF,GAAO2oC,EAAI3oC,GAWnB,SAASkuI,EAAYnkD,EAAKC,EAAkBplF,GAC1C,OAAOu6D,EAAO4qB,EAAKC,EAAkBplF,GATnCu6D,EAAO5oC,MAAQ4oC,EAAOU,OAASV,EAAOkB,aAAelB,EAAOmB,gBAC9DuK,EAAO5sE,QAAUyf,GAGjBuwH,EAAUvwH,EAAQzf,GAClBA,EAAQkhE,OAAS+uE,GAOnBA,EAAW7sI,UAAYtD,OAAOuC,OAAO6+D,EAAO99D,WAG5C4sI,EAAU9uE,EAAQ+uE,GAElBA,EAAW33G,KAAO,SAAUwzD,EAAKC,EAAkBplF,GACjD,GAAmB,iBAARmlF,EACT,MAAM,IAAIhqE,UAAU,iCAEtB,OAAOo/C,EAAO4qB,EAAKC,EAAkBplF,IAGvCspI,EAAWruE,MAAQ,SAAU/zD,EAAMs0D,EAAM8pB,GACvC,GAAoB,iBAATp+E,EACT,MAAM,IAAIiU,UAAU,6BAEtB,IAAIvC,EAAM2hD,EAAOrzD,GAUjB,YATanL,IAATy/D,EACsB,iBAAb8pB,EACT1sE,EAAI4iD,KAAKA,EAAM8pB,GAEf1sE,EAAI4iD,KAAKA,GAGX5iD,EAAI4iD,KAAK,GAEJ5iD,GAGT0wH,EAAW7tE,YAAc,SAAUv0D,GACjC,GAAoB,iBAATA,EACT,MAAM,IAAIiU,UAAU,6BAEtB,OAAOo/C,EAAOrzD,IAGhBoiI,EAAW5tE,gBAAkB,SAAUx0D,GACrC,GAAoB,iBAATA,EACT,MAAM,IAAIiU,UAAU,6BAEtB,OAAOrC,EAAOkiD,WAAW9zD,qBC/D3B++D,EAAO5sE,QAAU,EAAjB,sBCAA,SAAS6G,EAAMggG,EAAIv0F,GACjB,IAAIxO,EAEJ,GAAK+iG,IAGDnqF,MAAMC,QAAQkqF,KAChBA,EAAKA,EAAG,IAELnqF,MAAMC,QAAQrK,KACjBA,EAAOA,EAAKoP,MAAM,MAEpB5d,EAAOwO,EAAKyoC,QACP8rD,EAAGrhG,UAIR,OADAqhG,EAAKA,EAAGrhG,SAAS1B,GACbwO,EAAK3L,OACAE,EAAMggG,EAAIv0F,GAEZu0F,EAuCT7mG,EAAQ6G,MAAQA,EAChB7G,EAAQC,MArCR,SAAe4mG,EAAIv0F,GAEjB,OADAu0F,EAAKhgG,EAAMggG,EAAIv0F,KACFu0F,EAAG5mG,OAoClBD,EAAQi1J,KAjCR,SAAcpuD,EAAIv0F,EAAMxO,GAEtB,OADA+iG,EAAKhgG,EAAMggG,EAAIv0F,KACFu0F,EAAG+/F,SAAW//F,EAAG+/F,QAAQ9iM,IAgCxC9D,EAAQg0R,SA7BR,SAAkB7oN,EAAQrnE,GACxB,IAAI+C,EAAQ,CACVskE,OAAQA,GAWV,OATAA,EAAO3lE,SAAW2lE,EAAO3lE,UAAY,GAChC2lE,EAAO3lE,SAAS1B,IAGd4Y,MAAMC,QAAQwuD,EAAO3lE,SAAS1B,MACjCqnE,EAAO3lE,SAAS1B,GAAQ,CAACqnE,EAAO3lE,SAAS1B,KAE3CqnE,EAAO3lE,SAAS1B,GAAMuC,KAAKQ,IAL3BskE,EAAO3lE,SAAS1B,GAAQ+C,EAOnBA,GAiBT7G,EAAQi0R,QAdR,SAAiBpuR,EAAM6pE,GAErB,OADA7pE,EAAK5F,MAAQyvE,EACN7pE,GAaT7F,EAAQk0R,WAVR,SAAoBruR,EAAM6pE,GAExB,OADA7pE,EAAK5F,OAAS4F,EAAK5F,OAAS,IAAMyvE,EAC3B7pE,oBCxDT,IAAIs7H,EAAY,mBACZsmC,EAAO,EAAQ,OACf0sH,EAAM,EAAQ,MACd1mN,EAAO,EAAQ,OACf/1D,EAAQ,EAAQ,MAAR,CAAiB,cAI7B,SAAS08Q,EAAQniR,GACf,KAAMrR,gBAAgBwzR,GACpB,OAAO,IAAIA,EAAQniR,GAGrBkvH,EAAU79H,KAAK1C,KAAM,CACnBogI,cAAe/uH,EAAQ+uH,eAAiB,IACxCsB,YAAY,IAEd1hI,KAAKyzR,QAAU,GACfzzR,KAAK+L,MAAQ,KACb/L,KAAKwoF,OAASxoF,KAAK0zR,gBAAgBriR,GAbrC26D,EAAO5sE,QAAUo0R,EAgBjB3sH,EAAK/kE,SAAS0xL,EAASjzJ,GAGvBizJ,EAAQhxR,UAAUkxR,gBAAkB,SAAUriR,GAqB5C,IACA7C,EADI2M,EAAOnb,KAEXwoF,EAAS+qM,EAAI/qM,OAAOn3E,EAAQyzE,SAAU,EAgFxC,SAA8BzzE,GAC5B,MAAO,CACL,OACA,YACA,YACA,QACA,WACA,iBACA,YACAkI,QAAO,SAAS0yD,EAAM/oE,GAItB,OAHIA,KAAQmO,IACV46D,EAAK/oE,GAAQmO,EAAQnO,IAEhB+oE,IACN,CACDtiC,UAAU,IA/FiCgqP,CAAqBtiR,IAG9DuiR,EAxBJ,SAAqB1wR,GACnB,OAAOA,IAASmO,EAAQsR,KAuBIld,EAhB9B,SAAkBkd,EAAKnU,GACrB2M,EAAKs4Q,QAAQhuR,KAAK+I,IAkEpB,OAlDIsN,MAAMC,QAAQ1K,EAAQsR,OACxBixQ,EAtBF,SAAkB1wR,GAChB,OAAsC,IAA/BmO,EAAQsR,IAAI7K,QAAQ5U,IAsB3BuC,EAfF,SAAqBkd,EAAKnU,GACxB2M,EAAKs4Q,QAAQhuR,KAAK,CAChBkd,IAAKA,EACLnU,OAAQA,MAeZg6E,EAAOo6G,UAAY,SAAS39L,GAC1B6R,EAAM,YAAa7R,EAAK/B,MACpBsL,EACFA,EAASq+D,EAAKumN,SAAS5kR,EAAQvJ,EAAK/B,MAC3B0wR,EAAW3uR,EAAK/B,QACzBsL,EAAS,IAEPA,GAAUtP,OAAO0N,KAAK3H,EAAKg9L,YAAYl8L,SACzCyI,EAAOw3L,QAAU/gM,EAAKg9L,aAI1Bz5G,EAAOk6G,WAAa,SAAS//K,GAC3B7L,EAAM,cAAe6L,GACjBixQ,EAAWjxQ,KAASnU,EAAO+7D,QAC7BzzD,EAAM,kBAAmBtI,GACzB/I,EAAKkd,EAAKnU,GACVA,OAAS1M,GACA0M,IACTA,EAASA,EAAO+7D,SAIpBie,EAAOq6G,OAAS,SAASxjM,GACnBmP,GACFq+D,EAAKwmN,QAAQ7kR,EAAQnP,IAIzBmpF,EAAOw/G,QAAU,SAAU3oM,GACrBmP,GACFq+D,EAAKymN,WAAW9kR,EAAQnP,IAI5BmpF,EAAO3mD,QAAU,SAAS3W,GACxB/P,EAAKpP,MAAQmf,GAGfs9D,EAAOy3C,MAAQ,WACbnpH,EAAM,oCACNqE,EAAKsmG,QAAQtmG,EAAKnN,UAClBmN,EAAKnN,SAAW,MAGXw6E,GAGTgrM,EAAQhxR,UAAUi/G,QAAU,SAAUzzG,GACpC,GAAIhO,KAAK+L,MAGP,OAFAiC,EAAShO,KAAK+L,YACd/L,KAAK+L,MAAQ,MAGf+K,EAAM,aAAc9W,KAAKyzR,QAAQ1tR,QACjC/F,KAAKyzR,QAAQvyR,QAAQlB,KAAKyF,KAAK+gB,KAAKxmB,OACpCA,KAAKyzR,QAAQ1tR,OAAS,EACtBiI,KAGFwlR,EAAQhxR,UAAUgrH,WAAa,SAAU9kC,EAAO2C,EAAUr9E,GACxDhO,KAAKwoF,OAAO/tE,MAAMiuE,EAAM76E,YACxB7N,KAAKyhH,QAAQzzG,IAGfwlR,EAAQhxR,UAAUukI,OAAS,SAAU/4H,GACxBhO,KACNgO,SAAWA,EADLhO,KAENwoF,OAAOt4E,yCCwBd,SAASw2B,IACP,IAAIvP,EACJ,IACEA,EAAI/3B,EAAQ0+E,QAAQhnE,MACpB,MAAM2X,IAOR,OAJK0I,QAAwB,IAAZ5c,GAA2B,QAASA,IACnD4c,EAAI5c,EAAQu4G,IAAI4nD,OAGXvjJ,GA1JT/3B,EAAU4sE,EAAO5sE,QAAU,EAAjB,QACFwJ,IA8GR,WAGE,MAAO,iBAAoBo1E,SACtBA,QAAQp1E,KACR07D,SAAS9hE,UAAU6d,MAAM3d,KAAKs7E,QAAQp1E,IAAKo1E,QAASjhE,YAlH3D3d,EAAQu7K,WAqER,SAAoBj7K,GAClB,IAAIk7K,EAAY56K,KAAK46K,UASrB,GAPAl7K,EAAK,IAAMk7K,EAAY,KAAO,IAC1B56K,KAAK2jK,WACJiX,EAAY,MAAQ,KACrBl7K,EAAK,IACJk7K,EAAY,MAAQ,KACrB,IAAMx7K,EAAQy7K,SAAS76K,KAAK86K,MAE3BF,EAAL,CAEA,IAAI75J,EAAI,UAAY/gB,KAAK+6K,MACzBr7K,EAAKqY,OAAO,EAAG,EAAGgJ,EAAG,kBAKrB,IAAI3f,EAAQ,EACRyyR,EAAQ,EACZn0R,EAAK,GAAG+gB,QAAQ,eAAe,SAASqI,GAClC,OAASA,IACb1nB,IACI,OAAS0nB,IAGX+qQ,EAAQzyR,OAIZ1B,EAAKqY,OAAO87Q,EAAO,EAAG9yQ,KAlGxB3hB,EAAQ47K,KA2HR,SAAc84G,GACZ,IACM,MAAQA,EACV10R,EAAQ0+E,QAAQ58C,WAAW,SAE3B9hC,EAAQ0+E,QAAQhnE,MAAQg9Q,EAE1B,MAAMrlQ,MAjIVrvB,EAAQsnC,KAAOA,EACftnC,EAAQw7K,UA2BR,WAIE,QAAsB,oBAAX96J,SAA0BA,OAAOvF,SAAmC,aAAxBuF,OAAOvF,QAAQpU,QAM1C,oBAAbojC,UAA4BA,SAASymE,iBAAmBzmE,SAASymE,gBAAgBvmE,OAASF,SAASymE,gBAAgBvmE,MAAMyxI,kBAEnH,oBAAXp7J,QAA0BA,OAAOk+D,UAAYl+D,OAAOk+D,QAAQm9F,SAAYr7J,OAAOk+D,QAAQo9F,WAAat7J,OAAOk+D,QAAQmV,QAGrG,oBAAd8nF,WAA6BA,UAAUntI,WAAamtI,UAAUntI,UAAUpa,cAAc5K,MAAM,mBAAqB9G,SAASk4B,OAAOmhI,GAAI,KAAO,IAE9H,oBAAdJ,WAA6BA,UAAUntI,WAAamtI,UAAUntI,UAAUpa,cAAc5K,MAAM,wBA3CxG1pB,EAAQ0+E,QAAU,oBAAsBw9F,aACtB,IAAsBA,OAAOx9F,QAC3Bw9F,OAAOx9F,QAAQy9F,MAsKnC,WACE,IACE,OAAOz7J,OAAOmY,aACd,MAAOxJ,KAxKS+sJ,GAMpBp8K,EAAQsgK,OAAS,CACf,gBACA,cACA,YACA,aACA,aACA,WAmCFtgK,EAAQq8K,WAAW3+I,EAAI,SAASnC,GAC9B,IACE,OAAOvuB,KAAKC,UAAUsuB,GACtB,MAAOzP,GACP,MAAO,+BAAiCA,EAAIxU,UAqGhDtX,EAAQs8K,OAAOh1I,sBCrIf,IAAIqtP,EA4BJ,SAASp4G,EAAYhY,GAEnB,SAAS7sJ,IAEP,GAAKA,EAAM8kK,QAAX,CAEA,IAAIzgK,EAAOrE,EAGP+kK,GAAQ,IAAIrzK,KACZwrR,EAAKn4G,GAAQk4G,GAAYl4G,GAC7B1gK,EAAK2/J,KAAOk5G,EACZ74Q,EAAK0hG,KAAOk3K,EACZ54Q,EAAK0gK,KAAOA,EACZk4G,EAAWl4G,EAIX,IADA,IAAIn8K,EAAO,IAAIoc,MAAMiB,UAAUhX,QACtB6S,EAAI,EAAGA,EAAIlZ,EAAKqG,OAAQ6S,IAC/BlZ,EAAKkZ,GAAKmE,UAAUnE,GAGtBlZ,EAAK,GAAKN,EAAQunH,OAAOjnH,EAAK,IAE1B,iBAAoBA,EAAK,IAE3BA,EAAK85C,QAAQ,MAIf,IAAIp4C,EAAQ,EACZ1B,EAAK,GAAKA,EAAK,GAAG+gB,QAAQ,iBAAiB,SAASqI,EAAOR,GAEzD,GAAc,OAAVQ,EAAgB,OAAOA,EAC3B1nB,IACA,IAAI6yR,EAAY70R,EAAQq8K,WAAWnzJ,GACnC,GAAI,mBAAsB2rQ,EAAW,CACnC,IAAIlnM,EAAMrtF,EAAK0B,GACf0nB,EAAQmrQ,EAAUvxR,KAAKyY,EAAM4xE,GAG7BrtF,EAAKqY,OAAO3W,EAAO,GACnBA,IAEF,OAAO0nB,KAIT1pB,EAAQu7K,WAAWj4K,KAAKyY,EAAMzb,GAE9B,IAAIw0R,EAAQp9Q,EAAMlO,KAAOxJ,EAAQwJ,KAAOo1E,QAAQp1E,IAAI4d,KAAKw3D,SACzDk2M,EAAM7zQ,MAAMlF,EAAMzb,IAapB,OAVAoX,EAAM6sJ,UAAYA,EAClB7sJ,EAAM8kK,QAAUx8K,EAAQw8K,QAAQjY,GAChC7sJ,EAAM8jK,UAAYx7K,EAAQw7K,YAC1B9jK,EAAMikK,MA5ER,SAAqBpX,GACnB,IAAc/qJ,EAAV7J,EAAO,EAEX,IAAK6J,KAAK+qJ,EACR50J,GAAUA,GAAQ,GAAKA,EAAQ40J,EAAU3iJ,WAAWpI,GACpD7J,GAAQ,EAGV,OAAO3P,EAAQsgK,OAAOngJ,KAAKyzB,IAAIjkC,GAAQ3P,EAAQsgK,OAAO35J,QAoExC+1K,CAAYnY,GAGtB,mBAAsBvkK,EAAQ8E,MAChC9E,EAAQ8E,KAAK4S,GAGRA,GAtHT1X,EAAU4sE,EAAO5sE,QAAUu8K,EAAY7kK,MAAQ6kK,EAAqB,QAAIA,GAChEh1D,OA6LR,SAAgB55B,GACd,OAAIA,aAAevsF,MAAcusF,EAAIhG,OAASgG,EAAIr2E,QAC3Cq2E,GA9LT3tF,EAAQ48K,QAyJR,WACE58K,EAAQs8K,OAAO,KAzJjBt8K,EAAQs8K,OA8HR,SAAgBo4G,GACd10R,EAAQ47K,KAAK84G,GAEb10R,EAAQozD,MAAQ,GAChBpzD,EAAQ68K,MAAQ,GAKhB,IAHA,IAAIn7J,GAA+B,iBAAfgzQ,EAA0BA,EAAa,IAAIhzQ,MAAM,UACjE4C,EAAM5C,EAAM/a,OAEP6S,EAAI,EAAGA,EAAI8K,EAAK9K,IAClBkI,EAAMlI,KAEW,OADtBk7Q,EAAahzQ,EAAMlI,GAAG6H,QAAQ,MAAO,QACtB,GACbrhB,EAAQ68K,MAAMx2K,KAAK,IAAIy0C,OAAO,IAAM45O,EAAW7xQ,OAAO,GAAK,MAE3D7iB,EAAQozD,MAAM/sD,KAAK,IAAIy0C,OAAO,IAAM45O,EAAa,QA5IvD10R,EAAQw8K,QAmKR,SAAiB14K,GACf,IAAI0V,EAAG8K,EACP,IAAK9K,EAAI,EAAG8K,EAAMtkB,EAAQ68K,MAAMl2K,OAAQ6S,EAAI8K,EAAK9K,IAC/C,GAAIxZ,EAAQ68K,MAAMrjK,GAAGT,KAAKjV,GACxB,OAAO,EAGX,IAAK0V,EAAI,EAAG8K,EAAMtkB,EAAQozD,MAAMzsD,OAAQ6S,EAAI8K,EAAK9K,IAC/C,GAAIxZ,EAAQozD,MAAM55C,GAAGT,KAAKjV,GACxB,OAAO,EAGX,OAAO,GA9KT9D,EAAQy7K,SAAW,EAAnB,OAMAz7K,EAAQozD,MAAQ,GAChBpzD,EAAQ68K,MAAQ,GAQhB78K,EAAQq8K,WAAa,cCxBrB,IAAI5xJ,EAAI,IACJloB,EAAQ,GAAJkoB,EACJmQ,EAAQ,GAAJr4B,EACJwmB,EAAQ,GAAJ6R,EAwIR,SAASoiJ,EAAO43G,EAAItlQ,EAAGxrB,GACrB,KAAI8wR,EAAKtlQ,GAGT,OAAIslQ,EAAS,IAAJtlQ,EACAnP,KAAKC,MAAMw0Q,EAAKtlQ,GAAK,IAAMxrB,EAE7Bqc,KAAKsG,KAAKmuQ,EAAKtlQ,GAAK,IAAMxrB,EAAO,IA9H1C8oE,EAAO5sE,QAAU,SAAS2tF,EAAK17E,GAC7BA,EAAUA,GAAW,GACrB,IAyGe2iR,EAzGX7tR,SAAc4mF,EAClB,GAAa,WAAT5mF,GAAqB4mF,EAAIhnF,OAAS,EACpC,OAkBJ,SAAeutB,GAEb,MADAA,EAAMnT,OAAOmT,IACLvtB,OAAS,KAAjB,CAGA,IAAI+iB,EAAQ,wHAAwH0K,KAClIF,GAEF,GAAKxK,EAAL,CAGA,IAAI4F,EAAI+E,WAAW3K,EAAM,IAEzB,QADYA,EAAM,IAAM,MAAM4K,eAE5B,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAzDEvL,SAyDKuG,EACT,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOA,EAAIvG,EACb,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOuG,EAAIsL,EACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOtL,EAAI/sB,EACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAO+sB,EAAI7E,EACb,IAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,OAAO6E,EACT,QACE,UAnEK3G,CAAMglE,GACR,GAAa,WAAT5mF,IAAoC,IAAfy6D,MAAMmsB,GACpC,OAAO17E,EAAQgrK,KAsGVD,EADQ43G,EArGiBjnM,EAsGd5kE,EAAG,QACnBi0J,EAAO43G,EAAIh6P,EAAG,SACdoiJ,EAAO43G,EAAIryR,EAAG,WACdy6K,EAAO43G,EAAInqQ,EAAG,WACdmqQ,EAAK,MA7BT,SAAkBA,GAChB,OAAIA,GAAM7rQ,EACD5I,KAAKoU,MAAMqgQ,EAAK7rQ,GAAK,IAE1B6rQ,GAAMh6P,EACDza,KAAKoU,MAAMqgQ,EAAKh6P,GAAK,IAE1Bg6P,GAAMryR,EACD4d,KAAKoU,MAAMqgQ,EAAKryR,GAAK,IAE1BqyR,GAAMnqQ,EACDtK,KAAKoU,MAAMqgQ,EAAKnqQ,GAAK,IAEvBmqQ,EAAK,KA1F2B93G,CAASnvF,GAEhD,MAAM,IAAIvsF,MACR,wDACE4L,KAAKC,UAAU0gF,4CClCpB,SAAWwmM,GACVA,EAAI/qM,OAAS,SAAU1D,EAAQqvM,GAAO,OAAO,IAAIC,EAAUtvM,EAAQqvM,IACnEZ,EAAIa,UAAYA,EAChBb,EAAIc,UAAYA,EAChBd,EAAIxF,aAuKJ,SAAuBjpM,EAAQqvM,GAC7B,OAAO,IAAIE,EAAUvvM,EAAQqvM,IA7J/BZ,EAAIe,kBAAoB,MAExB,IA+II5zJ,EA/IAhiH,EAAU,CACZ,UAAW,WAAY,WAAY,UAAW,UAC9C,eAAgB,eAAgB,SAAU,aAC1C,cAAe,QAAS,UAwB1B,SAAS01Q,EAAWtvM,EAAQqvM,GAC1B,KAAMn0R,gBAAgBo0R,GACpB,OAAO,IAAIA,EAAUtvM,EAAQqvM,GAG/B,IAAI3rM,EAASxoF,MAqFf,SAAuBwoF,GACrB,IAAK,IAAI5vE,EAAI,EAAGye,EAAI3Y,EAAQ3Y,OAAQ6S,EAAIye,EAAGze,IACzC4vE,EAAO9pE,EAAQ9F,IAAM,GAtFvB27Q,CAAa/rM,GACbA,EAAOjrD,EAAIirD,EAAOznE,EAAI,GACtBynE,EAAOgsM,oBAAsBjB,EAAIe,kBACjC9rM,EAAO2rM,IAAMA,GAAO,GACpB3rM,EAAO2rM,IAAI/jI,UAAY5nE,EAAO2rM,IAAI/jI,WAAa5nE,EAAO2rM,IAAIM,cAC1DjsM,EAAOylM,UAAYzlM,EAAO2rM,IAAI/jI,UAAY,cAAgB,cAC1D5nE,EAAOksM,KAAO,GACdlsM,EAAOze,OAASye,EAAOmsM,WAAansM,EAAOosM,SAAU,EACrDpsM,EAAO7lE,IAAM6lE,EAAOz8E,MAAQ,KAC5By8E,EAAO1D,SAAWA,EAClB0D,EAAOqsM,YAAc/vM,IAAU0D,EAAO2rM,IAAIU,UAC1CrsM,EAAO/lD,MAAQzH,EAAE85P,MACjBtsM,EAAOusM,eAAiBvsM,EAAO2rM,IAAIY,eACnCvsM,EAAOupM,SAAWvpM,EAAOusM,eAAiB71R,OAAOuC,OAAO8xR,EAAIyB,cAAgB91R,OAAOuC,OAAO8xR,EAAIxB,UAC9FvpM,EAAOysM,WAAa,GAKhBzsM,EAAO2rM,IAAInG,QACbxlM,EAAO8lM,GAAKpvR,OAAOuC,OAAOyzR,IAI5B1sM,EAAOklM,eAAwC,IAAxBllM,EAAO2rM,IAAIxqP,SAC9B6+C,EAAOklM,gBACTllM,EAAO7+C,SAAW6+C,EAAOgP,KAAOhP,EAAOqsJ,OAAS,GAElD7oO,EAAKw8E,EAAQ,WAvDf+qM,EAAI18M,OAAS,CACX,OACA,wBACA,kBACA,UACA,UACA,eACA,YACA,UACA,WACA,YACA,QACA,aACA,QACA,MACA,QACA,SACA,gBACA,kBAwCG33E,OAAOuC,SACVvC,OAAOuC,OAAS,SAAUC,GACxB,SAAS05B,KAGT,OAFAA,EAAE54B,UAAYd,EACH,IAAI05B,IAKdl8B,OAAO0N,OACV1N,OAAO0N,KAAO,SAAUlL,GACtB,IAAI8hB,EAAI,GACR,IAAK,IAAI5K,KAAKlX,EAAOA,EAAEe,eAAemW,IAAI4K,EAAE/d,KAAKmT,GACjD,OAAO4K,IA0DX4wQ,EAAU5xR,UAAY,CACpBooF,IAAK,WAAcA,EAAI5qF,OACvBya,MA0yBF,SAAgBiuE,GACd,IAAIF,EAASxoF,KACb,GAAIA,KAAK+L,MACP,MAAM/L,KAAK+L,MAEb,GAAIy8E,EAAOze,OACT,OAAOh+D,EAAMy8E,EACX,wDAEJ,GAAc,OAAVE,EACF,OAAOkC,EAAIpC,GAEQ,iBAAVE,IACTA,EAAQA,EAAM76E,YAIhB,IAFA,IAAI+K,EAAI,EACJmI,EAAI,GAENA,EAAIsvB,EAAOq4C,EAAO9vE,KAClB4vE,EAAOznE,EAAIA,EAENA,GAcL,OAVIynE,EAAOklM,gBACTllM,EAAO7+C,WACG,OAAN5oB,GACFynE,EAAOgP,OACPhP,EAAOqsJ,OAAS,GAEhBrsJ,EAAOqsJ,UAIHrsJ,EAAO/lD,OACb,KAAKzH,EAAE85P,MAEL,GADAtsM,EAAO/lD,MAAQzH,EAAEm6P,iBACP,WAANp0Q,EACF,SAEFq0Q,EAAgB5sM,EAAQznE,GACxB,SAEF,KAAKia,EAAEm6P,iBACLC,EAAgB5sM,EAAQznE,GACxB,SAEF,KAAKia,EAAEq6P,KACL,GAAI7sM,EAAOosM,UAAYpsM,EAAOmsM,WAAY,CAExC,IADA,IAAIW,EAAS18Q,EAAI,EACVmI,GAAW,MAANA,GAAmB,MAANA,IACvBA,EAAIsvB,EAAOq4C,EAAO9vE,OACT4vE,EAAOklM,gBACdllM,EAAO7+C,WACG,OAAN5oB,GACFynE,EAAOgP,OACPhP,EAAOqsJ,OAAS,GAEhBrsJ,EAAOqsJ,UAIbrsJ,EAAO+sM,UAAY7sM,EAAMzxD,UAAUq+P,EAAQ18Q,EAAI,GAEvC,MAANmI,GAAeynE,EAAOosM,SAAWpsM,EAAOmsM,aAAensM,EAAO1D,QAI3D8jH,EAAa7nL,IAAQynE,EAAOosM,UAAWpsM,EAAOmsM,YACjDa,EAAWhtM,EAAQ,mCAEX,MAANznE,EACFynE,EAAO/lD,MAAQzH,EAAEy6P,YAEjBjtM,EAAO+sM,UAAYx0Q,IATrBynE,EAAO/lD,MAAQzH,EAAE06P,UACjBltM,EAAOmtM,iBAAmBntM,EAAO7+C,UAWnC,SAEF,KAAK3O,EAAE46P,OAEK,MAAN70Q,EACFynE,EAAO/lD,MAAQzH,EAAE66P,cAEjBrtM,EAAOstM,QAAU/0Q,EAEnB,SAEF,KAAKia,EAAE66P,cACK,MAAN90Q,EACFynE,EAAO/lD,MAAQzH,EAAE+6P,WAEjBvtM,EAAOstM,QAAU,IAAM/0Q,EACvBynE,EAAO/lD,MAAQzH,EAAE46P,QAEnB,SAEF,KAAK56P,EAAE06P,UAEL,GAAU,MAAN30Q,EACFynE,EAAO/lD,MAAQzH,EAAEg7P,UACjBxtM,EAAOytM,SAAW,QACb,GAAIrtF,EAAa7nL,SAEjB,GAAIm1Q,EAAQC,EAAWp1Q,GAC5BynE,EAAO/lD,MAAQzH,EAAEo7P,SACjB5tM,EAAO22I,QAAUp+M,OACZ,GAAU,MAANA,EACTynE,EAAO/lD,MAAQzH,EAAE+6P,UACjBvtM,EAAO22I,QAAU,QACZ,GAAU,MAANp+M,EACTynE,EAAO/lD,MAAQzH,EAAEq7P,UACjB7tM,EAAO8tM,aAAe9tM,EAAO+tM,aAAe,OACvC,CAGL,GAFAf,EAAWhtM,EAAQ,eAEfA,EAAOmtM,iBAAmB,EAAIntM,EAAO7+C,SAAU,CACjD,IAAI43H,EAAM/4E,EAAO7+C,SAAW6+C,EAAOmtM,iBACnC50Q,EAAI,IAAIjF,MAAMylJ,GAAK/gJ,KAAK,KAAOO,EAEjCynE,EAAO+sM,UAAY,IAAMx0Q,EACzBynE,EAAO/lD,MAAQzH,EAAEq6P,KAEnB,SAEF,KAAKr6P,EAAEg7P,UAxzBD,aAyzBCxtM,EAAOytM,SAAWl1Q,GAAGpG,eACxB67Q,EAAShuM,EAAQ,eACjBA,EAAO/lD,MAAQzH,EAAEw/L,MACjBhyI,EAAOytM,SAAW,GAClBztM,EAAOiuM,MAAQ,IACNjuM,EAAOytM,SAAWl1Q,IAAM,MACjCynE,EAAO/lD,MAAQzH,EAAEyhN,QACjBj0J,EAAOyvL,QAAU,GACjBzvL,EAAOytM,SAAW,IAh0Bd,aAi0BMztM,EAAOytM,SAAWl1Q,GAAGpG,eAC/B6tE,EAAO/lD,MAAQzH,EAAE07P,SACbluM,EAAOspM,SAAWtpM,EAAOosM,UAC3BY,EAAWhtM,EACT,+CAEJA,EAAOspM,QAAU,GACjBtpM,EAAOytM,SAAW,IACH,MAANl1Q,GACTy1Q,EAAShuM,EAAQ,oBAAqBA,EAAOytM,UAC7CztM,EAAOytM,SAAW,GAClBztM,EAAO/lD,MAAQzH,EAAEq6P,MACRsB,EAAQ51Q,IACjBynE,EAAO/lD,MAAQzH,EAAE47P,iBACjBpuM,EAAOytM,UAAYl1Q,GAEnBynE,EAAOytM,UAAYl1Q,EAErB,SAEF,KAAKia,EAAE47P,iBACD71Q,IAAMynE,EAAOjrD,IACfirD,EAAO/lD,MAAQzH,EAAEg7P,UACjBxtM,EAAOjrD,EAAI,IAEbirD,EAAOytM,UAAYl1Q,EACnB,SAEF,KAAKia,EAAE07P,QACK,MAAN31Q,GACFynE,EAAO/lD,MAAQzH,EAAEq6P,KACjBmB,EAAShuM,EAAQ,YAAaA,EAAOspM,SACrCtpM,EAAOspM,SAAU,IAEjBtpM,EAAOspM,SAAW/wQ,EACR,MAANA,EACFynE,EAAO/lD,MAAQzH,EAAE67P,YACRF,EAAQ51Q,KACjBynE,EAAO/lD,MAAQzH,EAAE87P,eACjBtuM,EAAOjrD,EAAIxc,IAGf,SAEF,KAAKia,EAAE87P,eACLtuM,EAAOspM,SAAW/wQ,EACdA,IAAMynE,EAAOjrD,IACfirD,EAAOjrD,EAAI,GACXirD,EAAO/lD,MAAQzH,EAAE07P,SAEnB,SAEF,KAAK17P,EAAE67P,YACLruM,EAAOspM,SAAW/wQ,EACR,MAANA,EACFynE,EAAO/lD,MAAQzH,EAAE07P,QACRC,EAAQ51Q,KACjBynE,EAAO/lD,MAAQzH,EAAE+7P,mBACjBvuM,EAAOjrD,EAAIxc,GAEb,SAEF,KAAKia,EAAE+7P,mBACLvuM,EAAOspM,SAAW/wQ,EACdA,IAAMynE,EAAOjrD,IACfirD,EAAO/lD,MAAQzH,EAAE67P,YACjBruM,EAAOjrD,EAAI,IAEb,SAEF,KAAKvC,EAAEyhN,QACK,MAAN17N,EACFynE,EAAO/lD,MAAQzH,EAAEg8P,eAEjBxuM,EAAOyvL,SAAWl3P,EAEpB,SAEF,KAAKia,EAAEg8P,eACK,MAANj2Q,GACFynE,EAAO/lD,MAAQzH,EAAEi8P,cACjBzuM,EAAOyvL,QAAUif,EAAS1uM,EAAO2rM,IAAK3rM,EAAOyvL,SACzCzvL,EAAOyvL,SACTue,EAAShuM,EAAQ,YAAaA,EAAOyvL,SAEvCzvL,EAAOyvL,QAAU,KAEjBzvL,EAAOyvL,SAAW,IAAMl3P,EACxBynE,EAAO/lD,MAAQzH,EAAEyhN,SAEnB,SAEF,KAAKzhN,EAAEi8P,cACK,MAANl2Q,GACFy0Q,EAAWhtM,EAAQ,qBAGnBA,EAAOyvL,SAAW,KAAOl3P,EACzBynE,EAAO/lD,MAAQzH,EAAEyhN,SAEjBj0J,EAAO/lD,MAAQzH,EAAEq6P,KAEnB,SAEF,KAAKr6P,EAAEw/L,MACK,MAANz5M,EACFynE,EAAO/lD,MAAQzH,EAAEm8P,aAEjB3uM,EAAOiuM,OAAS11Q,EAElB,SAEF,KAAKia,EAAEm8P,aACK,MAANp2Q,EACFynE,EAAO/lD,MAAQzH,EAAEo8P,gBAEjB5uM,EAAOiuM,OAAS,IAAM11Q,EACtBynE,EAAO/lD,MAAQzH,EAAEw/L,OAEnB,SAEF,KAAKx/L,EAAEo8P,eACK,MAANr2Q,GACEynE,EAAOiuM,OACTD,EAAShuM,EAAQ,UAAWA,EAAOiuM,OAErCD,EAAShuM,EAAQ,gBACjBA,EAAOiuM,MAAQ,GACfjuM,EAAO/lD,MAAQzH,EAAEq6P,MACF,MAANt0Q,EACTynE,EAAOiuM,OAAS,KAEhBjuM,EAAOiuM,OAAS,KAAO11Q,EACvBynE,EAAO/lD,MAAQzH,EAAEw/L,OAEnB,SAEF,KAAKx/L,EAAEq7P,UACK,MAANt1Q,EACFynE,EAAO/lD,MAAQzH,EAAEq8P,iBACRzuF,EAAa7nL,GACtBynE,EAAO/lD,MAAQzH,EAAEs8P,eAEjB9uM,EAAO8tM,cAAgBv1Q,EAEzB,SAEF,KAAKia,EAAEs8P,eACL,IAAK9uM,EAAO+tM,cAAgB3tF,EAAa7nL,GACvC,SACe,MAANA,EACTynE,EAAO/lD,MAAQzH,EAAEq8P,iBAEjB7uM,EAAO+tM,cAAgBx1Q,EAEzB,SAEF,KAAKia,EAAEq8P,iBACK,MAANt2Q,GACFy1Q,EAAShuM,EAAQ,0BAA2B,CAC1CtlF,KAAMslF,EAAO8tM,aACbznR,KAAM25E,EAAO+tM,eAEf/tM,EAAO8tM,aAAe9tM,EAAO+tM,aAAe,GAC5C/tM,EAAO/lD,MAAQzH,EAAEq6P,OAEjB7sM,EAAO+tM,cAAgB,IAAMx1Q,EAC7BynE,EAAO/lD,MAAQzH,EAAEs8P,gBAEnB,SAEF,KAAKt8P,EAAEo7P,SACDF,EAAQqB,EAAUx2Q,GACpBynE,EAAO22I,SAAWp+M,GAElBy2Q,EAAOhvM,GACG,MAANznE,EACF02Q,EAAQjvM,GACO,MAANznE,EACTynE,EAAO/lD,MAAQzH,EAAE08P,gBAEZ9uF,EAAa7nL,IAChBy0Q,EAAWhtM,EAAQ,iCAErBA,EAAO/lD,MAAQzH,EAAE28P,SAGrB,SAEF,KAAK38P,EAAE08P,eACK,MAAN32Q,GACF02Q,EAAQjvM,GAAQ,GAChBovM,EAASpvM,KAETgtM,EAAWhtM,EAAQ,kDACnBA,EAAO/lD,MAAQzH,EAAE28P,QAEnB,SAEF,KAAK38P,EAAE28P,OAEL,GAAI/uF,EAAa7nL,GACf,SACe,MAANA,EACT02Q,EAAQjvM,GACO,MAANznE,EACTynE,EAAO/lD,MAAQzH,EAAE08P,eACRxB,EAAQC,EAAWp1Q,IAC5BynE,EAAOqvM,WAAa92Q,EACpBynE,EAAOsvM,YAAc,GACrBtvM,EAAO/lD,MAAQzH,EAAE+8P,aAEjBvC,EAAWhtM,EAAQ,0BAErB,SAEF,KAAKxtD,EAAE+8P,YACK,MAANh3Q,EACFynE,EAAO/lD,MAAQzH,EAAEg9P,aACF,MAANj3Q,GACTy0Q,EAAWhtM,EAAQ,2BACnBA,EAAOsvM,YAActvM,EAAOqvM,WAC5B54D,EAAOz2I,GACPivM,EAAQjvM,IACCogH,EAAa7nL,GACtBynE,EAAO/lD,MAAQzH,EAAEi9P,sBACR/B,EAAQqB,EAAUx2Q,GAC3BynE,EAAOqvM,YAAc92Q,EAErBy0Q,EAAWhtM,EAAQ,0BAErB,SAEF,KAAKxtD,EAAEi9P,sBACL,GAAU,MAANl3Q,EACFynE,EAAO/lD,MAAQzH,EAAEg9P,iBACZ,IAAIpvF,EAAa7nL,GACtB,SAEAy0Q,EAAWhtM,EAAQ,2BACnBA,EAAO7lE,IAAIs/K,WAAWz5G,EAAOqvM,YAAc,GAC3CrvM,EAAOsvM,YAAc,GACrBtB,EAAShuM,EAAQ,cAAe,CAC9BtlF,KAAMslF,EAAOqvM,WACbx4R,MAAO,KAETmpF,EAAOqvM,WAAa,GACV,MAAN92Q,EACF02Q,EAAQjvM,GACC0tM,EAAQC,EAAWp1Q,IAC5BynE,EAAOqvM,WAAa92Q,EACpBynE,EAAO/lD,MAAQzH,EAAE+8P,cAEjBvC,EAAWhtM,EAAQ,0BACnBA,EAAO/lD,MAAQzH,EAAE28P,QAGrB,SAEF,KAAK38P,EAAEg9P,aACL,GAAIpvF,EAAa7nL,GACf,SACS41Q,EAAQ51Q,IACjBynE,EAAOjrD,EAAIxc,EACXynE,EAAO/lD,MAAQzH,EAAEk9P,sBAEjB1C,EAAWhtM,EAAQ,4BACnBA,EAAO/lD,MAAQzH,EAAEm9P,sBACjB3vM,EAAOsvM,YAAc/2Q,GAEvB,SAEF,KAAKia,EAAEk9P,oBACL,GAAIn3Q,IAAMynE,EAAOjrD,EAAG,CACR,MAANxc,EACFynE,EAAO/lD,MAAQzH,EAAEo9P,sBAEjB5vM,EAAOsvM,aAAe/2Q,EAExB,SAEFk+M,EAAOz2I,GACPA,EAAOjrD,EAAI,GACXirD,EAAO/lD,MAAQzH,EAAEq9P,oBACjB,SAEF,KAAKr9P,EAAEq9P,oBACDzvF,EAAa7nL,GACfynE,EAAO/lD,MAAQzH,EAAE28P,OACF,MAAN52Q,EACT02Q,EAAQjvM,GACO,MAANznE,EACTynE,EAAO/lD,MAAQzH,EAAE08P,eACRxB,EAAQC,EAAWp1Q,IAC5By0Q,EAAWhtM,EAAQ,oCACnBA,EAAOqvM,WAAa92Q,EACpBynE,EAAOsvM,YAAc,GACrBtvM,EAAO/lD,MAAQzH,EAAE+8P,aAEjBvC,EAAWhtM,EAAQ,0BAErB,SAEF,KAAKxtD,EAAEm9P,sBACL,IAAKG,EAAYv3Q,GAAI,CACT,MAANA,EACFynE,EAAO/lD,MAAQzH,EAAEu9P,sBAEjB/vM,EAAOsvM,aAAe/2Q,EAExB,SAEFk+M,EAAOz2I,GACG,MAANznE,EACF02Q,EAAQjvM,GAERA,EAAO/lD,MAAQzH,EAAE28P,OAEnB,SAEF,KAAK38P,EAAE+6P,UACL,GAAKvtM,EAAO22I,QAaK,MAANp+M,EACT62Q,EAASpvM,GACA0tM,EAAQqB,EAAUx2Q,GAC3BynE,EAAO22I,SAAWp+M,EACTynE,EAAOstM,QAChBttM,EAAOstM,QAAU,KAAOttM,EAAO22I,QAC/B32I,EAAO22I,QAAU,GACjB32I,EAAO/lD,MAAQzH,EAAE46P,SAEZhtF,EAAa7nL,IAChBy0Q,EAAWhtM,EAAQ,kCAErBA,EAAO/lD,MAAQzH,EAAEw9P,yBAzBE,CACnB,GAAI5vF,EAAa7nL,GACf,SACS03Q,EAAStC,EAAWp1Q,GACzBynE,EAAOstM,QACTttM,EAAOstM,QAAU,KAAO/0Q,EACxBynE,EAAO/lD,MAAQzH,EAAE46P,QAEjBJ,EAAWhtM,EAAQ,mCAGrBA,EAAO22I,QAAUp+M,EAgBrB,SAEF,KAAKia,EAAEw9P,oBACL,GAAI5vF,EAAa7nL,GACf,SAEQ,MAANA,EACF62Q,EAASpvM,GAETgtM,EAAWhtM,EAAQ,qCAErB,SAEF,KAAKxtD,EAAEy6P,YACP,KAAKz6P,EAAEo9P,sBACP,KAAKp9P,EAAEu9P,sBACL,IAAIG,EACA75Q,EACJ,OAAQ2pE,EAAO/lD,OACb,KAAKzH,EAAEy6P,YACLiD,EAAc19P,EAAEq6P,KAChBx2Q,EAAS,WACT,MAEF,KAAKmc,EAAEo9P,sBACLM,EAAc19P,EAAEk9P,oBAChBr5Q,EAAS,cACT,MAEF,KAAKmc,EAAEu9P,sBACLG,EAAc19P,EAAEm9P,sBAChBt5Q,EAAS,cAIH,MAANkC,GACFynE,EAAO3pE,IAAW85Q,EAAYnwM,GAC9BA,EAAOumE,OAAS,GAChBvmE,EAAO/lD,MAAQi2P,GACNxC,EAAQ1tM,EAAOumE,OAAOhpJ,OAAS6yR,EAAansF,EAAa1rL,GAClEynE,EAAOumE,QAAUhuI,GAEjBy0Q,EAAWhtM,EAAQ,oCACnBA,EAAO3pE,IAAW,IAAM2pE,EAAOumE,OAAShuI,EACxCynE,EAAOumE,OAAS,GAChBvmE,EAAO/lD,MAAQi2P,GAGjB,SAEF,QACE,MAAM,IAAIl4R,MAAMgoF,EAAQ,kBAAoBA,EAAO/lD,OAOzD,OAHI+lD,EAAO7+C,UAAY6+C,EAAOgsM,qBA73ChC,SAA4BhsM,GAG1B,IAFA,IAAIqwM,EAAat5Q,KAAK2vB,IAAIqkP,EAAIe,kBAAmB,IAC7CwE,EAAY,EACPlgR,EAAI,EAAGye,EAAI3Y,EAAQ3Y,OAAQ6S,EAAIye,EAAGze,IAAK,CAC9C,IAAI8K,EAAM8kE,EAAO9pE,EAAQ9F,IAAI7S,OAC7B,GAAI2d,EAAMm1Q,EAKR,OAAQn6Q,EAAQ9F,IACd,IAAK,WACHmgR,EAAUvwM,GACV,MAEF,IAAK,QACHguM,EAAShuM,EAAQ,UAAWA,EAAOiuM,OACnCjuM,EAAOiuM,MAAQ,GACf,MAEF,IAAK,SACHD,EAAShuM,EAAQ,WAAYA,EAAOstM,QACpCttM,EAAOstM,OAAS,GAChB,MAEF,QACE/pR,EAAMy8E,EAAQ,+BAAiC9pE,EAAQ9F,IAG7DkgR,EAAYv5Q,KAAK2vB,IAAI4pP,EAAWp1Q,GAGlC,IAAI/hB,EAAI4xR,EAAIe,kBAAoBwE,EAChCtwM,EAAOgsM,oBAAsB7yR,EAAI6mF,EAAO7+C,SA61CtCqvP,CAAkBxwM,GAEbA,GAv0CPs2C,OAAQ,WAAiC,OAAnB9+H,KAAK+L,MAAQ,KAAa/L,MAChDkQ,MAAO,WAAc,OAAOlQ,KAAKya,MAAM,OACvCqsH,MAAO,WAjBT,IAAuBt+C,EACrBuwM,EADqBvwM,EAiBaxoF,MAfb,KAAjBwoF,EAAOiuM,QACTD,EAAShuM,EAAQ,UAAWA,EAAOiuM,OACnCjuM,EAAOiuM,MAAQ,IAEK,KAAlBjuM,EAAOstM,SACTU,EAAShuM,EAAQ,WAAYA,EAAOstM,QACpCttM,EAAOstM,OAAS,MAapB,IACEp1J,EAAS,gBACT,MAAOgnJ,GACPhnJ,EAAS,aAGX,IAAIu4J,EAAc1F,EAAI18M,OAAOvpE,QAAO,SAAUw4H,GAC5C,MAAc,UAAPA,GAAyB,QAAPA,KAO3B,SAASuuJ,EAAWvvM,EAAQqvM,GAC1B,KAAMn0R,gBAAgBq0R,GACpB,OAAO,IAAIA,EAAUvvM,EAAQqvM,GAG/BzzJ,EAAOrgH,MAAMrgB,MAEbA,KAAKytM,QAAU,IAAI2mF,EAAUtvM,EAAQqvM,GACrCn0R,KAAKkC,UAAW,EAChBlC,KAAKotH,UAAW,EAEhB,IAAIi6J,EAAKrnR,KAETA,KAAKytM,QAAQxtE,MAAQ,WACnBonJ,EAAGr7Q,KAAK,QAGVhM,KAAKytM,QAAQ5rK,QAAU,SAAUi5D,GAC/BusL,EAAGr7Q,KAAK,QAAS8uF,GAIjBusL,EAAG55E,QAAQ1hM,MAAQ,MAGrB/L,KAAKwtM,SAAW,KAEhByrF,EAAY/3R,SAAQ,SAAU4kI,GAC5B5mI,OAAOC,eAAekoR,EAAI,KAAOvhJ,EAAI,CACnCzjI,IAAK,WACH,OAAOglR,EAAG55E,QAAQ,KAAO3nE,IAE3BvgI,IAAK,SAAUy0B,GACb,IAAKA,EAGH,OAFAqtP,EAAG/rL,mBAAmBwqC,GACtBuhJ,EAAG55E,QAAQ,KAAO3nE,GAAM9rG,EACjBA,EAETqtP,EAAG77Q,GAAGs6H,EAAI9rG,IAEZ53B,YAAY,EACZD,cAAc,OAKpBkyR,EAAU7xR,UAAYtD,OAAOuC,OAAOi/H,EAAOl+H,UAAW,CACpD/C,YAAa,CACXJ,MAAOg1R,KAIXA,EAAU7xR,UAAUiY,MAAQ,SAAUvR,GACpC,GAAsB,mBAAXo3D,GACkB,mBAApBA,EAAOG,UACdH,EAAOG,SAASv3D,GAAO,CACvB,IAAKlJ,KAAKwtM,SAAU,CAClB,IAAI0rF,EAAK,uBACTl5R,KAAKwtM,SAAW,IAAI0rF,EAAG,QAEzBhwR,EAAOlJ,KAAKwtM,SAAS/yL,MAAMvR,GAK7B,OAFAlJ,KAAKytM,QAAQhzL,MAAMvR,EAAK2E,YACxB7N,KAAKgM,KAAK,OAAQ9C,IACX,GAGTmrR,EAAU7xR,UAAUooF,IAAM,SAAUlC,GAKlC,OAJIA,GAASA,EAAM3iF,QACjB/F,KAAKya,MAAMiuE,GAEb1oF,KAAKytM,QAAQ7iH,OACN,GAGTypM,EAAU7xR,UAAUgJ,GAAK,SAAUs6H,EAAI59C,GACrC,IAAIm/L,EAAKrnR,KAST,OARKqnR,EAAG55E,QAAQ,KAAO3nE,KAAoC,IAA7BmzJ,EAAYnhR,QAAQguH,KAChDuhJ,EAAG55E,QAAQ,KAAO3nE,GAAM,WACtB,IAAIpmI,EAA4B,IAArBqd,UAAUhX,OAAe,CAACgX,UAAU,IAAMjB,MAAMuE,MAAM,KAAMtD,WACvErd,EAAKqY,OAAO,EAAG,EAAG+tH,GAClBuhJ,EAAGr7Q,KAAKqU,MAAMgnQ,EAAI3nR,KAIfghI,EAAOl+H,UAAUgJ,GAAG9I,KAAK2kR,EAAIvhJ,EAAI59C,IAK1C,IAEIixM,EAAgB,uCAChBC,EAAkB,gCAClBlE,EAAS,CAAE3iG,IAAK4mG,EAAenL,MAAOoL,GAQtCjD,EAAY,4JAEZoB,EAAW,gMAEX9qF,EAAc,6JACdmsF,EAAa,iMAEjB,SAAShwF,EAAc7nL,GACrB,MAAa,MAANA,GAAmB,OAANA,GAAoB,OAANA,GAAoB,OAANA,EAGlD,SAAS41Q,EAAS51Q,GAChB,MAAa,MAANA,GAAmB,MAANA,EAGtB,SAASu3Q,EAAav3Q,GACpB,MAAa,MAANA,GAAa6nL,EAAa7nL,GAGnC,SAASm1Q,EAASnvH,EAAOhmJ,GACvB,OAAOgmJ,EAAM5uJ,KAAK4I,GAGpB,SAAS03Q,EAAU1xH,EAAOhmJ,GACxB,OAAQm1Q,EAAQnvH,EAAOhmJ,GAGzB,IAwrCQs4Q,EACA75Q,EACAqlL,EA1rCJ7pK,EAAI,EAsTR,IAAK,IAAInR,KArTT0pQ,EAAI+F,MAAQ,CACVxE,MAAO95P,IACPm6P,iBAAkBn6P,IAClBq6P,KAAMr6P,IACNy6P,YAAaz6P,IACb06P,UAAW16P,IACXg7P,UAAWh7P,IACX47P,iBAAkB57P,IAClB07P,QAAS17P,IACT87P,eAAgB97P,IAChB67P,YAAa77P,IACb+7P,mBAAoB/7P,IACpBu+P,iBAAkBv+P,IAClByhN,QAASzhN,IACTg8P,eAAgBh8P,IAChBi8P,cAAej8P,IACfw/L,MAAOx/L,IACPm8P,aAAcn8P,IACdo8P,eAAgBp8P,IAChBq7P,UAAWr7P,IACXs8P,eAAgBt8P,IAChBq8P,iBAAkBr8P,IAClBo7P,SAAUp7P,IACV08P,eAAgB18P,IAChB28P,OAAQ38P,IACR+8P,YAAa/8P,IACbi9P,sBAAuBj9P,IACvBg9P,aAAch9P,IACdk9P,oBAAqBl9P,IACrBq9P,oBAAqBr9P,IACrBm9P,sBAAuBn9P,IACvBo9P,sBAAuBp9P,IACvBu9P,sBAAuBv9P,IACvB+6P,UAAW/6P,IACXw9P,oBAAqBx9P,IACrB46P,OAAQ56P,IACR66P,cAAe76P,KAGjBu4P,EAAIyB,aAAe,CACjB,IAAO,IACP,GAAM,IACN,GAAM,IACN,KAAQ,IACR,KAAQ,KAGVzB,EAAIxB,SAAW,CACb,IAAO,IACP,GAAM,IACN,GAAM,IACN,KAAQ,IACR,KAAQ,IACR,MAAS,IACT,OAAU,IACV,MAAS,IACT,OAAU,IACV,MAAS,IACT,OAAU,IACV,KAAQ,IACR,OAAU,IACV,IAAO,IACP,OAAU,IACV,MAAS,IACT,OAAU,IACV,KAAQ,IACR,OAAU,IACV,MAAS,IACT,OAAU,IACV,KAAQ,IACR,OAAU,IACV,OAAU,IACV,MAAS,IACT,OAAU,IACV,OAAU,IACV,OAAU,IACV,KAAQ,IACR,MAAS,IACT,OAAU,IACV,MAAS,IACT,OAAU,IACV,KAAQ,IACR,OAAU,IACV,OAAU,IACV,MAAS,IACT,MAAS,IACT,OAAU,IACV,MAAS,IACT,OAAU,IACV,KAAQ,IACR,OAAU,IACV,OAAU,IACV,MAAS,IACT,OAAU,IACV,IAAO,IACP,KAAQ,IACR,OAAU,IACV,MAAS,IACT,OAAU,IACV,KAAQ,IACR,OAAU,IACV,OAAU,IACV,MAAS,IACT,OAAU,IACV,OAAU,IACV,OAAU,IACV,KAAQ,IACR,MAAS,IACT,MAAS,IACT,OAAU,IACV,MAAS,IACT,OAAU,IACV,KAAQ,IACR,OAAU,IACV,KAAQ,IACR,KAAQ,IACR,IAAO,IACP,KAAQ,IACR,MAAS,IACT,KAAQ,IACR,MAAS,IACT,OAAU,IACV,IAAO,IACP,OAAU,IACV,KAAQ,IACR,IAAO,IACP,KAAQ,IACR,MAAS,IACT,IAAO,IACP,IAAO,IACP,KAAQ,IACR,IAAO,IACP,OAAU,IACV,KAAQ,IACR,KAAQ,IACR,KAAQ,IACR,MAAS,IACT,MAAS,IACT,KAAQ,IACR,OAAU,IACV,MAAS,IACT,KAAQ,IACR,MAAS,IACT,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,MAAS,IACT,OAAU,IACV,MAAS,IACT,MAAS,IACT,OAAU,IACV,OAAU,IACV,KAAQ,IACR,KAAQ,IACR,KAAQ,IACR,MAAS,IACT,MAAS,IACT,KAAQ,IACR,MAAS,IACT,MAAS,IACT,QAAW,IACX,KAAQ,IACR,IAAO,IACP,MAAS,IACT,KAAQ,IACR,MAAS,IACT,OAAU,IACV,GAAM,IACN,GAAM,IACN,GAAM,IACN,QAAW,IACX,GAAM,IACN,IAAO,IACP,MAAS,IACT,IAAO,IACP,QAAW,IACX,IAAO,IACP,IAAO,IACP,IAAO,IACP,MAAS,IACT,MAAS,IACT,KAAQ,IACR,MAAS,IACT,MAAS,IACT,QAAW,IACX,KAAQ,IACR,IAAO,IACP,MAAS,IACT,KAAQ,IACR,MAAS,IACT,OAAU,IACV,GAAM,IACN,GAAM,IACN,GAAM,IACN,QAAW,IACX,GAAM,IACN,IAAO,IACP,OAAU,IACV,MAAS,IACT,IAAO,IACP,QAAW,IACX,IAAO,IACP,IAAO,IACP,IAAO,IACP,MAAS,IACT,SAAY,IACZ,MAAS,IACT,IAAO,IACP,KAAQ,KACR,KAAQ,KACR,OAAU,KACV,KAAQ,KACR,IAAO,KACP,IAAO,KACP,IAAO,KACP,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,OAAU,KACV,OAAU,KACV,KAAQ,KACR,OAAU,KACV,OAAU,KACV,MAAS,KACT,MAAS,KACT,OAAU,KACV,OAAU,KACV,MAAS,KACT,MAAS,KACT,KAAQ,KACR,MAAS,KACT,OAAU,KACV,KAAQ,KACR,MAAS,KACT,QAAW,KACX,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,MAAS,KACT,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,OAAU,KACV,KAAQ,KACR,MAAS,KACT,MAAS,KACT,MAAS,KACT,KAAQ,KACR,MAAS,KACT,GAAM,KACN,KAAQ,KACR,IAAO,KACP,MAAS,KACT,OAAU,KACV,MAAS,KACT,KAAQ,KACR,MAAS,KACT,IAAO,KACP,IAAO,KACP,GAAM,KACN,IAAO,KACP,IAAO,KACP,IAAO,KACP,OAAU,KACV,IAAO,KACP,KAAQ,KACR,MAAS,KACT,GAAM,KACN,MAAS,KACT,GAAM,KACN,GAAM,KACN,IAAO,KACP,IAAO,KACP,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,MAAS,KACT,OAAU,KACV,KAAQ,KACR,KAAQ,KACR,MAAS,KACT,MAAS,KACT,OAAU,KACV,OAAU,KACV,KAAQ,KACR,KAAQ,KACR,IAAO,KACP,OAAU,KACV,MAAS,KACT,OAAU,KACV,MAAS,MAGX7yR,OAAO0N,KAAK2mR,EAAIxB,UAAU7wR,SAAQ,SAAUC,GAC1C,IAAIstB,EAAI8kQ,EAAIxB,SAAS5wR,GACjB0oB,EAAiB,iBAAN4E,EAAiBtO,OAAOC,aAAaqO,GAAKA,EACzD8kQ,EAAIxB,SAAS5wR,GAAO0oB,KAGR0pQ,EAAI+F,MAChB/F,EAAI+F,MAAM/F,EAAI+F,MAAMzvQ,IAAMA,EAM5B,SAAS7d,EAAMw8E,EAAQo9C,EAAO18H,GAC5Bs/E,EAAOo9C,IAAUp9C,EAAOo9C,GAAO18H,GAGjC,SAASstR,EAAUhuM,EAAQsnB,EAAU5mG,GAC/Bs/E,EAAO+sM,UAAUwD,EAAUvwM,GAC/Bx8E,EAAKw8E,EAAQsnB,EAAU5mG,GAGzB,SAAS6vR,EAAWvwM,GAClBA,EAAO+sM,SAAW2B,EAAS1uM,EAAO2rM,IAAK3rM,EAAO+sM,UAC1C/sM,EAAO+sM,UAAUvpR,EAAKw8E,EAAQ,SAAUA,EAAO+sM,UACnD/sM,EAAO+sM,SAAW,GAGpB,SAAS2B,EAAU/C,EAAKrlN,GAGtB,OAFIqlN,EAAI9vN,OAAMyK,EAAOA,EAAKzK,QACtB8vN,EAAI/9B,YAAWtnL,EAAOA,EAAKruD,QAAQ,OAAQ,MACxCquD,EAGT,SAAS/iE,EAAOy8E,EAAQsS,GAUtB,OATAi+L,EAAUvwM,GACNA,EAAOklM,gBACT5yL,GAAM,WAAatS,EAAOgP,KACxB,aAAehP,EAAOqsJ,OACtB,WAAarsJ,EAAOznE,GAExB+5E,EAAK,IAAIt6F,MAAMs6F,GACftS,EAAOz8E,MAAQ+uF,EACf9uF,EAAKw8E,EAAQ,UAAWsS,GACjBtS,EAGT,SAASoC,EAAKpC,GAYZ,OAXIA,EAAOosM,UAAYpsM,EAAOmsM,YAAYa,EAAWhtM,EAAQ,qBACxDA,EAAO/lD,QAAUzH,EAAE85P,OACrBtsM,EAAO/lD,QAAUzH,EAAEm6P,kBACnB3sM,EAAO/lD,QAAUzH,EAAEq6P,MACpBtpR,EAAMy8E,EAAQ,kBAEhBuwM,EAAUvwM,GACVA,EAAOznE,EAAI,GACXynE,EAAOze,QAAS,EAChB/9D,EAAKw8E,EAAQ,SACb4rM,EAAU1xR,KAAK8lF,EAAQA,EAAO1D,OAAQ0D,EAAO2rM,KACtC3rM,EAGT,SAASgtM,EAAYhtM,EAAQ9xE,GAC3B,GAAsB,iBAAX8xE,KAAyBA,aAAkB4rM,GACpD,MAAM,IAAI5zR,MAAM,0BAEdgoF,EAAO1D,QACT/4E,EAAMy8E,EAAQ9xE,GAIlB,SAAS8gR,EAAQhvM,GACVA,EAAO1D,SAAQ0D,EAAO22I,QAAU32I,EAAO22I,QAAQ32I,EAAOylM,cAC3D,IAAI1jN,EAASie,EAAOksM,KAAKlsM,EAAOksM,KAAK3uR,OAAS,IAAMyiF,EAChD7lE,EAAM6lE,EAAO7lE,IAAM,CAAEzf,KAAMslF,EAAO22I,QAASl9B,WAAY,IAGvDz5G,EAAO2rM,IAAInG,QACbrrQ,EAAI2rQ,GAAK/jN,EAAO+jN,IAElB9lM,EAAOysM,WAAWlvR,OAAS,EAC3BywR,EAAShuM,EAAQ,iBAAkB7lE,GAGrC,SAAS62Q,EAAOt2R,EAAMypR,GACpB,IACI8M,EADIv2R,EAAK4U,QAAQ,KACF,EAAI,CAAE,GAAI5U,GAASA,EAAK4d,MAAM,KAC7C6f,EAAS84P,EAAS,GAClBl+G,EAAQk+G,EAAS,GAQrB,OALI9M,GAAsB,UAATzpR,IACfy9B,EAAS,QACT46I,EAAQ,IAGH,CAAE56I,OAAQA,EAAQ46I,MAAOA,GAGlC,SAAS0jD,EAAQz2I,GAKf,GAJKA,EAAO1D,SACV0D,EAAOqvM,WAAarvM,EAAOqvM,WAAWrvM,EAAOylM,eAGO,IAAlDzlM,EAAOysM,WAAWn9Q,QAAQ0wE,EAAOqvM,aACnCrvM,EAAO7lE,IAAIs/K,WAAWx/L,eAAe+lF,EAAOqvM,YAC5CrvM,EAAOqvM,WAAarvM,EAAOsvM,YAAc,OAF3C,CAMA,GAAItvM,EAAO2rM,IAAInG,MAAO,CACpB,IAAI0L,EAAKF,EAAMhxM,EAAOqvM,YAAY,GAC9Bl3P,EAAS+4P,EAAG/4P,OACZ46I,EAAQm+G,EAAGn+G,MAEf,GAAe,UAAX56I,EAEF,GAAc,QAAV46I,GAAmB/yF,EAAOsvM,cAAgBqB,EAC5C3D,EAAWhtM,EACT,gCAAkC2wM,EAAlC,aACa3wM,EAAOsvM,kBACjB,GAAc,UAAVv8G,GAAqB/yF,EAAOsvM,cAAgBsB,EACrD5D,EAAWhtM,EACT,kCAAoC4wM,EAApC,aACa5wM,EAAOsvM,iBACjB,CACL,IAAIn1Q,EAAM6lE,EAAO7lE,IACb4nD,EAASie,EAAOksM,KAAKlsM,EAAOksM,KAAK3uR,OAAS,IAAMyiF,EAChD7lE,EAAI2rQ,KAAO/jN,EAAO+jN,KACpB3rQ,EAAI2rQ,GAAKpvR,OAAOuC,OAAO8oE,EAAO+jN,KAEhC3rQ,EAAI2rQ,GAAG/yG,GAAS/yF,EAAOsvM,YAO3BtvM,EAAOysM,WAAWxvR,KAAK,CAAC+iF,EAAOqvM,WAAYrvM,EAAOsvM,mBAGlDtvM,EAAO7lE,IAAIs/K,WAAWz5G,EAAOqvM,YAAcrvM,EAAOsvM,YAClDtB,EAAShuM,EAAQ,cAAe,CAC9BtlF,KAAMslF,EAAOqvM,WACbx4R,MAAOmpF,EAAOsvM,cAIlBtvM,EAAOqvM,WAAarvM,EAAOsvM,YAAc,IAG3C,SAASL,EAASjvM,EAAQmxM,GACxB,GAAInxM,EAAO2rM,IAAInG,MAAO,CAEpB,IAAIrrQ,EAAM6lE,EAAO7lE,IAGb+2Q,EAAKF,EAAMhxM,EAAO22I,SACtBx8M,EAAIge,OAAS+4P,EAAG/4P,OAChBhe,EAAI44J,MAAQm+G,EAAGn+G,MACf54J,EAAI6wC,IAAM7wC,EAAI2rQ,GAAGoL,EAAG/4P,SAAW,GAE3Bhe,EAAIge,SAAWhe,EAAI6wC,MACrBgiO,EAAWhtM,EAAQ,6BACjBp8E,KAAKC,UAAUm8E,EAAO22I,UACxBx8M,EAAI6wC,IAAMkmO,EAAG/4P,QAGf,IAAI4pC,EAASie,EAAOksM,KAAKlsM,EAAOksM,KAAK3uR,OAAS,IAAMyiF,EAChD7lE,EAAI2rQ,IAAM/jN,EAAO+jN,KAAO3rQ,EAAI2rQ,IAC9BpvR,OAAO0N,KAAK+V,EAAI2rQ,IAAIptR,SAAQ,SAAUqB,GACpCi0R,EAAShuM,EAAQ,kBAAmB,CAClC7nD,OAAQp+B,EACRixD,IAAK7wC,EAAI2rQ,GAAG/rR,QAQlB,IAAK,IAAIqW,EAAI,EAAGye,EAAImxD,EAAOysM,WAAWlvR,OAAQ6S,EAAIye,EAAGze,IAAK,CACxD,IAAIghR,EAAKpxM,EAAOysM,WAAWr8Q,GACvB1V,EAAO02R,EAAG,GACVv6R,EAAQu6R,EAAG,GACXH,EAAWD,EAAMt2R,GAAM,GACvBy9B,EAAS84P,EAAS94P,OAClB46I,EAAQk+G,EAASl+G,MACjB/nH,EAAiB,KAAX7yB,EAAgB,GAAMhe,EAAI2rQ,GAAG3tP,IAAW,GAC9Cnd,EAAI,CACNtgB,KAAMA,EACN7D,MAAOA,EACPshC,OAAQA,EACR46I,MAAOA,EACP/nH,IAAKA,GAKH7yB,GAAqB,UAAXA,IAAuB6yB,IACnCgiO,EAAWhtM,EAAQ,6BACjBp8E,KAAKC,UAAUs0B,IACjBnd,EAAEgwC,IAAM7yB,GAEV6nD,EAAO7lE,IAAIs/K,WAAW/+L,GAAQsgB,EAC9BgzQ,EAAShuM,EAAQ,cAAehlE,GAElCglE,EAAOysM,WAAWlvR,OAAS,EAG7ByiF,EAAO7lE,IAAIk3Q,gBAAkBF,EAG7BnxM,EAAOosM,SAAU,EACjBpsM,EAAOksM,KAAKjvR,KAAK+iF,EAAO7lE,KACxB6zQ,EAAShuM,EAAQ,YAAaA,EAAO7lE,KAChCg3Q,IAEEnxM,EAAOqsM,UAA6C,WAAjCrsM,EAAO22I,QAAQzrM,cAGrC80D,EAAO/lD,MAAQzH,EAAEq6P,KAFjB7sM,EAAO/lD,MAAQzH,EAAE46P,OAInBptM,EAAO7lE,IAAM,KACb6lE,EAAO22I,QAAU,IAEnB32I,EAAOqvM,WAAarvM,EAAOsvM,YAAc,GACzCtvM,EAAOysM,WAAWlvR,OAAS,EAG7B,SAAS6xR,EAAUpvM,GACjB,IAAKA,EAAO22I,QAIV,OAHAq2D,EAAWhtM,EAAQ,0BACnBA,EAAO+sM,UAAY,WACnB/sM,EAAO/lD,MAAQzH,EAAEq6P,MAInB,GAAI7sM,EAAOstM,OAAQ,CACjB,GAAuB,WAAnBttM,EAAO22I,QAIT,OAHA32I,EAAOstM,QAAU,KAAOttM,EAAO22I,QAAU,IACzC32I,EAAO22I,QAAU,QACjB32I,EAAO/lD,MAAQzH,EAAE46P,QAGnBY,EAAShuM,EAAQ,WAAYA,EAAOstM,QACpCttM,EAAOstM,OAAS,GAKlB,IAAI1+P,EAAIoxD,EAAOksM,KAAK3uR,OAChBo5N,EAAU32I,EAAO22I,QAChB32I,EAAO1D,SACVq6I,EAAUA,EAAQ32I,EAAOylM,cAG3B,IADA,IAAI6L,EAAU36D,EACP/nM,KACOoxD,EAAOksM,KAAKt9P,GACdl0B,OAAS42R,GAEjBtE,EAAWhtM,EAAQ,wBAOvB,GAAIpxD,EAAI,EAIN,OAHAo+P,EAAWhtM,EAAQ,0BAA4BA,EAAO22I,SACtD32I,EAAO+sM,UAAY,KAAO/sM,EAAO22I,QAAU,SAC3C32I,EAAO/lD,MAAQzH,EAAEq6P,MAGnB7sM,EAAO22I,QAAUA,EAEjB,IADA,IAAIt1M,EAAI2+D,EAAOksM,KAAK3uR,OACb8jB,KAAMuN,GAAG,CACd,IAAIzU,EAAM6lE,EAAO7lE,IAAM6lE,EAAOksM,KAAKlyQ,MACnCgmE,EAAO22I,QAAU32I,EAAO7lE,IAAIzf,KAC5BszR,EAAShuM,EAAQ,aAAcA,EAAO22I,SAEtC,IAAIlxN,EAAI,GACR,IAAK,IAAI2K,KAAK+J,EAAI2rQ,GAChBrgR,EAAE2K,GAAK+J,EAAI2rQ,GAAG11Q,GAGhB,IAAI2xD,EAASie,EAAOksM,KAAKlsM,EAAOksM,KAAK3uR,OAAS,IAAMyiF,EAChDA,EAAO2rM,IAAInG,OAASrrQ,EAAI2rQ,KAAO/jN,EAAO+jN,IAExCpvR,OAAO0N,KAAK+V,EAAI2rQ,IAAIptR,SAAQ,SAAUqB,GACpC,IAAImsB,EAAI/L,EAAI2rQ,GAAG/rR,GACfi0R,EAAShuM,EAAQ,mBAAoB,CAAE7nD,OAAQp+B,EAAGixD,IAAK9kC,OAInD,IAAN0I,IAASoxD,EAAOmsM,YAAa,GACjCnsM,EAAO22I,QAAU32I,EAAOsvM,YAActvM,EAAOqvM,WAAa,GAC1DrvM,EAAOysM,WAAWlvR,OAAS,EAC3ByiF,EAAO/lD,MAAQzH,EAAEq6P,KAGnB,SAASsD,EAAanwM,GACpB,IAEIxzB,EAFA+5F,EAASvmE,EAAOumE,OAChBgrI,EAAWhrI,EAAOr7H,cAElBsmQ,EAAS,GAEb,OAAIxxM,EAAOupM,SAAShjI,GACXvmE,EAAOupM,SAAShjI,GAErBvmE,EAAOupM,SAASgI,GACXvxM,EAAOupM,SAASgI,IAGA,OADzBhrI,EAASgrI,GACE1pP,OAAO,KACS,MAArB0+G,EAAO1+G,OAAO,IAChB0+G,EAASA,EAAO1rI,MAAM,GAEtB22Q,GADAhlO,EAAMhzC,SAAS+sI,EAAQ,KACVlhJ,SAAS,MAEtBkhJ,EAASA,EAAO1rI,MAAM,GAEtB22Q,GADAhlO,EAAMhzC,SAAS+sI,EAAQ,KACVlhJ,SAAS,MAG1BkhJ,EAASA,EAAOtuI,QAAQ,MAAO,IAC3BmgD,MAAM5L,IAAQglO,EAAOtmQ,gBAAkBq7H,GACzCymI,EAAWhtM,EAAQ,4BACZ,IAAMA,EAAOumE,OAAS,KAGxB5uI,OAAO0kL,cAAc7vI,IAG9B,SAASogO,EAAiB5sM,EAAQznE,GACtB,MAANA,GACFynE,EAAO/lD,MAAQzH,EAAE06P,UACjBltM,EAAOmtM,iBAAmBntM,EAAO7+C,UACvBi/J,EAAa7nL,KAGvBy0Q,EAAWhtM,EAAQ,oCACnBA,EAAO+sM,SAAWx0Q,EAClBynE,EAAO/lD,MAAQzH,EAAEq6P,MAIrB,SAAShlP,EAAQq4C,EAAO9vE,GACtB,IAAItR,EAAS,GAIb,OAHIsR,EAAI8vE,EAAM3iF,SACZuB,EAASohF,EAAMr4C,OAAOz3B,IAEjBtR,EArVT0zB,EAAIu4P,EAAI+F,MA23BHn5Q,OAAO0kL,gBAEJw0F,EAAqBl5Q,OAAOC,aAC5BZ,EAAQD,KAAKC,MACbqlL,EAAgB,WAClB,IAEI3zE,EACA+oK,EAHAC,EAAW,MACXC,EAAY,GAGZ/4R,GAAS,EACT2E,EAASgX,UAAUhX,OACvB,IAAKA,EACH,MAAO,GAGT,IADA,IAAIuB,EAAS,KACJlG,EAAQ2E,GAAQ,CACvB,IAAIwoF,EAAYlrF,OAAO0Z,UAAU3b,IACjC,IACG2gE,SAASwsB,IACVA,EAAY,GACZA,EAAY,SACZ/uE,EAAM+uE,KAAeA,EAErB,MAAMnvE,WAAW,uBAAyBmvE,GAExCA,GAAa,MACf4rM,EAAU10R,KAAK8oF,IAIf2iC,EAAoC,QADpC3iC,GAAa,QACiB,IAC9B0rM,EAAgB1rM,EAAY,KAAS,MACrC4rM,EAAU10R,KAAKyrH,EAAe+oK,KAE5B74R,EAAQ,IAAM2E,GAAUo0R,EAAUp0R,OAASm0R,KAC7C5yR,GAAU+xR,EAAmBh5Q,MAAM,KAAM85Q,GACzCA,EAAUp0R,OAAS,GAGvB,OAAOuB,GAGLpI,OAAOC,eACTD,OAAOC,eAAeghB,OAAQ,gBAAiB,CAC7C9gB,MAAOwlM,EACP1iM,cAAc,EACdD,UAAU,IAGZie,OAAO0kL,cAAgBA,GAxhD9B,CA4hDmDzlM,cCzhD5C4sE,EAAO5sE,QAgBb,SAAU0C,GAER,aAeA,IAGIs4R,EAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAQ1F,SAASC,EAASpsR,EAAGrM,GACjB,IAAI4hB,EAAIvV,EAAE,GACNwV,EAAIxV,EAAE,GACN8S,EAAI9S,EAAE,GACNka,EAAIla,EAAE,GASVwV,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI1C,GAAK0C,EAAI0E,GAAKvmB,EAAE,GAAK,UAAY,IAChC,EAAI4hB,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIzC,GAAKnf,EAAE,GAAK,UAAY,IAChC,GAAKumB,IAAM,IAAM3E,EAAI,GACtBA,GAAK2E,EAAI1E,GAAK7hB,EAAE,GAAK,UAAY,IAChC,GAAKmf,IAAM,IAAMoH,EAAI,GACtBA,GAAKpH,EAAIyC,GAAK5hB,EAAE,GAAK,WAAa,IACjC,GAAK6hB,IAAM,IAAM1C,EAAI,EAQhC0C,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI1C,GAAK0C,EAAI0E,GAAKvmB,EAAE,GAAK,UAAY,IAChC,EAAI4hB,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIzC,GAAKnf,EAAE,GAAK,WAAa,IACjC,GAAKumB,IAAM,IAAM3E,EAAI,GACtBA,GAAK2E,EAAI1E,GAAK7hB,EAAE,GAAK,WAAa,IACjC,GAAKmf,IAAM,IAAMoH,EAAI,GACtBA,GAAKpH,EAAIyC,GAAK5hB,EAAE,GAAK,SAAW,IAC/B,GAAK6hB,IAAM,IAAM1C,EAAI,EAQhC0C,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI1C,GAAK0C,EAAI0E,GAAKvmB,EAAE,GAAK,WAAa,IACjC,EAAI4hB,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIzC,GAAKnf,EAAE,GAAK,WAAa,IACjC,GAAKumB,IAAM,IAAM3E,EAAI,GACtBA,GAAK2E,EAAI1E,GAAK7hB,EAAE,IAAM,MAAQ,IAC7B,GAAKmf,IAAM,IAAMoH,EAAI,GACtBA,GAAKpH,EAAIyC,GAAK5hB,EAAE,IAAM,WAAa,IAClC,GAAK6hB,IAAM,IAAM1C,EAAI,EAQhC0C,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI1C,GAAK0C,EAAI0E,GAAKvmB,EAAE,IAAM,WAAa,IAClC,EAAI4hB,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIzC,GAAKnf,EAAE,IAAM,SAAW,IAChC,GAAKumB,IAAM,IAAM3E,EAAI,GACtBA,GAAK2E,EAAI1E,GAAK7hB,EAAE,IAAM,WAAa,IAClC,GAAKmf,IAAM,IAAMoH,EAAI,GACtBA,GAAKpH,EAAIyC,GAAK5hB,EAAE,IAAM,WAAa,IAClC,GAAK6hB,IAAM,IAAM1C,EAAI,EAShC0C,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI0E,EAAIpH,GAAKoH,GAAKvmB,EAAE,GAAK,UAAY,IAChC,EAAI4hB,IAAM,IAAMC,EAAI,GACrB1C,EAAI0C,GAAK1C,GAAKnf,EAAE,GAAK,WAAa,IACjC,EAAIumB,IAAM,IAAM3E,EAAI,GACrBC,EAAID,GAAKC,GAAK7hB,EAAE,IAAM,UAAY,IACjC,GAAKmf,IAAM,IAAMoH,EAAI,GACtB3E,EAAI2E,GAAK3E,GAAK5hB,EAAE,GAAK,UAAY,IAChC,GAAK6hB,IAAM,IAAM1C,EAAI,EAQhC0C,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI0E,EAAIpH,GAAKoH,GAAKvmB,EAAE,GAAK,UAAY,IAChC,EAAI4hB,IAAM,IAAMC,EAAI,GACrB1C,EAAI0C,GAAK1C,GAAKnf,EAAE,IAAM,SAAW,IAChC,EAAIumB,IAAM,IAAM3E,EAAI,GACrBC,EAAID,GAAKC,GAAK7hB,EAAE,IAAM,UAAY,IACjC,GAAKmf,IAAM,IAAMoH,EAAI,GACtB3E,EAAI2E,GAAK3E,GAAK5hB,EAAE,GAAK,UAAY,IAChC,GAAK6hB,IAAM,IAAM1C,EAAI,EAQhC0C,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI0E,EAAIpH,GAAKoH,GAAKvmB,EAAE,GAAK,UAAY,IAChC,EAAI4hB,IAAM,IAAMC,EAAI,GACrB1C,EAAI0C,GAAK1C,GAAKnf,EAAE,IAAM,WAAa,IAClC,EAAIumB,IAAM,IAAM3E,EAAI,GACrBC,EAAID,GAAKC,GAAK7hB,EAAE,GAAK,UAAY,IAChC,GAAKmf,IAAM,IAAMoH,EAAI,GACtB3E,EAAI2E,GAAK3E,GAAK5hB,EAAE,GAAK,WAAa,IACjC,GAAK6hB,IAAM,IAAM1C,EAAI,EAQhC0C,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI0E,EAAIpH,GAAKoH,GAAKvmB,EAAE,IAAM,WAAa,IAClC,EAAI4hB,IAAM,IAAMC,EAAI,GACrB1C,EAAI0C,GAAK1C,GAAKnf,EAAE,GAAK,SAAW,IAC/B,EAAIumB,IAAM,IAAM3E,EAAI,GACrBC,EAAID,GAAKC,GAAK7hB,EAAE,GAAK,WAAa,IACjC,GAAKmf,IAAM,IAAMoH,EAAI,GACtB3E,EAAI2E,GAAK3E,GAAK5hB,EAAE,IAAM,WAAa,IAClC,GAAK6hB,IAAM,IAAM1C,EAAI,EAShC0C,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI1C,EAAIoH,GAAKvmB,EAAE,GAAK,OAAS,IACxB,EAAI4hB,IAAM,IAAMC,EAAI,GACrBA,EAAI1C,GAAKnf,EAAE,GAAK,WAAa,IAC5B,GAAKumB,IAAM,IAAM3E,EAAI,GACtBA,EAAIC,GAAK7hB,EAAE,IAAM,WAAa,IAC7B,GAAKmf,IAAM,IAAMoH,EAAI,GACtBA,EAAI3E,GAAK5hB,EAAE,IAAM,SAAW,IAC3B,GAAK6hB,IAAM,GAAK1C,EAAI,EAQ/B0C,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI1C,EAAIoH,GAAKvmB,EAAE,GAAK,WAAa,IAC5B,EAAI4hB,IAAM,IAAMC,EAAI,GACrBA,EAAI1C,GAAKnf,EAAE,GAAK,WAAa,IAC5B,GAAKumB,IAAM,IAAM3E,EAAI,GACtBA,EAAIC,GAAK7hB,EAAE,GAAK,UAAY,IAC3B,GAAKmf,IAAM,IAAMoH,EAAI,GACtBA,EAAI3E,GAAK5hB,EAAE,IAAM,WAAa,IAC7B,GAAK6hB,IAAM,GAAK1C,EAAI,EAQ/B0C,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI1C,EAAIoH,GAAKvmB,EAAE,IAAM,UAAY,IAC5B,EAAI4hB,IAAM,IAAMC,EAAI,GACrBA,EAAI1C,GAAKnf,EAAE,GAAK,UAAY,IAC3B,GAAKumB,IAAM,IAAM3E,EAAI,GACtBA,EAAIC,GAAK7hB,EAAE,GAAK,UAAY,IAC3B,GAAKmf,IAAM,IAAMoH,EAAI,GACtBA,EAAI3E,GAAK5hB,EAAE,GAAK,SAAW,IAC1B,GAAK6hB,IAAM,GAAK1C,EAAI,EAQ/B0C,IADAA,KADA1C,IADAA,KADAoH,IADAA,KADA3E,IADAA,IAAMC,EAAI1C,EAAIoH,GAAKvmB,EAAE,GAAK,UAAY,IAC3B,EAAI4hB,IAAM,IAAMC,EAAI,GACrBA,EAAI1C,GAAKnf,EAAE,IAAM,UAAY,IAC5B,GAAKumB,IAAM,IAAM3E,EAAI,GACtBA,EAAIC,GAAK7hB,EAAE,IAAM,UAAY,IAC5B,GAAKmf,IAAM,IAAMoH,EAAI,GACtBA,EAAI3E,GAAK5hB,EAAE,GAAK,UAAY,IAC3B,GAAK6hB,IAAM,GAAK1C,EAAI,EAS/B0C,IADAA,KAHA0E,IADAA,IAAM1E,IADND,IADAA,IAAMzC,GAAK0C,GAAK0E,IAAMvmB,EAAE,GAAK,UAAY,IAC9B,EAAI4hB,IAAM,IAAMC,EAAI,IACf1C,IAAMnf,EAAE,GAAK,WAAa,IAC/B,GAAKumB,IAAM,IAAM3E,EAAI,KAEhCzC,IADAA,IAAMyC,GAAK2E,GAAK1E,IAAM7hB,EAAE,IAAM,WAAa,IAChC,GAAKmf,IAAM,IAAMoH,EAAI,IAChB3E,IAAM5hB,EAAE,GAAK,SAAW,IAC7B,GAAI6hB,IAAM,IAAM1C,EAAI,EAQ/B0C,IADAA,KAHA0E,IADAA,IAAM1E,IADND,IADAA,IAAMzC,GAAK0C,GAAK0E,IAAMvmB,EAAE,IAAM,WAAa,IAChC,EAAI4hB,IAAM,IAAMC,EAAI,IACf1C,IAAMnf,EAAE,GAAK,WAAa,IAC/B,GAAKumB,IAAM,IAAM3E,EAAI,KAEhCzC,IADAA,IAAMyC,GAAK2E,GAAK1E,IAAM7hB,EAAE,IAAM,QAAU,IAC7B,GAAKmf,IAAM,IAAMoH,EAAI,IAChB3E,IAAM5hB,EAAE,GAAK,WAAa,IAC/B,GAAI6hB,IAAM,IAAM1C,EAAI,EAQ/B0C,IADAA,KAHA0E,IADAA,IAAM1E,IADND,IADAA,IAAMzC,GAAK0C,GAAK0E,IAAMvmB,EAAE,GAAK,WAAa,IAC/B,EAAI4hB,IAAM,IAAMC,EAAI,IACf1C,IAAMnf,EAAE,IAAM,SAAW,IAC9B,GAAKumB,IAAM,IAAM3E,EAAI,KAEhCzC,IADAA,IAAMyC,GAAK2E,GAAK1E,IAAM7hB,EAAE,GAAK,WAAa,IAC/B,GAAKmf,IAAM,IAAMoH,EAAI,IAChB3E,IAAM5hB,EAAE,IAAM,WAAa,IAChC,GAAI6hB,IAAM,IAAM1C,EAAI,EAQ/B0C,IADAA,KAHA0E,IADAA,IAAM1E,IADND,IADAA,IAAMzC,GAAK0C,GAAK0E,IAAMvmB,EAAE,GAAK,UAAY,IAC9B,EAAI4hB,IAAM,IAAMC,EAAI,IACf1C,IAAMnf,EAAE,IAAM,WAAa,IAChC,GAAKumB,IAAM,IAAM3E,EAAI,KAEhCzC,IADAA,IAAMyC,GAAK2E,GAAK1E,IAAM7hB,EAAE,GAAK,UAAY,IAC9B,GAAKmf,IAAM,IAAMoH,EAAI,IAChB3E,IAAM5hB,EAAE,GAAK,UAAY,IAC9B,GAAK6hB,IAAM,IAAM1C,EAAI,EAEhC9S,EAAE,GAAKuV,EAAIvV,EAAE,GAAK,EAClBA,EAAE,GAAKwV,EAAIxV,EAAE,GAAK,EAClBA,EAAE,GAAK8S,EAAI9S,EAAE,GAAK,EAClBA,EAAE,GAAKka,EAAIla,EAAE,GAAK,EAGtB,SAASqsR,EAAOzwQ,GACZ,IACIjR,EADA2hR,EAAU,GAGd,IAAK3hR,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrB2hR,EAAQ3hR,GAAK,GAAKiR,EAAE7I,WAAWpI,IAAMiR,EAAE7I,WAAWpI,EAAI,IAAM,IAAMiR,EAAE7I,WAAWpI,EAAI,IAAM,KAAOiR,EAAE7I,WAAWpI,EAAI,IAAM,IAE3H,OAAO2hR,EAGX,SAASC,EAAah3Q,GAClB,IACI5K,EADA2hR,EAAU,GAGd,IAAK3hR,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrB2hR,EAAQ3hR,GAAK,GAAK4K,EAAE5K,IAAM4K,EAAE5K,EAAI,IAAM,IAAM4K,EAAE5K,EAAI,IAAM,KAAO4K,EAAE5K,EAAI,IAAM,IAE/E,OAAO2hR,EAGX,SAASE,EAAK5wQ,GACV,IAEIjR,EACA7S,EACAw5G,EACAt1B,EACAmE,EACAD,EAPAz/D,EAAI7E,EAAE9jB,OACN08B,EAAQ,CAAC,YAAa,WAAY,WAAY,WAQlD,IAAK7pB,EAAI,GAAIA,GAAK8V,EAAG9V,GAAK,GACtByhR,EAAS53P,EAAO63P,EAAOzwQ,EAAEoN,UAAUre,EAAI,GAAIA,KAK/C,IAFA7S,GADA8jB,EAAIA,EAAEoN,UAAUre,EAAI,KACT7S,OACXw5G,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChD3mG,EAAI,EAAGA,EAAI7S,EAAQ6S,GAAK,EACzB2mG,EAAK3mG,GAAK,IAAMiR,EAAE7I,WAAWpI,KAAQA,EAAI,GAAM,GAGnD,GADA2mG,EAAK3mG,GAAK,IAAM,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADAyhR,EAAS53P,EAAO88E,GACX3mG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrB2mG,EAAK3mG,GAAK,EAclB,OARAqxE,GADAA,EAAU,EAAJv7D,GACI7gB,SAAS,IAAIib,MAAM,kBAC7BslE,EAAKpsE,SAASioE,EAAI,GAAI,IACtBkE,EAAKnsE,SAASioE,EAAI,GAAI,KAAO,EAE7Bs1B,EAAK,IAAMnxB,EACXmxB,EAAK,IAAMpxB,EAEXksM,EAAS53P,EAAO88E,GACT98E,EAmDX,SAASi4P,EAAKhsQ,GACV,IACIoO,EADAjT,EAAI,GAER,IAAKiT,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACpBjT,GAAKuwQ,EAAS1rQ,GAAU,EAAJoO,EAAQ,EAAM,IAAQs9P,EAAS1rQ,GAAU,EAAJoO,EAAU,IAEvE,OAAOjT,EAGX,SAAS2zB,EAAIvvC,GACT,IAAI2K,EACJ,IAAKA,EAAI,EAAGA,EAAI3K,EAAElI,OAAQ6S,GAAK,EAC3B3K,EAAE2K,GAAK8hR,EAAKzsR,EAAE2K,IAElB,OAAO3K,EAAEuS,KAAK,IAmElB,SAASm6Q,EAAOrnQ,GAKZ,MAJI,kBAAkBnb,KAAKmb,KACvBA,EAAMsb,SAAShV,mBAAmBtG,KAG/BA,EA6BX,SAASsnQ,EAAkBp9O,GACvB,IAEIvvC,EAFAyhF,EAAQ,GACR3pF,EAASy3C,EAAIz3C,OAGjB,IAAKkI,EAAI,EAAGA,EAAIlI,EAAS,EAAGkI,GAAK,EAC7ByhF,EAAMjqF,KAAKuc,SAASw7B,EAAIv7B,OAAOhU,EAAG,GAAI,KAG1C,OAAOkS,OAAOC,aAAaC,MAAMF,OAAQuvE,GAY7C,SAASmrM,IAEL76R,KAAKy3B,QAwTT,OAhbI+lB,EAAIi9O,EAAK,UAgBc,oBAAhB97N,aAAgCA,YAAYn8D,UAAU6gB,OAC7D,WACI,SAASkrB,EAAMw+C,EAAKhnF,GAGhB,OAFAgnF,EAAa,EAANA,GAAY,GAET,EACCxtE,KAAK2vB,IAAI69C,EAAMhnF,EAAQ,GAG3BwZ,KAAK6vB,IAAI29C,EAAKhnF,GAGzB44D,YAAYn8D,UAAU6gB,MAAQ,SAAUqU,EAAM+9E,GAC1C,IAGIzgD,EACAhqB,EACA8vP,EACAC,EANAh1R,EAAS/F,KAAK++D,WACd2pC,EAAQn6D,EAAM7W,EAAM3xB,GACpB6kF,EAAM7kF,EAUV,OAnWS6L,YA+VL6jG,IACA7qB,EAAMr8C,EAAMknE,EAAI1vG,IAGhB2iG,EAAQ9d,EACD,IAAIjsB,YAAY,IAG3B3J,EAAM41B,EAAM8d,EACZ19D,EAAS,IAAI2zB,YAAY3J,GACzB8lO,EAAc,IAAIl8Q,WAAWosB,GAE7B+vP,EAAc,IAAIn8Q,WAAW5e,KAAM0oG,EAAO1zC,GAC1C8lO,EAAYv1R,IAAIw1R,GAET/vP,IAnCf,GAkHJ6vP,EAASr4R,UAAU+9E,OAAS,SAAUjtD,GAKlC,OAFAtzB,KAAKg7R,aAAaL,EAAOrnQ,IAElBtzB,MAUX66R,EAASr4R,UAAUw4R,aAAe,SAAUtY,GACxC1iR,KAAKi7R,OAASvY,EACd1iR,KAAKk7R,SAAWxY,EAAS38Q,OAEzB,IACI6S,EADA7S,EAAS/F,KAAKi7R,MAAMl1R,OAGxB,IAAK6S,EAAI,GAAIA,GAAK7S,EAAQ6S,GAAK,GAC3ByhR,EAASr6R,KAAKywC,MAAO6pP,EAAOt6R,KAAKi7R,MAAMhkQ,UAAUre,EAAI,GAAIA,KAK7D,OAFA5Y,KAAKi7R,MAAQj7R,KAAKi7R,MAAMhkQ,UAAUre,EAAI,IAE/B5Y,MAWX66R,EAASr4R,UAAUooF,IAAM,SAAUn8E,GAC/B,IAEImK,EAEA42E,EAJA2rM,EAAOn7R,KAAKi7R,MACZl1R,EAASo1R,EAAKp1R,OAEdw5G,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGzD,IAAK3mG,EAAI,EAAGA,EAAI7S,EAAQ6S,GAAK,EACzB2mG,EAAK3mG,GAAK,IAAMuiR,EAAKn6Q,WAAWpI,KAAQA,EAAI,GAAM,GAYtD,OATA5Y,KAAKo7R,QAAQ77K,EAAMx5G,GACnBypF,EAAMhyC,EAAIx9C,KAAKywC,OAEXhiC,IACA+gF,EAAMorM,EAAkBprM,IAG5BxvF,KAAKy3B,QAEE+3D,GAQXqrM,EAASr4R,UAAUi1B,MAAQ,WAKvB,OAJAz3B,KAAKi7R,MAAQ,GACbj7R,KAAKk7R,QAAU,EACfl7R,KAAKywC,MAAQ,CAAC,YAAa,WAAY,WAAY,WAE5CzwC,MAQX66R,EAASr4R,UAAU64R,SAAW,WAC1B,MAAO,CACHF,KAAMn7R,KAAKi7R,MACXl1R,OAAQ/F,KAAKk7R,QACbnsR,KAAM/O,KAAKywC,MAAMptB,UAWzBw3Q,EAASr4R,UAAU84R,SAAW,SAAU74P,GAKpC,OAJAziC,KAAKi7R,MAAQx4P,EAAM04P,KACnBn7R,KAAKk7R,QAAUz4P,EAAM18B,OACrB/F,KAAKywC,MAAQhO,EAAM1zB,KAEZ/O,MAOX66R,EAASr4R,UAAU0Z,QAAU,kBAClBlc,KAAKywC,aACLzwC,KAAKi7R,aACLj7R,KAAKk7R,SAShBL,EAASr4R,UAAU44R,QAAU,SAAU77K,EAAMx5G,GACzC,IACIkkF,EACAmE,EACAD,EAHAv1E,EAAI7S,EAMR,GADAw5G,EAAK3mG,GAAK,IAAM,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADAyhR,EAASr6R,KAAKywC,MAAO8uE,GAChB3mG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrB2mG,EAAK3mG,GAAK,EAOlBqxE,GADAA,EAAqB,EAAfjqF,KAAKk7R,SACDrtR,SAAS,IAAIib,MAAM,kBAC7BslE,EAAKpsE,SAASioE,EAAI,GAAI,IACtBkE,EAAKnsE,SAASioE,EAAI,GAAI,KAAO,EAE7Bs1B,EAAK,IAAMnxB,EACXmxB,EAAK,IAAMpxB,EACXksM,EAASr6R,KAAKywC,MAAO8uE,IAYzBs7K,EAAS9rR,KAAO,SAAUukB,EAAK7kB,GAG3B,OAAOosR,EAASU,WAAWZ,EAAOrnQ,GAAM7kB,IAW5CosR,EAASU,WAAa,SAAU53J,EAASl1H,GACrC,IACI+gF,EAAMhyC,EADCi9O,EAAK92J,IAGhB,OAAOl1H,EAAMmsR,EAAkBprM,GAAOA,GAU1CqrM,EAASl8N,YAAc,WAEnB3+D,KAAKy3B,SAUTojQ,EAASl8N,YAAYn8D,UAAU+9E,OAAS,SAAUrgE,GAC9C,IAEItH,EAhPyB8wE,EAAO8xM,EAAQC,EACxCn0R,EA6OA6zR,GA9OyBzxM,EA8OM1pF,KAAKi7R,MAAMp8Q,OA9OV28Q,EA8OkBt7Q,EA9OVu7Q,GA8Oe,GA7OvDn0R,EAAS,IAAIsX,WAAW8qE,EAAM3qB,WAAay8N,EAAOz8N,aAE/Cx5D,IAAI,IAAIqZ,WAAW8qE,IAC1BpiF,EAAO/B,IAAI,IAAIqZ,WAAW48Q,GAAS9xM,EAAM3qB,YAElC08N,EAAmBn0R,EAASA,EAAOuX,QAyOtC9Y,EAASo1R,EAAKp1R,OAKlB,IAFA/F,KAAKk7R,SAAWh7Q,EAAI6+C,WAEfnmD,EAAI,GAAIA,GAAK7S,EAAQ6S,GAAK,GAC3ByhR,EAASr6R,KAAKywC,MAAO+pP,EAAaW,EAAK76Q,SAAS1H,EAAI,GAAIA,KAK5D,OAFA5Y,KAAKi7R,MAASriR,EAAI,GAAM7S,EAAS,IAAI6Y,WAAWu8Q,EAAKt8Q,OAAOwE,MAAMzK,EAAI,KAAO,IAAIgG,WAAW,GAErF5e,MAWX66R,EAASl8N,YAAYn8D,UAAUooF,IAAM,SAAUn8E,GAC3C,IAGImK,EACA42E,EAJA2rM,EAAOn7R,KAAKi7R,MACZl1R,EAASo1R,EAAKp1R,OACdw5G,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAIzD,IAAK3mG,EAAI,EAAGA,EAAI7S,EAAQ6S,GAAK,EACzB2mG,EAAK3mG,GAAK,IAAMuiR,EAAKviR,KAAQA,EAAI,GAAM,GAY3C,OATA5Y,KAAKo7R,QAAQ77K,EAAMx5G,GACnBypF,EAAMhyC,EAAIx9C,KAAKywC,OAEXhiC,IACA+gF,EAAMorM,EAAkBprM,IAG5BxvF,KAAKy3B,QAEE+3D,GAQXqrM,EAASl8N,YAAYn8D,UAAUi1B,MAAQ,WAKnC,OAJAz3B,KAAKi7R,MAAQ,IAAIr8Q,WAAW,GAC5B5e,KAAKk7R,QAAU,EACfl7R,KAAKywC,MAAQ,CAAC,YAAa,WAAY,WAAY,WAE5CzwC,MAQX66R,EAASl8N,YAAYn8D,UAAU64R,SAAW,WACtC,IAnTyBF,EAmTrB14P,EAAQo4P,EAASr4R,UAAU64R,SAAS34R,KAAK1C,MAK7C,OAFAyiC,EAAM04P,MAtTmBA,EAsTQ14P,EAAM04P,KArThCh7Q,OAAOC,aAAaC,MAAM,KAAM,IAAIzB,WAAWu8Q,KAuT/C14P,GAUXo4P,EAASl8N,YAAYn8D,UAAU84R,SAAW,SAAU74P,GAIhD,OAFAA,EAAM04P,KAjVV,SAA6B7nQ,EAAKmoQ,GAC9B,IAGG7iR,EAHC7S,EAASutB,EAAIvtB,OACdo1R,EAAO,IAAIx8N,YAAY54D,GACvBma,EAAM,IAAItB,WAAWu8Q,GAGxB,IAAKviR,EAAI,EAAGA,EAAI7S,EAAQ6S,GAAK,EACzBsH,EAAItH,GAAK0a,EAAItS,WAAWpI,GAG5B,OAAO6iR,EAAmBv7Q,EAAMi7Q,EAuUnBO,CAAoBj5P,EAAM04P,MAAM,GAEtCN,EAASr4R,UAAU84R,SAAS54R,KAAK1C,KAAMyiC,IAGlDo4P,EAASl8N,YAAYn8D,UAAU0Z,QAAU2+Q,EAASr4R,UAAU0Z,QAE5D2+Q,EAASl8N,YAAYn8D,UAAU44R,QAAUP,EAASr4R,UAAU44R,QAU5DP,EAASl8N,YAAY5vD,KAAO,SAAUmR,EAAKzR,GACvC,IACI+gF,EAAMhyC,EA7ed,SAAoBh6B,GAChB,IAEI5K,EACA7S,EACAw5G,EACAt1B,EACAmE,EACAD,EAPAz/D,EAAIlL,EAAEzd,OACN08B,EAAQ,CAAC,YAAa,WAAY,WAAY,WAQlD,IAAK7pB,EAAI,GAAIA,GAAK8V,EAAG9V,GAAK,GACtByhR,EAAS53P,EAAO+3P,EAAah3Q,EAAElD,SAAS1H,EAAI,GAAIA,KAWpD,IAFA7S,GAFAyd,EAAK5K,EAAI,GAAM8V,EAAIlL,EAAElD,SAAS1H,EAAI,IAAM,IAAIgG,WAAW,IAE5C7Y,OACXw5G,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChD3mG,EAAI,EAAGA,EAAI7S,EAAQ6S,GAAK,EACzB2mG,EAAK3mG,GAAK,IAAM4K,EAAE5K,KAAQA,EAAI,GAAM,GAIxC,GADA2mG,EAAK3mG,GAAK,IAAM,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADAyhR,EAAS53P,EAAO88E,GACX3mG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrB2mG,EAAK3mG,GAAK,EAelB,OATAqxE,GADAA,EAAU,EAAJv7D,GACI7gB,SAAS,IAAIib,MAAM,kBAC7BslE,EAAKpsE,SAASioE,EAAI,GAAI,IACtBkE,EAAKnsE,SAASioE,EAAI,GAAI,KAAO,EAE7Bs1B,EAAK,IAAMnxB,EACXmxB,EAAK,IAAMpxB,EAEXksM,EAAS53P,EAAO88E,GAET98E,EA+bIk5P,CAAW,IAAI/8Q,WAAWsB,KAGrC,OAAOzR,EAAMmsR,EAAkBprM,GAAOA,GAGnCqrM,EA1uBcjpR,sCCFzB,IAAIpQ,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEV0tI,EAAsBtvI,MAAQA,KAAKsvI,qBAAwBpwI,OAAOuC,OAAS,SAAUC,EAAGi5B,GACxFz7B,OAAOC,eAAeuC,EAAG,UAAW,CAAEU,YAAY,EAAM/C,MAAOs7B,KAC9D,SAASj5B,EAAGi5B,GACbj5B,EAAW,QAAIi5B,IAEf40G,EAAgBvvI,MAAQA,KAAKuvI,cAAiB,SAAU98F,GACxD,GAAIA,GAAOA,EAAIxwC,WAAY,OAAOwwC,EAClC,IAAInrC,EAAS,GACb,GAAW,MAAPmrC,EAAa,IAAK,IAAI7wC,KAAK6wC,EAAe,YAAN7wC,GAAmB1C,OAAOsD,UAAUC,eAAeC,KAAK+vC,EAAK7wC,IAAIJ,EAAgB8F,EAAQmrC,EAAK7wC,GAEtI,OADA0tI,EAAmBhoI,EAAQmrC,GACpBnrC,GAEPiwE,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoS,KAAOpS,EAAQowI,WAAapwI,EAAQqwI,SAAWrwI,EAAQswI,QAAUtwI,EAAQuwI,QAAUvwI,EAAQwwI,eAAY,EAC/G,MAAMC,EAAkBt4D,EAAgB,EAAQ,OAChDn4E,EAAQwwI,UAAYC,EAAgBt4G,QACpC,MAAMo4G,EAAUJ,EAAa,EAAQ,QACrCnwI,EAAQuwI,QAAUA,EAClB,MAAMG,EAAYv4D,EAAgB,EAAQ,QAC1Cn4E,EAAQswI,QAAUI,EAAUv4G,QAC5B,MAAMw4G,EAAW,EAAQ,OACzB7wI,OAAOC,eAAeC,EAAS,WAAY,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO0tI,EAASN,YAClGvwI,OAAOC,eAAeC,EAAS,aAAc,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO0tI,EAASP,cACpG,MAAMp1H,EAASm9D,EAAgB,EAAQ,QACvCn4E,EAAQoS,KAAO4I,EAAOmd,oCCatB,IAAWy4G,EA5CA3tH,EAHXnjB,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4wI,gBAAkB5wI,EAAQijB,WAAQ,GAE/BA,EA0CAjjB,EAAQijB,QAAUjjB,EAAQijB,MAAQ,KAzC9B,IAAI,MACfA,EAAW,IAAI,MACfA,EAAW,IAAI,MACfA,EAAiB,UAAI,YACrBA,EAAgB,SAAI,WACpBA,EAAgB,SAAI,WACpBA,EAAkB,WAAI,aACtBA,EAAc,OAAI,SAClBA,EAAc,OAAI,SAClBA,EAAY,KAAI,OAChBA,EAAa,MAAI,QACjBA,EAAa,MAAI,QACjBA,EAAW,IAAI,MACfA,EAAY,KAAI,OAChBA,EAAiB,UAAI,WACrBA,EAAY,KAAI,OAChBA,EAAa,MAAI,QACjBA,EAAW,IAAI,MACfA,EAAW,IAAI,MACfA,EAAwB,iBAAI,gBAC5BA,EAAgB,SAAI,UACpBA,EAAY,KAAI,OAChBA,EAAe,QAAI,UACnBA,EAAe,QAAI,UACnBA,EAAe,QAAI,UACnBA,EAAW,IAAI,MACfA,EAAe,QAAI,UACnBA,EAAa,MAAI,QACjBA,EAAa,MAAI,QACjBA,EAAc,OAAI,SAClBA,EAAyB,kBAAI,iBAC7BA,EAAwB,iBAAI,gBAC5BA,EAAwB,iBAAI,kBAC5BA,EAAqB,cAAI,eACzBA,EAAY,KAAI,OAChBA,EAAa,MAAI,QACjBA,EAAc,OAAI,SAClBA,EAAY,KAAI,OAChBA,EAAW,IAAI,MACfA,EAAY,KAAI,OAChBA,EAAY,KAAI,QAGT2tH,EAOU5wI,EAAQ4wI,kBAAoB5wI,EAAQ4wI,gBAAkB,KAN5C,UAAI,YAC/BA,EAA2B,UAAI,YAC/BA,EAAuB,MAAI,QAC3BA,EAA0B,SAAI,WAC9BA,EAAsB,KAAI,OAC1BA,EAA0B,SAAI,+CCrDlC,IAAIxuI,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEV0tI,EAAsBtvI,MAAQA,KAAKsvI,qBAAwBpwI,OAAOuC,OAAS,SAAUC,EAAGi5B,GACxFz7B,OAAOC,eAAeuC,EAAG,UAAW,CAAEU,YAAY,EAAM/C,MAAOs7B,KAC9D,SAASj5B,EAAGi5B,GACbj5B,EAAW,QAAIi5B,IAEf40G,EAAgBvvI,MAAQA,KAAKuvI,cAAiB,SAAU98F,GACxD,GAAIA,GAAOA,EAAIxwC,WAAY,OAAOwwC,EAClC,IAAInrC,EAAS,GACb,GAAW,MAAPmrC,EAAa,IAAK,IAAI7wC,KAAK6wC,EAAe,YAAN7wC,GAAmB1C,OAAOsD,UAAUC,eAAeC,KAAK+vC,EAAK7wC,IAAIJ,EAAgB8F,EAAQmrC,EAAK7wC,GAEtI,OADA0tI,EAAmBhoI,EAAQmrC,GACpBnrC,GAEXpI,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtD,MAAMm8B,EAAI+zG,EAAa,EAAQ,QACzBphI,EAAqB,EAAQ,OAC7BxJ,EAAe,EAAQ,MACvBsrI,EAAa,EAAQ,MAoI3B7wI,EAAA,QAnIA,MACIK,YAAYkN,GACR3M,KAAK2M,YAAcA,GAAe,IAAIwB,EAAmBE,YACzDrO,KAAKkwI,WAAalwI,KAAKmwI,WAAW,2CAEtCC,UAAU5sI,EAAO0vG,GAAU,GAAQ,OAAOlzG,KAAKqwI,aAAa,CAAElqI,KAAMq1B,EAAEnZ,MAAMiuH,IAAK9sI,MAAAA,GAAS0vG,GAC1Fq9B,UAAU/sI,GAAS,MAAO,CAAE2C,KAAMq1B,EAAEnZ,MAAMmuH,IAAKhtI,MAAAA,GAC/CitI,qBAAqBlqI,EAAUmqI,EAAW39H,EAAY49H,EAAUprB,GAC5D,MAAMj+G,EAAStH,KAAK4wI,0BAA0BF,EAAW39H,EAAY49H,EAAUprB,GAE/E,OADAj+G,EAAOf,SAAWA,EACXe,EAEXupI,UAAUC,GAAY,MAAO,CAAE3qI,KAAMq1B,EAAEnZ,MAAM0uH,IAAKD,SAAAA,GAClDE,gBAAgBxtI,EAAOytI,GAAY,MAAO,CAAE9qI,KAAMq1B,EAAEnZ,MAAM6uH,UAAW1tI,MAAAA,EAAOytI,SAAAA,GAC5EE,eAAe3tI,EAAO40H,GAAS,MAAO,CAAEjyH,KAAMq1B,EAAEnZ,MAAM+uH,SAAU5tI,MAAAA,EAAO40H,MAAAA,GACvEiZ,eAAe7tI,GAAS,MAAO,CAAE2C,KAAMq1B,EAAEnZ,MAAMivH,SAAU9tI,MAAAA,GACzD+tI,aAAa/tI,EAAO+C,EAAUwM,GAAc,MAAO,CAAE5M,KAAMq1B,EAAEnZ,MAAMmvH,OAAQhuI,MAAAA,EAAO+C,SAAAA,EAAUwM,WAAAA,GAC5F0+H,WAAWjuI,EAAOkuI,EAAKC,GAAS,MAAO,CAAExrI,KAAMq1B,EAAEnZ,MAAMuvH,KAAMpuI,MAAAA,EAAO+zB,QAASm6G,EAAKC,MAAAA,GAClFE,aAAaruI,EAAOuP,GAAc,MAAO,CAAE5M,KAAMq1B,EAAEnZ,MAAMyvH,OAAQtuI,MAAAA,EAAOuP,WAAAA,GACxEg/H,YAAYvuI,EAAON,GAAQ,MAAO,CAAEiD,KAAMq1B,EAAEnZ,MAAM2vH,MAAOxuI,MAAAA,EAAON,KAAAA,GAChEgP,YAAY1O,EAAO8C,EAAW6L,GAAc,MAAO,CAAEhM,KAAMq1B,EAAEnZ,MAAM4vH,MAAOzuI,MAAAA,EAAO8C,UAAAA,EAAW6L,WAAAA,GAC5F+/H,UAAUxgI,GAAQ,MAAO,CAAEvL,KAAMq1B,EAAEnZ,MAAM8vH,IAAKzgI,KAAAA,GAC9C0gI,WAAW5uI,EAAO0vG,GAAU,GAAQ,OAAOlzG,KAAKqwI,aAAa,CAAElqI,KAAMq1B,EAAEnZ,MAAMgwH,KAAM7uI,MAAAA,GAAS0vG,GAC5Fo/B,eAAe7kI,EAAMC,EAAOqF,GACxB,OAAIA,EACO,CAAE5M,KAAMq1B,EAAEnZ,MAAMkwH,UAAW/uI,MAAO,CAACiK,EAAMC,GAAQqF,WAAAA,GACrD,CAAE5M,KAAMq1B,EAAEnZ,MAAMkwH,UAAW/uI,MAAO,CAACiK,EAAMC,IAEpD8kI,WAAWztD,GAAO,MAAO,CAAE5+E,KAAMq1B,EAAEnZ,MAAMowH,KAAM1tD,IAAAA,GAC/C2tD,YAAYjlI,EAAMC,GAAS,MAAO,CAAEvH,KAAMq1B,EAAEnZ,MAAMswH,MAAOnvI,MAAO,CAACiK,EAAMC,IACvEklI,YAAc,MAAO,CAAEzsI,KAAMq1B,EAAEnZ,MAAMwwH,KACrCC,UAAUC,GAAQ,MAAO,CAAE5sI,KAAMq1B,EAAEnZ,MAAM2wH,IAAKD,KAAAA,GAC9CE,oBAAoBvhI,GAAQ,MAAO,CAAEvL,KAAMq1B,EAAEnZ,MAAM6wH,iBAAkBxhI,KAAAA,GACrEyhI,cAAc3vI,EAAO4vI,GAAe,MAAO,CAAEjtI,KAAMq1B,EAAEnZ,MAAMgxH,SAAU7vI,MAAAA,EAAO4vI,YAAAA,GAC5EthI,WAAWpL,EAASC,EAAWC,EAAQC,GACnC,OAAIA,EACO,CAAEV,KAAMq1B,EAAEnZ,MAAMixH,KAAM5sI,QAAAA,EAASC,UAAAA,EAAWC,OAAAA,EAAQC,MAAAA,GACtD,CAAEV,KAAMq1B,EAAEnZ,MAAMixH,KAAM5sI,QAAAA,EAASC,UAAAA,EAAWC,OAAAA,EAAQC,MAAO7G,KAAK2M,YAAY0nH,gBAErFtiH,cAAcrL,EAASC,EAAWC,EAAQC,GACtC,MAAMT,EAAUpG,KAAK2M,YAAYnG,KAAKE,EAASC,EAAWC,EAAQC,GAElE,OADAT,EAAQD,KAAOq1B,EAAEnZ,MAAMkxH,QAChBntI,EAEXqM,cAAcjP,EAAO8C,GAAa,MAAO,CAAEH,KAAMq1B,EAAEnZ,MAAMmxH,QAAShwI,MAAAA,EAAO8C,UAAAA,GACzEmtI,cAAcjwI,GAAS,MAAO,CAAE2C,KAAMq1B,EAAEnZ,MAAMqxH,QAASlwI,MAAAA,GACvDmwI,UAAUnwI,EAAO0vG,GAAU,GAAQ,OAAOlzG,KAAKqwI,aAAa,CAAElqI,KAAMq1B,EAAEnZ,MAAMuxH,IAAKpwI,MAAAA,GAAS0vG,GAC1F2gC,cAAcrwI,EAAON,EAAM4wI,GAAU,MAAO,CAAE3tI,KAAMq1B,EAAEnZ,MAAM0xH,QAASvwI,MAAAA,EAAON,KAAAA,EAAM4wI,OAAQthI,QAAQshI,IAClGE,YAAYxwI,EAAOklC,EAAO3iC,GAEtB,OADA2iC,EAAQA,GAAS,OACF5mC,IAAXiE,EACO,CAAEI,KAAMq1B,EAAEnZ,MAAM4xH,MAAOzwI,MAAAA,EAAOklC,MAAAA,EAAO3iC,OAAAA,GACzC,CAAEI,KAAMq1B,EAAEnZ,MAAM4xH,MAAOzwI,MAAAA,EAAOklC,MAAAA,GAEzCwrG,YAAY1wI,EAAO0vG,GAAU,GAAQ,OAAOlzG,KAAKqwI,aAAa,CAAElqI,KAAMq1B,EAAEnZ,MAAM8xH,MAAO3wI,MAAAA,GAAS0vG,GAC9FpgG,aAAaxM,EAAWmF,GAAY,MAAO,CAAEtF,KAAMq1B,EAAEnZ,MAAM0pF,OAAQzlG,UAAAA,EAAWmF,SAAAA,GAC9E2oI,qBAAqB1iI,GAAQ,MAAO,CAAEvL,KAAMq1B,EAAEnZ,MAAMgyH,kBAAmB3iI,KAAAA,GACvE4iI,oBAAoB5iI,GAAQ,MAAO,CAAEvL,KAAMq1B,EAAEnZ,MAAMkyH,iBAAkB7iI,KAAAA,GACrEk/H,0BAA0B19H,EAAYH,EAAY49H,EAAUprB,GACxD,OAAIA,EACO,CAAEp/G,KAAMq1B,EAAEnZ,MAAMmyH,WAAYxhI,eAAgBwoB,EAAEw0G,gBAAgByE,UAAWvhI,WAAYA,EAAYH,WAAAA,EAAYwyG,UAAAA,EAAWorB,SAAAA,GAC5H,CAAExqI,KAAMq1B,EAAEnZ,MAAMmyH,WAAYxhI,eAAgBwoB,EAAEw0G,gBAAgByE,UAAWvhI,WAAYA,EAAYH,WAAAA,EAAY49H,SAAAA,GAExH+D,0BAA0BvkI,EAAK3M,GAAS,MAAO,CAAE2C,KAAMq1B,EAAEnZ,MAAMmyH,WAAYxhI,eAAgBwoB,EAAEw0G,gBAAgB2E,UAAWxkI,IAAAA,EAAK3M,MAAAA,GAC7HoxI,sBAAsB1xI,EAAMxD,GAAQ,MAAO,CAAEyG,KAAMq1B,EAAEnZ,MAAMmyH,WAAYxhI,eAAgBwoB,EAAEw0G,gBAAgB6E,MAAO3xI,KAAAA,EAAMxD,KAAAA,GACtHo1I,yBAAyBC,EAAUr1I,GAAQ,MAAO,CAAEyG,KAAMq1B,EAAEnZ,MAAMmyH,WAAYxhI,eAAgBwoB,EAAEw0G,gBAAgBgF,SAAUD,SAAAA,EAAUr1I,KAAAA,GACpIuT,qBAAqB7B,GAAQ,MAAO,CAAEjL,KAAMq1B,EAAEnZ,MAAMmyH,WAAYxhI,eAAgBwoB,EAAEw0G,gBAAgBiF,KAAM7jI,KAAAA,GACxG8jI,2BAA6B,MAAO,CAAE/uI,KAAMq1B,EAAEnZ,MAAMmyH,WAAYxhI,eAAgBwoB,EAAEw0G,gBAAgBmF,SAAUC,SAAU,IAAInF,EAAWoF,UACrIlF,WAAW78G,GACP,OAAO,EAAI3uB,EAAa62H,cAAcloG,EAAKtzB,KAAK2M,aAGpD2oI,sBAAsBC,GAAW,MAAO,CAAEpvI,KAAMq1B,EAAEnZ,MAAMmzH,iBAAkBD,QAAAA,GAC1EE,mBAAmBC,EAAaC,EAAaC,GACzC,MAAMtuI,EAAS,CAAEnB,KAAMq1B,EAAEnZ,MAAMwzH,eAO/B,OANIH,IACApuI,EAAOzD,OAAS6xI,GAChBC,IACAruI,EAAO82G,OAASu3B,GAChBC,IACAtuI,EAAOsuI,MAAQA,GACZtuI,EAEXwuI,WAAW5gI,EAAQC,EAAa2+H,GAC5B,MAAMxsI,EAAS,CAAEnB,KAAMq1B,EAAEnZ,MAAM0zH,KAAM7gI,OAAAA,GAGrC,OAFIC,IACA7N,EAAO6N,YAAcA,GAClBnV,KAAKg2I,UAAU1uI,EAAQkL,QAAQshI,IAE1CmC,YAAY/gI,EAAQ4+H,GAChB,OAAO9zI,KAAKg2I,UAAU,CAAE7vI,KAAMq1B,EAAEnZ,MAAM6zH,MAAOhhI,OAAAA,GAAU1C,QAAQshI,IAEnEqC,aAAajhI,EAAQ4+H,GACjB,OAAO9zI,KAAKg2I,UAAU,CAAE7vI,KAAMq1B,EAAEnZ,MAAM+zH,OAAQlhI,OAAAA,GAAU1C,QAAQshI,IAEpEuC,WAAWnhI,EAAQ4+H,GACf,OAAO9zI,KAAKg2I,UAAU,CAAE7vI,KAAMq1B,EAAEnZ,MAAMi0H,KAAMphI,OAAAA,GAAU1C,QAAQshI,IAElEyC,UAAUrhI,EAAQC,EAAa2+H,GAC3B,OAAO9zI,KAAKg2I,UAAU,CAAE7vI,KAAMq1B,EAAEnZ,MAAMm0H,IAAKthI,OAAAA,EAAQC,YAAAA,GAAe3C,QAAQshI,IAE9E2C,WAAWvhI,EAAQC,EAAa2+H,GAC5B,OAAO9zI,KAAKg2I,UAAU,CAAE7vI,KAAMq1B,EAAEnZ,MAAMq0H,KAAMxhI,OAAAA,EAAQC,YAAAA,GAAe3C,QAAQshI,IAE/E6C,WAAWzhI,EAAQC,EAAa2+H,GAC5B,OAAO9zI,KAAKg2I,UAAU,CAAE7vI,KAAMq1B,EAAEnZ,MAAMu0H,KAAM1hI,OAAAA,EAAQC,YAAAA,GAAe3C,QAAQshI,IAE/EkC,UAAUxyI,EAAOswI,GAGb,OAFIA,IACAtwI,EAAMswI,OAASA,GACZtwI,EAEX6sI,aAAa7sI,EAAO0vG,GAChB,IAAKA,EACD,OAAO1vG,EAEX,MAAM2C,EAAO3C,EAAM2C,KACbvB,EAAWpB,EAAMA,MACvB,IAAIqzI,EAAc,GAClB,IAAK,MAAM5wI,KAASrB,EACZqB,EAAME,OAASA,EACf0wI,EAAYpxI,QAAQQ,EAAMzC,OAG1BqzI,EAAYpxI,KAAKQ,GAIzB,OADAzC,EAAMA,MAAQqzI,EACPrzI,wCCxJf,IAAIhC,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEV0tI,EAAsBtvI,MAAQA,KAAKsvI,qBAAwBpwI,OAAOuC,OAAS,SAAUC,EAAGi5B,GACxFz7B,OAAOC,eAAeuC,EAAG,UAAW,CAAEU,YAAY,EAAM/C,MAAOs7B,KAC9D,SAASj5B,EAAGi5B,GACbj5B,EAAW,QAAIi5B,IAEf40G,EAAgBvvI,MAAQA,KAAKuvI,cAAiB,SAAU98F,GACxD,GAAIA,GAAOA,EAAIxwC,WAAY,OAAOwwC,EAClC,IAAInrC,EAAS,GACb,GAAW,MAAPmrC,EAAa,IAAK,IAAI7wC,KAAK6wC,EAAe,YAAN7wC,GAAmB1C,OAAOsD,UAAUC,eAAeC,KAAK+vC,EAAK7wC,IAAIJ,EAAgB8F,EAAQmrC,EAAK7wC,GAEtI,OADA0tI,EAAmBhoI,EAAQmrC,GACpBnrC,GAEPiwE,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQowI,WAAapwI,EAAQqwI,cAAW,EACxC,MAAMqH,EAAmB,EAAQ,OAC3BnyI,EAAe,EAAQ,MACvBsrI,EAAa,EAAQ,MACrBN,EAAUJ,EAAa,EAAQ,QAC/BO,EAAYv4D,EAAgB,EAAQ,QACpCn9D,EAASm9D,EAAgB,EAAQ,QACjCl1D,EAAQstH,EAAQttH,MAChB00H,EAASpH,EAAQK,gBACvB,IAAI7vI,EACJ,MAAMyR,EAAU,IAAIk+H,EAAUv4G,QAM9B,SAASi4G,EAAW79H,GAChBqlI,IAEA,IAAI1vI,EAAS2vI,EADbtlI,EAsqBJ,SAAqBA,GACjB,OAAOulI,EAAqBvlI,EAAI,IAvqB3BwlI,CAAYxlI,IAEjB,MAAoB,UAAhBrK,EAAOnB,KACAmB,EAAOwpI,SAAS,GACpBxpI,EAGX,SAAS0vI,IACL72I,EAAU,CAAEiS,SAAS,EAAOJ,OAAQ,GAAIC,MAAO,GAAIE,WAAY,GAAIilI,MAAO,IAE9E,SAASH,EAAmBtlI,GAMxB,OAFIA,EAAGxL,OAASkc,EAAMmvH,QAAU7/H,EAAGxL,OAASkc,EAAMgxH,UAAY1hI,EAAGxL,OAASkc,EAAM2vH,QAC5E7xI,EAAQiS,SAAU,GACdT,EAAGxL,MACP,KAAKkc,EAAMmyH,WAAY,OAAO6C,EAAoB1lI,GAClD,KAAK0Q,EAAMmuH,IAAK,OAAO8G,EAAiB3lI,EAAI0Q,EAAMmuH,KAClD,KAAKnuH,EAAM0uH,IAAK,OAqHxB,SAAsBp/H,GAClB,IAAIm/H,EAAWn/H,EAAGm/H,SAAS9qI,IAAIuxI,GAC/B,OAAwB,IAApBzG,EAAS/qI,OACF,KACJ,CACHI,KAAM,MACNqxI,QAAS1G,GA3Hc2G,CAAa9lI,GACpC,KAAK0Q,EAAM6uH,UAAW,OA6H9B,SAA4Bv/H,GACxB,MAAO,CACHxL,KAAM,QACNuxI,SAAU,GACVh8H,UAAW,YACXu1H,SAAUt/H,EAAGs/H,SAASjrI,IAAIuxI,GAC1B3B,MAAOx7H,EAAOmd,QAAQ27E,QAAQ,CAC1B+jC,EAAmBtlI,EAAGnO,UApIGm0I,CAAmBhmI,GAChD,KAAK0Q,EAAM+uH,SAAU,OAAOkG,EAAiB3lI,EAAI0Q,EAAM+uH,UACvD,KAAK/uH,EAAMivH,SAAU,OAsI7B,SAA2B3/H,GACvB,IAAIrK,EAAS2vI,EAAmBtlI,EAAGnO,OAGnC,OADA8D,EAAOwpI,SAAS,GAAGH,UAAW,EACvBrpI,EA1IyBswI,CAAkBjmI,GAC9C,KAAK0Q,EAAMmvH,OAAQ,OA2I3B,SAAyB7/H,GACrB,OAAIxR,EAAQiS,SACRjS,EAAQ6R,OAAOvM,KAAKkM,GACbslI,EAAmBtlI,EAAGnO,QAE1B4W,EAAOmd,QAAQ27E,QAAQ,CAC1B+jC,EAAmBtlI,EAAGnO,OACtB,CACI2C,KAAM,OACNI,SAAUoL,EAAGpL,SACbwM,WAAYskI,EAAoB1lI,EAAGoB,eArJb8kI,CAAgBlmI,GAC1C,KAAK0Q,EAAMuvH,KAAM,OAwJzB,SAAuBjgI,GACnB,MAAMrK,EAAS2vI,EAAmBtlI,EAAGnO,OAOrC,OALY8D,EAAOwpI,SAAS,GACxBp5G,KAAO,CACPH,QAAS5lB,EAAG4lB,QACZo6G,MAAOhgI,EAAGggI,OAEPrqI,EAhKqBwwI,CAAcnmI,GACtC,KAAK0Q,EAAMyvH,OAAQ,OAiK3B,SAAyBngI,GACrB,MAAO,CACHxL,KAAM,QACN2qI,SAAU12H,EAAOmd,QAAQ27E,QAAQ,CAC7B+jC,EAAmBtlI,EAAGnO,OACtB,CAAE2C,KAAM,SAAU4M,WAAYskI,EAAoB1lI,EAAGoB,gBAtK/BglI,CAAgBpmI,GAC1C,KAAK0Q,EAAM2vH,MAAO,OAyK1B,SAAwBrgI,GACpB,MAAO,CACHxL,KAAM,QACN2qI,SAAU12H,EAAOmd,QAAQ27E,QAAQ,CAAC+jC,EAAmBtlI,EAAGnO,SACxDN,KAAMyO,EAAGzO,MA7KgB80I,CAAermI,GACxC,KAAK0Q,EAAM4vH,MAAO,OA+K1B,SAAwBtgI,GACpB,MAAMnO,EAAQyzI,EAAmBtlI,EAAGnO,OAC9By0I,EAAOtmI,EAAGQ,WAAWnM,IAAIkyI,GAI/B,OAHA/3I,EAAQgS,WAAW1M,QAAQwyI,GAE3B93I,EAAQ8R,MAAMxM,QAAQkM,EAAGrL,WAClB9C,EArLsB20I,CAAexmI,GACxC,KAAK0Q,EAAMgwH,KAAM,OAsLzB,SAAuB1gI,GAInB,OAHYyI,EAAOmd,QAAQ27E,QAAQvhG,EAAGnO,MAAMwC,IAAIixI,IAGrC19H,QAAO,CAACjS,EAAQylF,KACN,QAAbA,EAAI5mF,MAAmC,GAAjBmB,EAAOvB,QAAkD,QAAnCuB,EAAOA,EAAOvB,OAAS,GAAGI,KACtEmB,EAAO7B,KAAKsnF,GAGZzlF,EAAOA,EAAOvB,OAAS,GAAGyxI,QAAQ/xI,QAAQsnF,EAAIyqD,SAE3ClwI,IACR,IAlMyB8wI,CAAczmI,GACtC,KAAK0Q,EAAMkwH,UAAW,OAmM9B,SAA2B5gI,GACvB,MAAM0mI,EAAW,CACblyI,KAAM,WACN2qI,SAAU,CACNmG,EAAmBtlI,EAAGnO,MAAM,MAUpC,OAPImO,EAAGoB,YACHslI,EAASvH,SAASrrI,KAAK,CACnBU,KAAM,SACN4M,WAAYskI,EAAoB1lI,EAAGoB,cAG3CslI,EAASvH,SAAW12H,EAAOmd,QAAQ27E,QAAQmlC,EAASvH,UAC7C12H,EAAOmd,QAAQ27E,QAAQ,CAC1B+jC,EAAmBtlI,EAAGnO,MAAM,IAC5B60I,IAnN6BC,CAAkB3mI,GAC/C,KAAK0Q,EAAMswH,MAAO,OAqN1B,SAAwBhhI,GACpB,IAAIm/H,EAAWmG,EAAmBtlI,EAAGnO,MAAM,IAK3C,MAJsB,UAAlBstI,EAAS3qI,OACT2qI,EAAWA,EAASA,UACnBh1H,MAAMC,QAAQ+0H,KACfA,EAAW,CAACA,IACT12H,EAAOmd,QAAQ27E,QAAQ,CAC1B+jC,EAAmBtlI,EAAGnO,MAAM,IAC5B,CACI2C,KAAM,QACN2qI,SAAUA,KA/NWyH,CAAe5mI,GACxC,KAAK0Q,EAAMwwH,IAAK,MAAO,GACvB,KAAKxwH,EAAMgxH,SAAU,OAiO7B,SAA0B1hI,GAEtB,OADAxR,EAAQi3I,MAAM3xI,QAAQkM,EAAGyhI,aAClB6D,EAAmBtlI,EAAGnO,OAnOGg1I,CAAiB7mI,GAC7C,KAAK0Q,EAAMixH,KAAM,OAoOzB,SAAuB3hI,GACnB,MAAO,CACHxL,KAAM,MACNqxI,QAAS,CAAC,CACF9wI,QAASiL,EAAGjL,QACZC,UAAW8xI,EAAuB9mI,EAAGhL,WACrCC,OAAQ+K,EAAG/K,UA1OK8xI,CAAc/mI,GACtC,KAAK0Q,EAAMkxH,QAAS,OAAOgE,EAAiB5lI,GAC5C,KAAK0Q,EAAMmxH,QAAS,OAAO8D,EAAiB3lI,EAAI0Q,EAAMmxH,SACtD,KAAKnxH,EAAMqxH,QAAS,OAkW5B,SAA0B/hI,GACtB,IAAIrK,EAAS2vI,EAAmBtlI,EAAGnO,OAGnC,OADA8D,EAAOwpI,SAAS,GAAG6H,SAAU,EACtBrxI,EAtWwBsxI,CAAiBjnI,GAC5C,KAAK0Q,EAAM0xH,QAAS,OAuW5B,SAA0BpiI,GACtB,IAAIm/H,EAAWmG,EAAmBtlI,EAAGnO,OAKrC,MAJsB,UAAlBstI,EAAS3qI,OACT2qI,EAAWA,EAASA,UACnBh1H,MAAMC,QAAQ+0H,KACfA,EAAW,CAACA,IACT,CACH3qI,KAAM,UAENjD,KAAMyO,EAAGzO,KACT4wI,OAAQniI,EAAGmiI,OACXhD,SAAAA,GAlX2B+H,CAAiBlnI,GAC5C,KAAK0Q,EAAM4xH,MAAO,OAoX1B,SAAwBtiI,GACpB,IAAIrK,EAAS2vI,EAAmBtlI,EAAGnO,OAE/B04C,EAAM50C,EAOV,OANIA,EAAOnB,MAAwB,UAAhBmB,EAAOnB,OACtB+1C,EAAM50C,EAAOwpI,SAAS,IACT,IAAbn/H,EAAG+2B,QACHwT,EAAI/8B,OAASxN,EAAG+2B,YACF5mC,IAAd6P,EAAG5L,SACHm2C,EAAI5/B,MAAQ3K,EAAG5L,QACZuB,EA9XsBwxI,CAAennI,GACxC,KAAK0Q,EAAM8xH,MAAO,OA+X1B,SAAwBxiI,GACpB,MAAO,CACHxL,KAAM,QACN2qI,SAAU12H,EAAOmd,QAAQ27E,QAAQvhG,EAAGnO,MAAMwC,IAAIixI,KAlYrB8B,CAAepnI,GACxC,KAAK0Q,EAAM0pF,OAAQ,OAoY3B,SAAyBp6F,GAErB,MAAO,CACHxL,KAAM,SACN4G,OAAQ4E,EAAGlG,SAASzF,KAAIsM,IACpB,IAAIhL,EAAS,GACb,IAAK,IAAIqzB,KAAKhpB,EAAGrL,UAAW,CACxB,IAAIujB,EAAI,IAAI8Q,EAAEt7B,QACViT,EAAQuX,GACRviB,EAAOuiB,GAAKvX,EAAQuX,GAEpBviB,EAAOuiB,QAAK/nB,EAEpB,OAAOwF,MAjZe0xI,CAAgBrnI,GAE1C,KAAK0Q,EAAMmzH,iBAAkB,OAyfrC,SAAkC7jI,GAK9B,MAAO,CAAE+lI,SAAU,GAAIvxI,KAAM,SAAUovI,QAJvB5jI,EAAG4jI,QAAQvvI,KAAIypC,GACZwnG,EAAmBxnG,GACpB8lG,QAAQ,MA5fc0D,CAAyBtnI,GAC7D,KAAK0Q,EAAMwzH,cAAe,OA+flC,SAA+BlkI,GAC3B,IAAIsP,EACJ,IACIi4H,EADAtD,EAAQjkI,EAAGikI,MAEf,GAAIA,GAASA,EAAMzvI,OAASkc,EAAMuvH,KAAM,CACpC,IAAIl6G,EAAOk+G,EACXA,EAAQl+G,EAAKl0B,MACb01I,EAAQ,CAAE3hH,QAASG,EAAKH,QAASo6G,MAAOj6G,EAAKi6G,OAEjD,MAAM4D,EAAU,CAAC,CACT4D,WAAY,eACZt1I,OAAQu1I,EAAsBznI,EAAG9N,QAAU,IAC3Cu6G,OAAQg7B,EAAsBznI,EAAGysG,QAAU,MAMnD,GAHI86B,IACA3D,EAAQ,GAAG2D,MAAQA,IAElBtD,GAAUA,EAAMzvI,OAASkc,EAAM0uH,KAAiC,IAA1B6E,EAAM9E,SAAS/qI,OACtDwvI,EAAQ,GAAGK,MAAQ,OAClB,CACD,MAAMyD,EAAS,GACf,IAAI/xI,EAAS2vI,EAAmBC,EAAqBtB,EAAOyD,IACxC,UAAhB/xI,EAAOnB,KACPovI,EAAQ,GAAGK,MAAQtuI,EAAOwpI,SAE1ByE,EAAQ,GAAGK,MAAQ,CAACtuI,GAGxB,MAAMgyI,EAAap6I,OAAO0N,KAAKysI,GAC/B,GAAIC,EAAWvzI,OAAS,EAAG,CACvB,GAA0B,IAAtBuzI,EAAWvzI,OACX,MAAM,IAAIvF,MAAM,iFACpB,MAAM+4I,EAA6C,QAAhCt4H,EAAKo4H,EAAOC,EAAW,WAAwB,IAAPr4H,OAAgB,EAASA,EAAGpa,MAEnF0yI,GAAiC,KAApBA,EAAUl6I,QACvBk2I,EAAQ,GAAGK,MAAQ,CAAC,CAAEzvI,KAAM,QAAS2qI,SAAUyE,EAAQ,GAAGK,MAAO1yI,KAAMq2I,MAyBnF,OArBK5nI,EAAG9N,QAAW8N,EAAGikI,MAKZjkI,EAAGysG,QAAWzsG,EAAGikI,OAUjBjkI,EAAGysG,QAAUzsG,EAAGikI,OAA2B,QAAlBjkI,EAAGikI,MAAMzvI,OACpC,EAAI2wI,EAAiB9gB,YAAYrkH,EAAG9N,OAAQ8N,EAAGikI,MAAM9E,mBAC9CyE,EAAQ,GAAGK,MAClBL,EAAQ,GAAG4D,WAAa,uBAZrB5D,EAAQ,GAAGn3B,cACXm3B,EAAQ,GAAGK,MACdjkI,EAAG9N,OAAO2lB,MAAKpjB,GAAwC,aAA7BA,EAAQM,QAAQI,UACX,aAA/BV,EAAQO,UAAUG,UACU,aAA5BV,EAAQQ,OAAOE,WACfyuI,EAAQ,GAAG4D,WAAa,cAExB5D,EAAQ,GAAG4D,WAAa,WAZ5B5D,EAAQ,GAAG4D,WAAa,gBACjB5D,EAAQ,GAAG1xI,cACX0xI,EAAQ,GAAGK,OAkBf,CAAE8B,SAAU,GAAIvxI,KAAM,SAAUovI,QAAAA,GA5jBFiE,CAAsB7nI,GACvD,KAAK0Q,EAAM0zH,KAAM,OA6jBzB,SAAuBpkI,GAEnB,MAAM4jI,EAAU,CAAC,CAAEpvI,KAAM,OAAQ2tI,OAAQthI,QAAQb,EAAGmiI,QAAS5+H,OAAQvD,EAAGuD,SAGxE,OAFIvD,EAAGwD,cACHogI,EAAQ,GAAGpgI,YAAcxD,EAAGwD,aACzB,CAAEuiI,SAAU,GAAIvxI,KAAM,SAAUovI,QAAAA,GAlkBXkE,CAAc9nI,GACtC,KAAK0Q,EAAM6zH,MAAO,OAmkB1B,SAAwBvkI,GACpB,OAAO+nI,EAAyB/nI,EAAI,SApkBPgoI,CAAehoI,GACxC,KAAK0Q,EAAM+zH,OAAQ,OAqkB3B,SAAyBzkI,GACrB,OAAO+nI,EAAyB/nI,EAAI,UAtkBNioI,CAAgBjoI,GAC1C,KAAK0Q,EAAMi0H,KAAM,OAukBzB,SAAuB3kI,GACnB,OAAO+nI,EAAyB/nI,EAAI,QAxkBRkoI,CAAcloI,GACtC,KAAK0Q,EAAMm0H,IAAK,OAslBxB,SAAsB7kI,GAClB,OAAOmoI,EAA6BnoI,EAAI,OAvlBbooI,CAAapoI,GACpC,KAAK0Q,EAAMq0H,KAAM,OAwlBzB,SAAuB/kI,GACnB,OAAOmoI,EAA6BnoI,EAAI,QAzlBZqoI,CAAcroI,GACtC,KAAK0Q,EAAMu0H,KAAM,OA0lBzB,SAAuBjlI,GACnB,OAAOmoI,EAA6BnoI,EAAI,QA3lBZsoI,CAActoI,GAE1C,MAAM,IAAInR,MAAM,0BAA0BmR,EAAGxL,QAEjD,SAASkxI,EAAoBtnI,GACzB,OAAQA,EAAKiD,gBACT,KAAK+jI,EAAOtC,UAAW,OA0B/B,SAAsC1kI,GAClC,MAAMzI,EAAS,CACXyL,WAAYskI,EAAoBtnI,EAAKgD,YACrC5M,KAAM,YACN+zI,YAAanqI,EAAKmD,WAClBy9H,SAAU5gI,EAAK4gI,UAInB,OAFI5gI,EAAKw1G,YACLj+G,EAAOi+G,UAAYx1G,EAAKw1G,WACrBj+G,EAnC2B6yI,CAA6BpqI,GAC3D,KAAKgnI,EAAOpC,UAAW,OAoC/B,SAAsC5kI,GAClC,MAAO,CACH5J,KAAM,YACN4uI,SAAUhlI,EAAKI,IAAM,YAAc,SACnCzQ,KAAM0a,EAAOmd,QAAQ27E,QAAQ,CACzB+jC,EAAmBlnI,EAAKvM,UAzCE42I,CAA6BrqI,GAC3D,KAAKgnI,EAAOlC,MAAO,OA4C3B,SAAkC9kI,GAC9B,MAAO,CACH5J,KAAM,eAENk0I,SAAUtqI,EAAK7M,KACfxD,KAAMqQ,EAAKrQ,KAAKsG,IAAIqxI,IAjDMiD,CAAyBvqI,GACnD,KAAKgnI,EAAO/B,SAAU,OAmD9B,SAAqCjlI,GACjC,GAAsB,SAAlBA,EAAKglI,SAAqB,CAG1B,MAFe,CAAEhiI,WAAYskI,EAAoBtnI,EAAKrQ,KAAK,IAC3D4H,YAAoB,GAGxB,MAAMA,EAAS,CACXnB,KAAM,YACN4uI,SAAUhlI,EAAKglI,SACfr1I,KAAMqQ,EAAKrQ,KAAKsG,IAAIqxI,IAIxB,MAFwB,OAApB/vI,EAAOytI,UAAyC,UAApBztI,EAAOytI,WACnCztI,EAAO5H,KAAO,CAAC4H,EAAO5H,KAAK,IAAI+e,OAAO,CAACnX,EAAO5H,KAAK2jB,MAAM,MACtD/b,EAhE0BizI,CAA4BxqI,GACzD,KAAKgnI,EAAO9B,KAAM,OAiE1B,SAAiCllI,GAC7B,OAAOA,EAAKqB,KAlEiBopI,CAAwBzqI,GACjD,KAAKgnI,EAAO5B,SAAU,OAmE9B,SAAqCplI,GACjC,OAAOA,EAAKqlI,SApEqBqF,CAA4B1qI,GAE7D,MAAM,IAAIvP,MAAM,qCAAqCuP,EAAKiD,kBAE9D,SAASylI,EAAuB/mI,GAC5B,OAAQA,EAAKvL,MACT,KAAKkc,EAAMiuH,IAAK,OA2XxB,SAAsB5+H,GAClB,MAAM+xG,EAAS/xG,EAAKlO,MAAMwC,IAAIyyI,GAC9B,OAAIh1B,EAAOz1F,OAAMzb,GAAS,aAAcA,GAA4B,MAAnBA,EAAMmoI,WAC5C,CACHv0I,KAAM,OACNu0I,SAAU,IACV5lD,MAAO,CAAC,CACA3uF,KAAM,OACNu0I,SAAU,IACV5lD,MAAO16E,EAAOmd,QAAQ27E,QAAQuQ,EAAOz9G,KAAIuM,GAASA,EAAMuiF,YAIjE,CACH3uF,KAAM,OACNu0I,SAAU,IACV5lD,MAAO2uB,GA3YgBk3B,CAAajpI,GACpC,KAAK2Q,EAAM8vH,IAAK,OA6YxB,SAAsBzgI,GAClB,GAAIA,EAAKA,KAAKvL,OAASkc,EAAM2wH,IAAK,CAC9B,MAAM4H,EAAMlpI,EAAKA,KAAKqhI,KAAK/sI,KAAK++E,IACrB,CACH5+E,KAAM,OACNu0I,SAAU,IACV5lD,MAAO,CAAC/P,OAGhB,OAAI61D,EAAI70I,QAAU,EACP,CACHI,KAAM,OACNu0I,SAAU,IACV5lD,MAAO8lD,GAER,CACHz0I,KAAM,OACNu0I,SAAU,IACV5lD,MAAO,CAAC,CACA3uF,KAAM,OACNu0I,SAAU,IACV5lD,MAAO8lD,KAIvB,MAAO,CACHz0I,KAAM,OACNu0I,SAAU,IACV5lD,MAAO,CAAC2jD,EAAuB/mI,EAAKA,QAzabmpI,CAAanpI,GACpC,KAAK2Q,EAAMowH,KAAM,OA2azB,SAAuB/gI,GACnB,OAAOA,EAAKqzE,IA5agB+1D,CAAcppI,GACtC,KAAK2Q,EAAM2wH,IAAK,OA6axB,SAAsBthI,GAClB,OAAIA,EAAKqhI,KAAKhtI,QAAU,EACb,CACHI,KAAM,OACNu0I,SAAU,IACV5lD,MAAOpjF,EAAKqhI,MAEb,CACH5sI,KAAM,OACNu0I,SAAU,IACV5lD,MAAO,CAAC,CACA3uF,KAAM,OACNu0I,SAAU,IACV5lD,MAAOpjF,EAAKqhI,QA1bGgI,CAAarpI,GACpC,KAAK2Q,EAAM6wH,iBAAkB,OA6brC,SAAgCxhI,GAC5B,MAAO,CACHvL,KAAM,OACNu0I,SAAU,IACV5lD,MAAO,CAAC2jD,EAAuB/mI,EAAKA,QAjcAspI,CAAuBtpI,GAC3D,KAAK2Q,EAAMuxH,IAAK,OAmcxB,SAAsBliI,GAClB,MAAO,CACHvL,KAAM,OACNu0I,SAAU,IACV5lD,MAAOpjF,EAAKlO,MAAMwC,IAAIyyI,IAvcCwC,CAAavpI,GACpC,KAAK2Q,EAAMgyH,kBAAmB,OAyctC,SAAiC3iI,GAC7B,MAAO,CACHvL,KAAM,OACNu0I,SAAU,IACV5lD,MAAO,CAAC2jD,EAAuB/mI,EAAKA,QA7cCwpI,CAAwBxpI,GAC7D,KAAK2Q,EAAMkyH,iBAAkB,OA+crC,SAAgC7iI,GAE5B,MAAO,CACHvL,KAAM,OAENu0I,SAAU,IACV5lD,MAAO,CAAC2jD,EAAuB/mI,EAAKA,QArdAypI,CAAuBzpI,GAE/D,MAAM,IAAIlR,MAAM,qBAAqBkR,EAAKvL,QAE9C,SAASi1I,EAAchqI,GACnB,OAAO,EAAIzM,EAAa8B,cAAc2K,GAsD1C,SAAS8mI,EAAwBvmI,GAC7B,OAAOA,EAyIX,SAAS4lI,EAAiB5lI,GACtB,MAAO,CACHjL,QAASiL,EAAGjL,QACZC,UAAWgL,EAAGhL,UACdC,OAAQ+K,EAAG/K,QAGnB,SAASy0I,EAA2BxxH,EAAG7jB,GACnC,IAAIs1I,EAAKlhI,EAAOmd,QAAQgkH,aAAa1xH,GAAKuxH,EAAcvxH,GAAKA,EAC7D,GAAkB,iBAAPyxH,GACP,GAAIt1I,EAAIs1I,GACJ,OAAOt1I,EAAIs1I,QAEd,GAAIx/H,MAAMC,QAAQ8N,GACnBA,EAAIA,EAAE7jB,KAAIyoB,GAAK4sH,EAA2B5sH,EAAGzoB,UAG7C,IAAK,IAAI7E,KAAOjC,OAAO0N,KAAKid,GACxBA,EAAE1oB,GAAOk6I,EAA2BxxH,EAAE1oB,GAAM6E,GAEpD,OAAO6jB,EAEX,SAASytH,EAAiB3lI,EAAIxL,GAC1B,MAAMmB,EAAS,CACXnB,KAAM,QACNuxI,SAAU,IAGR8D,EAASl0I,EACf,IAAIhB,EACAH,IAASkc,EAAMmxH,SACflsI,EAAOoU,UAAY,SACnBpV,EAAYqL,EAAGrL,WAEVH,IAASkc,EAAMmuH,IACpBlpI,EAAOoU,UAAY,MAEdvV,IAASkc,EAAM+uH,WACpB9pI,EAAOoU,UAAY,WACnBpV,EAAYqL,EAAGymH,OAInB,MAAMpmH,EAAS7R,EAAQ6R,OACjBC,EAAQ9R,EAAQ8R,MAChBE,EAAahS,EAAQgS,WACrBilI,EAAQj3I,EAAQi3I,MACtBJ,IACA72I,EAAQiS,SAAU,EAClB,IAAI5O,EAAQ4W,EAAOmd,QAAQ27E,QAAQ,CAAC+jC,EAAmBtlI,EAAGnO,SACrC,IAAjBA,EAAMuC,QAAkC,UAAlBvC,EAAM,GAAG2C,OAC/B3C,EAAQA,EAAM,GAAGstI,UACrBxpI,EAAOsuI,MAAQpyI,EACf,IAAIi4I,EAAc,GAElB,IAAK,IAAIC,KAAOv7I,EAAQgS,WACpBspI,EAAYL,EAAcM,EAAIn1I,WAAa8wI,EAAoBqE,GAEnE,IAAIC,EAAa,GACjB,IAAK,IAAI/iI,EAAIzY,EAAQ6R,OAAOjM,OAAS,EAAG6S,GAAK,IAAKA,EAAG,CACjD,IAAI6V,EAAItuB,EAAQ6R,OAAO4G,GACvB+iI,EAAWP,EAAc3sH,EAAEloB,WAAa80I,EAA2BhE,EAAoB5oH,EAAE1b,YAAa0oI,GAmC1G,GAjCIt7I,EAAQ8R,MAAMlM,OAAS,IACvBy1I,EAAOvpI,MAAQ9R,EAAQ8R,MAAMjM,KAAIO,IAC7B,IAAIo0B,EAAIygH,EAAc70I,GACtB,GAAIo1I,EAAWhhH,GAAI,CACf,IAAIrzB,EAASq0I,EAAWhhH,GAExB,cADOghH,EAAWhhH,GACX,CACHp0B,SAAAA,EACAwM,WAAYzL,GAGpB,MAAO,CAAEyL,WAAYxM,OAGzBpG,EAAQi3I,MAAMrxI,OAAS,IACvBy1I,EAAOpE,MAAQj3I,EAAQi3I,MAAMpxI,IAAIixI,GAAoBjxI,KAAItE,GAAKA,EAAEk6I,WAAal6I,EAAI,CAAGqR,WAAYrR,MAEhG4E,IACAk1I,EAAOl1I,UAAYA,EAAUN,KAAKoL,IAC9B,IAAIupB,EAAIygH,EAAchqI,GACtB,OAAIuqI,EAAWhhH,GACJ,CACHp0B,SAAU6K,EACV2B,WAAY4oI,EAAWhhH,IAExBvpB,KAGqB,IAA5BoqI,EAAOl1I,UAAUP,SACjBy1I,EAAOl1I,UAAY,CAAC,IAAI2pI,EAAWoF,YAIvC/tI,EAAOsuI,MAAM7vI,OAAS,GAAoD,WAA/CuB,EAAOsuI,MAAMtuI,EAAOsuI,MAAM7vI,OAAS,GAAGI,KAAmB,CACpF,MAAMmH,EAAShG,EAAOsuI,MAAMtuI,EAAOsuI,MAAM7vI,OAAS,GAC9C81I,EAAqBvuI,EAAQpO,OAAO0N,KAAK6uI,MACzCD,EAAOM,OAAS1hI,EAAOmd,QAAQ27E,QAAQ,CAACmoC,EAA2B/tI,EAAOyF,WAAY0oI,KACtFn0I,EAAOsuI,MAAM79H,QAAQ,IAQ7B,OALA5X,EAAQ6R,OAASA,EACjB7R,EAAQ8R,MAAQA,EAChB9R,EAAQgS,WAAaA,EACrBhS,EAAQi3I,MAAQA,EAET,CAAEjxI,KAAM,QAAS2qI,SAAU,CAAC0K,IAEvC,SAASK,EAAqBn6I,EAAGq6I,GAC7B,OAAI3hI,EAAOmd,QAAQgkH,aAAa75I,GACrBq6I,EAAKjkI,QAAQsjI,EAAc15I,KAAO,EACzCoa,MAAMC,QAAQra,GACPA,EAAE8nB,MAAKiF,GAAKotH,EAAqBptH,EAAGstH,KAC3Cr6I,IAAMxC,OAAOwC,GACNxC,OAAO0N,KAAKlL,GAAG8nB,MAAKroB,GAAO06I,EAAqBn6I,EAAEP,GAAM46I,KAC5DA,EAAKjkI,QAAQpW,IAAM,EAqP9B,SAASg4I,EAAyB/nI,EAAIxL,GAClC,MAAMovI,EAAU,CAAC,CAAEpvI,KAAAA,EAAM2tI,OAAQthI,QAAQb,EAAGmiI,UAU5C,MARkB,YAAdniI,EAAGuD,OACHqgI,EAAQ,GAAG1uI,MAAQ,CAAE0wB,SAAS,GACX,UAAd5lB,EAAGuD,OACRqgI,EAAQ,GAAG1uI,MAAQ,CAAE8qI,OAAO,GACT,QAAdhgI,EAAGuD,OACRqgI,EAAQ,GAAG1uI,MAAQ,CAAE+rB,KAAK,GAE1B2iH,EAAQ,GAAG1uI,MAAQ,CAAEV,KAAM,QAASjD,KAAMyO,EAAGuD,QAC1C,CAAEwiI,SAAU,GAAIvxI,KAAM,SAAUovI,QAAAA,GAW3C,SAASuE,EAA6BnoI,EAAIxL,GACtC,MAAMovI,EAAU,CAAC,CAAEpvI,KAAAA,EAAM2tI,OAAQthI,QAAQb,EAAGmiI,UAG5C,OAFAyB,EAAQ,GAAGrgI,OAAuB,YAAdvD,EAAGuD,OAAuB,CAAE/O,KAAM,QAASoxB,SAAS,GAAS,CAAEpxB,KAAM,QAASjD,KAAMyO,EAAGuD,QAC3GqgI,EAAQ,GAAGpgI,YAAiC,YAAnBxD,EAAGwD,YAA4B,CAAEhP,KAAM,QAASoxB,SAAS,GAAS,CAAEpxB,KAAM,QAASjD,KAAMyO,EAAGwD,aAC9G,CAAEuiI,SAAU,GAAIvxI,KAAM,SAAUovI,QAAAA,GAG3C,SAAS6D,EAAsBtI,GAC3B,IAAKA,EACD,MAAO,GACX,MAAMuI,EAAS,GAOf,OANAvI,EAAS5vI,SAAQkF,IACb,MAAMS,EAAQT,EAAQS,MAAMxH,MACvBg6I,EAAOxyI,KACRwyI,EAAOxyI,GAAS,IACpBwyI,EAAOxyI,GAAOpB,KAAKW,MAEhBlH,OAAO0N,KAAKysI,GAAQrzI,KAAIa,GACb,KAAVA,EACO,CAAEV,KAAM,MAAOqxI,QAAS6B,EAAOxyI,GAAOb,IAAIuxI,IAC9C,CAAEpxI,KAAM,QAASqxI,QAAS6B,EAAOxyI,GAAOb,IAAIuxI,GAAmBr0I,KAAMm2I,EAAOxyI,GAAO,GAAGA,SAOrG,SAASqwI,EAAqBvlI,EAAI0nI,GAC9B,GAAIv9H,MAAMC,QAAQpK,GACd,OAAOA,EAAG3L,KAAIquB,GAAO6iH,EAAqB7iH,EAAKglH,KACnD,IAAK1nI,EAAGxL,KACJ,OAAOwL,EAEX,GAAIA,EAAGxL,OAASkc,EAAMwzH,cAClB,OAAOlkI,EACX,IAAKA,EAAGxL,OAASkc,EAAMkxH,SAAW5hI,EAAGxL,OAASkc,EAAMixH,OAAS3hI,EAAG9K,MAI5D,OAHKwyI,EAAO1nI,EAAG9K,MAAMxH,SACjBg6I,EAAO1nI,EAAG9K,MAAMxH,OAAS,CAAEwH,MAAO8K,EAAG9K,MAAOkG,OAAQ,KACxDssI,EAAO1nI,EAAG9K,MAAMxH,OAAO0N,OAAOtH,KAAKkM,GAC5BA,EAEX,MAAMrK,EAAS,GACT00I,EAAY,GACZC,EAAc,GACpB,IAAK,IAAI96I,KAAOjC,OAAO0N,KAAK+E,GAAK,CAC7B,MAAMuqI,EAAY,GAClB50I,EAAOnG,GAAO+1I,EAAqBvlI,EAAGxQ,GAAM+6I,GAC5C,MAAM5C,EAAap6I,OAAO0N,KAAKsvI,GAE/B,GAAI5C,EAAWvzI,OAAS,EAAG,CAEvB,IAAI0H,EAAO0uI,EAA2BD,EAAU5C,EAAW,IAAIvsI,QAC/D,IAAK,IAAI6L,EAAI,EAAGA,EAAI0gI,EAAWvzI,SAAU6S,EAAG,CACxC,MAAMlL,EAAQyuI,EAA2BD,EAAU5C,EAAW1gI,IAAI7L,QAClEU,EAAOmE,EAAQwgI,WAAW,CAAC3kI,EAAMC,IAKrC,OAHA4rI,EAAWtzI,KAAI9C,UAAeg5I,EAAUh5I,KAGjCuK,EAEN,GAA0B,IAAtB6rI,EAAWvzI,OAAc,CAC9B,MAAMc,EAAQq1I,EAAU5C,EAAW,IAAIzyI,MACvCm1I,EAAU76I,GAAO0F,EACjBo1I,EAAYp1I,EAAMxH,OAASwH,GAGnC,MAAMu1I,EAAel9I,OAAO0N,KAAKqvI,GACjC,GAAIG,EAAar2I,OAAS,EAEtB,GAA4B,IAAxBq2I,EAAar2I,QAAgB4L,EAAGxL,OAASkc,EAAMmxH,QAC/C6F,EAAO+C,EAAa,IAAM,CAAEv1I,MAAOo1I,EAAYG,EAAa,IAAKrvI,OAAQ,CAACzF,SAG1E,IAAK,IAAInG,KAAOjC,OAAO0N,KAAKovI,GACpBA,EAAU76I,GAAK9B,MAAM0G,OAAS,IAE9BuB,EAAOnG,GAAOyQ,EAAQmgI,YAAYzqI,EAAOnG,GAAM66I,EAAU76I,KAGzE,OAAOmG,EAEX,SAAS60I,EAA2BrL,GAChC,MAAMuL,EAAMzqI,EAAQi/H,UAAUC,GACxB5tI,EAAO4tI,EAAS,GAAGjqI,MACzB,OAA0B,IAAtB3D,EAAK7D,MAAM0G,OACJs2I,EAEJzqI,EAAQmgI,YAAYsK,EAAKn5I,GA1uBpC9D,EAAQqwI,SAJR,SAAkB99H,EAAIN,EAAU,IAE5B,OADgB,IAAI4+H,EAAWqM,UAAUjrI,GACxBhF,UAAUmjI,EAAW79H,KAW1CvS,EAAQowI,WAAaA,qCC/CrB,IAAIhuI,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B1C,OAAOC,eAAeuC,EAAGG,EAAI,CAAEO,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEV0tI,EAAsBtvI,MAAQA,KAAKsvI,qBAAwBpwI,OAAOuC,OAAS,SAAUC,EAAGi5B,GACxFz7B,OAAOC,eAAeuC,EAAG,UAAW,CAAEU,YAAY,EAAM/C,MAAOs7B,KAC9D,SAASj5B,EAAGi5B,GACbj5B,EAAW,QAAIi5B,IAEf40G,EAAgBvvI,MAAQA,KAAKuvI,cAAiB,SAAU98F,GACxD,GAAIA,GAAOA,EAAIxwC,WAAY,OAAOwwC,EAClC,IAAInrC,EAAS,GACb,GAAW,MAAPmrC,EAAa,IAAK,IAAI7wC,KAAK6wC,EAAe,YAAN7wC,GAAmB1C,OAAOsD,UAAUC,eAAeC,KAAK+vC,EAAK7wC,IAAIJ,EAAgB8F,EAAQmrC,EAAK7wC,GAEtI,OADA0tI,EAAmBhoI,EAAQmrC,GACpBnrC,GAEPiwE,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtD,MAAMo8F,EAAQ,EAAQ,OAChB92F,EAAe,EAAQ,MACvBgrI,EAAUJ,EAAa,EAAQ,QAC/BO,EAAYv4D,EAAgB,EAAQ,QACpCn9D,EAASm9D,EAAgB,EAAQ,QACjC6Q,EAAS,eACT/lE,EAAQstH,EAAQttH,MACtB,IAGIzQ,EAHAtL,EAAY,IAAIkH,IAChB+uI,EAAW,EACXC,GAAW,EA6Bf,SAASC,EAAeC,EAAQvkB,EAAOwkB,GAMnC,GAJAr2I,EAAY,IAAIkH,IAChB+uI,EAAW,EACXC,EAAWhqI,QAAQ2lH,IAEdukB,EAAOv2I,KACR,OAAOyL,EAAQghI,YACnB,GAAoB,UAAhB8J,EAAOv2I,MAAoC,WAAhBu2I,EAAOv2I,KAClC,MAAM,IAAI3F,MAAM,6DACpB,IAAI0lB,EAmiBR,IAAyB02H,EAphBrB,OAbAC,EAAiBH,GACG,UAAhBA,EAAOv2I,MAGP+f,EAAM42H,EADQ,CAAE32I,KAAM,QAAS2qI,SAAU4L,EAAO9G,OAAS,KAEzD1vH,EA4ZR,SAA6B/e,EAAO+e,GAEhC,MAAMs1H,EAASr0I,EAETm0B,EAAI,GACJE,EAAI,GAKV,GAJAggH,EAAOl1I,UAAYk1I,EAAOl1I,WAAak1I,EAAOl1I,UAAUN,KAAI+mF,GAAOgwD,EAAahwD,EAAKvxD,KACrFggH,EAAOM,OAASN,EAAOM,QAAUN,EAAOM,OAAO91I,KAAI+mF,GAAOgwD,EAAahwD,EAAKvxD,KAC5EggH,EAAOpE,MAAQoE,EAAOpE,OAASoE,EAAOpE,MAAMpxI,KAAI+mF,GAAOgwD,EAAahwD,EAAKvxD,KAErEggH,EAAOvpI,OAAS/S,OAAO0N,KAAK4uB,GAAGz1B,OAAS,EAAG,CAC3C,MAAMoM,EAAajT,OAAO0N,KAAK4uB,GAAGx1B,KAAI20B,GA8G9C,SAAiCiiH,EAAQjiH,GACrC,GAAoB,cAAhBiiH,EAAOz2I,OAAyBy2I,EAAO1C,YACvC,MAAM,IAAI15I,MAAM,qBAAqB4L,KAAKC,UAAUuwI,MACxD,MAAMphH,EAAI67G,EAAoBuF,GAE9B,OADAphH,EAAEj1B,SAAWo0B,EACNa,EAnHwC08G,CAAwB18G,EAAEb,GAAI/oB,EAAQu+H,WAAWx1G,MACtFqiH,EAAO,GACb,GAAIxB,EAAOvpI,MACP,IAAK,MAAMwc,KAAK+sH,EAAOvpI,MACnB,GAAImI,EAAOmd,QAAQgkH,aAAa9sH,EAAE1b,YAC9BiqI,EAAKv3I,KAAKgpB,EAAE1b,gBAEX,CAED,MAAM4nB,EAAI,aAAclM,EAAIA,EAAEloB,SAAW02I,IACzC/2H,EAAMtU,EAAQ2/H,aAAarrH,EAAKyU,EAAG08G,EAAoB5oH,EAAE1b,aACzDiqI,EAAKv3I,KAAKk1B,GAItBzU,EAAMtU,EAAQM,YAAYgU,EAAK82H,EAAM7qI,GAGzC,GAAIqpI,EAAOM,OACP,IAAK,IAAIxuI,KAAUkuI,EAAOM,OACtB51H,EAAMtU,EAAQigI,aAAa3rH,EAAKmxH,EAAoB/pI,IAExDnG,EAAM4F,SACNmZ,EAAMtU,EAAQwgI,WAAW,CAAClsH,EAAKg3H,EAAoB/1I,MAEvD,IAAIg2I,EAAK,GACT,GAAwB,WAApBh2I,EAAMuU,WAA8C,aAApBvU,EAAMuU,UAEtC,GAAIvU,EAAMb,UAAUkjB,MAAMiF,GAAMA,GAAKrU,EAAOmd,QAAQ6lH,WAAW3uH,KAC3D0uH,EAAKj+I,OAAO6N,OAAOswI,EAAiBl2I,IAC/Bg5C,MAAK,CAAC1yC,EAAMC,IAAUD,EAAKpO,MAAMi+I,cAAc5vI,EAAMrO,cAG1D,IAAK,IAAIs7B,KAAKxzB,EAAMb,UAEZi3I,EAAW5iH,MAAQ,aAAcA,GACjCwiH,EAAG13I,KAAKk1B,GACHA,EAAEp0B,WAEP42I,EAAG13I,KAAKk1B,EAAEp0B,UACV+0B,EAAE71B,KAAKk1B,IAMvB,IAAK,IAAIA,KAAKW,EACVpV,EAAMtU,EAAQ2/H,aAAarrH,EAAKyU,EAAEp0B,SAAU8wI,EAAoB18G,EAAE5nB,aAmCtE,OA/BIyoI,EAAOpE,QACPlxH,EAAMtU,EAAQuhI,cAAcjtH,EAAKs1H,EAAOpE,MAAMpxI,KAAK+uB,IAC/C,IAAIztB,EAAS+vI,EAAoBtiH,EAAIhiB,YAGrC,OAFIgiB,EAAI6mH,aACJt0I,EAASsK,EAAQkjI,yBAAyB,OAAQ,CAACxtI,KAChDA,OAIS,WAApBH,EAAMuU,YAENwK,EAAMtU,EAAQa,cAAcyT,EAAKi3H,IAEjC3B,EAAO7K,WACPzqH,EAAMtU,EAAQy/H,eAAenrH,IAE7Bs1H,EAAO7C,UACPzyH,EAAMtU,EAAQ6hI,cAAcvtH,IAER,cAApB/e,EAAMuU,UACNwK,EAAMtU,EAAQo/H,gBAAgB9qH,GAAM/e,EAAM8pI,UAAY,IAAIjrI,IAAIw3I,IACrC,QAApBr2I,EAAMuU,UACXwK,EAAMtU,EAAQ2+H,UAAUrqH,GACC,aAApB/e,EAAMuU,YACXwK,EAAMtU,EAAQu/H,eAAejrH,EAAKi3H,KAGlC3B,EAAOr8H,QAAUq8H,EAAOl/H,SACxB4J,EAAMtU,EAAQoiI,YAAY9tH,EAAKs1H,EAAOr8H,QAAU,EAAGq8H,EAAOl/H,QAC1Dk/H,EAAO9jH,OACPxR,EAAMtU,EAAQ6/H,WAAWvrH,EAAKs1H,EAAO9jH,KAAKH,QAASikH,EAAO9jH,KAAKi6G,QAC5DzrH,EAzfGu3H,CAAoBf,EAAQx2H,IAEb,WAAhBw2H,EAAOv2I,OACZ+f,EA0hB0B,KADT02H,EAzhBKF,GA0hBfnH,QAAQxvI,OACR23I,EAAsBd,EAAOrH,QAAQ,IACzC3jI,EAAQ0jI,sBAAsBsH,EAAOrH,QAAQvvI,IAAI03I,KA1hBpDf,IACAz2H,EAAMy3H,EAA+Bz3H,IAElCA,EAKX,SAAS03H,EAAOxsI,GACZ,OAAOoB,QAAQpB,MAAAA,OAAmC,EAASA,EAAKtK,UAMpE,SAASy2I,EAAWnsI,GAChB,MAAuE,cAA/DA,MAAAA,OAAmC,EAASA,EAAKtK,UAG7D,SAAS+1I,EAAiBD,GACtB,GAAIgB,EAAOhB,GACHW,EAAWX,IAEXt2I,EAAU0X,IAAI,IAAI4+H,EAAOv9I,cAG5B,GAAIyc,MAAMC,QAAQ6gI,GACnB,IAAK,MAAMrqI,KAASqqI,EAChBC,EAAiBtqI,QAEpB,GAAIqqI,GAA4B,iBAAXA,EACtB,IAAK,IAAIz7I,KAAOjC,OAAO0N,KAAKgwI,GAEpBz7I,EAAImmB,WAAW,MACfhhB,EAAU0X,IAAI7c,GAClB07I,EAAiBD,EAAOz7I,IAKpC,SAASk8I,EAAiBT,GACtB,IAAIiB,EAAU,GACd,IA9BcC,EA8BDlB,GA7BCl2I,SAAWo3I,EAAOn3I,WAAam3I,EAAOl3I,OA6B9B,CAElB,MAAMU,EAAS,CACX+1I,EAAiBT,EAAOl2I,SACxB22I,EAAiBT,EAAOj2I,WACxB02I,EAAiBT,EAAOh2I,QACxBg2I,EAAO/1I,MAAQw2I,EAAiBT,EAAO/1I,OAAS,IAEpD3H,OAAO4W,OAAO+nI,KAAYv2I,QAEzB,GAAIs2I,EAAOhB,GACRW,EAAWX,KACXiB,EAAQjB,EAAOv9I,OAASu9I,QAE3B,GAAoB,QAAhBA,EAAOz2I,KAAgB,CAE5B,MAAMgyH,EAAQykB,EAAOpF,QACrBt4I,OAAO4W,OAAO+nI,KAAY1lB,EAAMnyH,IAAIq3I,SAEnC,GAAoB,SAAhBT,EAAOz2I,KAEZjH,OAAO4W,OAAO+nI,KAAYjB,EAAO9nD,MAAM9uF,IAAIq3I,SAE1C,GAAoB,UAAhBT,EAAOz2I,MAAoC,UAAhBy2I,EAAOz2I,MAAoC,aAAhBy2I,EAAOz2I,KAClEjH,OAAO4W,OAAO+nI,KAAYjB,EAAO9L,SAAS9qI,IAAIq3I,SAE7C,GAAoB,YAAhBT,EAAOz2I,MAAsC,UAAhBy2I,EAAOz2I,KACzCjH,OAAO4W,OAAO+nI,EAASR,EAAiBT,EAAO15I,OAC/ChE,OAAO4W,OAAO+nI,KAAYjB,EAAO9L,SAAS9qI,IAAIq3I,SAE7C,GAAoB,SAAhBT,EAAOz2I,KACZjH,OAAO4W,OAAO+nI,EAASR,EAAiBT,EAAOr2I,gBAE9C,GAAoB,WAAhBq2I,EAAOz2I,MACZ,GAAIy2I,EAAO7vI,OAAOhH,OAAS,EAAG,CAC1B,MAAMi3I,EAAO99I,OAAO0N,KAAKgwI,EAAO7vI,OAAO,IAAI/G,KAAI20B,GAAK/oB,EAAQu+H,WAAWx1G,KACvEz7B,OAAO4W,OAAO+nI,KAAYb,EAAKh3I,IAAIq3I,UAGtC,GAAoB,UAAhBT,EAAOz2I,OACa,WAArBy2I,EAAOlhI,WAA+C,aAArBkhI,EAAOlhI,WAA0B,CAC9DkhI,EAAOhH,OAASgH,EAAOt2I,UAAUkjB,KAAKpP,EAAOmd,QAAQ6lH,aACrDl+I,OAAO4W,OAAO+nI,KAAYjB,EAAOhH,MAAM5vI,IAAIq3I,IAC/C,IAAK,MAAM1iH,KAAKiiH,EAAOt2I,UACfi3I,EAAW5iH,GACXz7B,OAAO4W,OAAO+nI,EAASR,EAAiB1iH,IACnCA,EAAEp0B,UACPrH,OAAO4W,OAAO+nI,EAASR,EAAiB1iH,EAAEp0B,WAElD,GAAyB,WAArBq2I,EAAOlhI,UAAwB,CAC/B,GAAIkhI,EAAO3qI,MAEP,IAAK,MAAMyoB,KAAKkiH,EAAO3qI,MACfyoB,EAAEn0B,UACFrH,OAAO4W,OAAO+nI,EAASR,EAAiB3iH,EAAEn0B,WAGtD,GAAIq2I,EAAO7vI,OAAQ,CACf,MAAMA,EAAS,CAAE5G,KAAM,SAAU4G,OAAQ6vI,EAAO7vI,QAChD7N,OAAO4W,OAAO+nI,EAASR,EAAiBtwI,MAzF5D,IAAkB+wI,EA8Fd,OAAOD,EAEX,SAASf,EAA2BF,GAIhC,IAWIt1I,EAXAy2I,EAAU,GACVC,EAAa,GACjB,GAAI,aAAcpB,EACd,IAAK,IAAIx2I,KAAWw2I,EAAO9L,UACL,WAAjB1qI,EAAQD,KAAoB43I,EAAUC,GAAYv4I,KAAKW,GAIhE,GAAoB,QAAhBw2I,EAAOz2I,KACP,OAgDR,SAAsBy2I,GAClB,IAAI9L,EAAW,GACXmN,EAAQ,GACZ,IAAK,IAAI7mH,KAAKwlH,EAAOpF,QACjB,GAAI,aAAcpgH,EAAEzwB,UAAW,CAE3B,IAAI+K,EAyBLwsI,GAJYJ,EArBc1mH,GAsBhB1wB,QACNy3I,EAAuBL,EAAOn3I,WAC/Bm3I,EAAOl3I,QAvBT,IAAK,IAAIrE,KAAKmP,EACNnP,EAAE4D,OAASkc,EAAMixH,MACbxC,EAAS/qI,OAAS,GAClBk4I,EAAMx4I,KAAKmM,EAAQi/H,UAAUC,IACjCA,EAAW,GACXmN,EAAMx4I,KAAKlD,IAGXuuI,EAASrrI,KAAKlD,QAItBuuI,EAASrrI,KAAK+3I,EAAcpmH,IAQxC,IAAuB0mH,EAJnB,OAFIhN,EAAS/qI,OAAS,GAClBk4I,EAAMx4I,KAAKmM,EAAQi/H,UAAUC,IACZ,IAAjBmN,EAAMl4I,OACCk4I,EAAM,GACVrsI,EAAQwgI,WAAW6L,GAzEfxG,CAAamF,GAGxB,GAAoB,UAAhBA,EAAOz2I,KACPmB,EAASsK,EAAQsiI,YAAY8J,EAAWh4I,KAAKzD,IAE1B,UAAXA,EAAE4D,OACF5D,EAAI,CAAE4D,KAAM,QAAS2qI,SAAU,CAACvuI,KAC7Bu6I,EAA2Bv6I,WAErC,IAAoB,UAAhBq6I,EAAOz2I,KAEZ,OAqJR,SAAwBU,GAEpB,IAAIS,EAASw1I,EADC,CAAE32I,KAAM,QAAS2qI,SAAUjqI,EAAMiqI,WAM/C,OAHIxpI,EADAk1I,EACS4B,EAAa92I,EAAQT,EAAM3D,MAE3B0O,EAAQmgI,YAAYzqI,EAAQT,EAAM3D,MACxCoE,EA5JI0wI,CAAe4E,GACrB,GAAoB,UAAhBA,EAAOz2I,KACZmB,EAAS02I,EAAWzkI,OAAO8kI,EAA6BzsI,EAAQi/H,UAAU,UAEzE,GAAoB,WAAhB+L,EAAOz2I,KACZmB,EAAS41I,EAAoBN,OAC5B,IAAoB,UAAhBA,EAAOz2I,KAGZ,MAAM,IAAI3F,MAAM,oBAAoBo8I,EAAOz2I,QAF3CmB,EAASm1I,EAAeG,EAAQJ,GAAU,IAG9C,GAAIuB,EAAQh4I,OAAS,EAAG,CACpB,IAAIqtI,EAAc2K,EAAQ/3I,KAAIsH,GAAU+pI,EAAoB/pI,EAAOyF,cAC/DqgI,EAAYrtI,OAAS,IACrBuB,EAASsK,EAAQigI,aAAavqI,EAAQ8rI,EAAY75H,QAAO,CAACqE,EAAKmX,IAAQnjB,EAAQkjI,yBAAyB,KAAM,CAACl3H,EAAKmX,QAE5H,OAAOztB,EAEX,SAAS+vI,EAAoBtiH,GACzB,GAAI3a,EAAOmd,QAAQgkH,aAAaxmH,IAAQ3a,EAAOmd,QAAQ+mH,OAAOvpH,GAC1D,OAAOnjB,EAAQqB,qBAAqB8hB,GACxC,GAAI3a,EAAOmd,QAAQ6lH,WAAWroH,GAC1B,OAAOnjB,EAAQsjI,2BACnB,GAAI,gBAAiBngH,EACjB,OAAOnjB,EAAQg/H,0BAA0B77G,EAAImlH,YAAa7C,EAAoBtiH,EAAIhiB,YAAaP,QAAQuiB,EAAI47G,UAAW57G,EAAIwwF,WAC9H,GAAI,aAAcxwF,EAEd,OAAOnjB,EAAQgjI,sBAAsB7/G,EAAIslH,SAAUtlH,EAAIr1B,KAAKsG,IAAIqxI,IACpE,GAAI,aAActiH,EACd,MAAqB,WAAjBA,EAAIggH,UAA0C,cAAjBhgH,EAAIggH,SAC1BnjI,EAAQ8iI,0BAA2C,cAAjB3/G,EAAIggH,SAA0B+H,EAA2B/nH,EAAIr1B,KAAK,MAC1F,OAAjBq1B,EAAIggH,UAAsC,UAAjBhgH,EAAIggH,WAC7BhgH,EAAIr1B,KAAO,CAACq1B,EAAIr1B,KAAK,IAAI+e,OAAOsW,EAAIr1B,KAAK,KACtCkS,EAAQkjI,yBAAyB//G,EAAIggH,SAAUhgH,EAAIr1B,KAAKsG,IAAIqxI,KAEvE,MAAM,IAAI72I,MAAM,uBAAuB4L,KAAKC,UAAU0oB,MAmC1D,SAASopH,EAAuBx3I,GAC5B,GAAIyT,EAAOmd,QAAQgkH,aAAa50I,GAAY,CACxC,GAA2B,cAAvBA,EAAUG,SACV,OAAO8K,EAAQ4gI,WAAW7rI,GAE1B,MAAM,IAAInG,MAAM,6CAA6C4L,KAAKC,UAAU1F,MAEpF,GAA2B,MAAvBA,EAAU+zI,SACV,OAAO9oI,EAAQsgI,UAAUiM,EAAuBx3I,EAAUmuF,MAAM,KACpE,GAA2B,MAAvBnuF,EAAU+zI,SAAkB,CAE5B,IAEI5lD,EAFAypD,EAAU,GACVC,EAAW,GAGX1pD,EADA,aAAcnuF,EAAUmuF,MAAM,IAAsC,MAAhCnuF,EAAUmuF,MAAM,GAAG4lD,SAC/C/zI,EAAUmuF,MAAM,GAAGA,MAEnBnuF,EAAUmuF,MACtB,IAAK,IAAI2pD,KAAQ3pD,EACb,GAAI16E,EAAOmd,QAAQgkH,aAAakD,GAC5BF,EAAQ94I,KAAKg5I,OACZ,IAAsB,MAAlBA,EAAK/D,SAGV,MAAM,IAAIl6I,MAAM,oBAAoB4L,KAAKC,UAAUoyI,MAFnDD,EAAS/4I,KAAKg5I,EAAK3pD,MAAM,IAKjC,IAAI4pD,EAAgB9sI,EAAQkhI,UAAUyL,GAClCI,EAAkB/sI,EAAQsgI,UAAUtgI,EAAQkhI,UAAU0L,IAC1D,OAAwB,IAApBA,EAASz4I,OACF24I,EACY,IAAnBH,EAAQx4I,OACD44I,EACJ/sI,EAAQw+H,UAAU,CAACsO,EAAeC,IAE7C,GAA2B,MAAvBh4I,EAAU+zI,SACV,OAAO9oI,EAAQ+hI,UAAUhtI,EAAUmuF,MAAM9uF,IAAIm4I,IACjD,GAA2B,MAAvBx3I,EAAU+zI,SACV,OAAO9oI,EAAQw+H,UAAUzpI,EAAUmuF,MAAM9uF,IAAIm4I,IACjD,GAA2B,MAAvBx3I,EAAU+zI,SACV,OAAO9oI,EAAQwiI,qBAAqB+J,EAAuBx3I,EAAUmuF,MAAM,KAC/E,GAA2B,MAAvBnuF,EAAU+zI,SACV,OAAO9oI,EAAQqhI,oBAAoBkL,EAAuBx3I,EAAUmuF,MAAM,KAC9E,GAA2B,MAAvBnuF,EAAU+zI,SACV,OAAO9oI,EAAQ0iI,oBAAoB6J,EAAuBx3I,EAAUmuF,MAAM,KAC9E,MAAM,IAAIt0F,MAAM,uCAAuC4L,KAAKC,UAAU1F,MAE1E,SAASu3I,EAAax3I,EAASC,EAAWC,GACtC,GAAID,EAAUR,OAASkc,EAAMowH,KACzB,MAAO,CAAC7gI,EAAQG,cAAcrL,EAASC,EAAUo+E,IAAKn+E,IAC1D,GAAID,EAAUR,OAASkc,EAAM8vH,IACzB,OAAO+L,EAAat3I,EAAQD,EAAU+K,KAAMhL,GAChD,GAAIC,EAAUR,OAASkc,EAAMuxH,IAAK,CAC9B,IAAIgL,EAASl4I,EACb,OAAO0T,EAAOmd,QAAQ27E,QAAQvsG,EAAUnD,MAAMwC,KAAI,CAAC64I,EAAOjmI,KACtD,MAAMkmI,EAAalmI,IAAMjS,EAAUnD,MAAMuC,OAAS,EAAIa,EAASq2I,IACzD8B,EAAiBb,EAAaU,EAAQC,EAAOC,GAInD,MAH4B,aAAxBA,EAAWh4I,WACX83I,EAASE,GAENC,MAGf,MAAO,CAACntI,EAAQE,WAAWpL,EAASC,EAAWC,IAEnD,SAASq2I,IACL,IAAItiH,EAAI,OAAO4hH,IACf,OAAIj2I,EAAU4B,IAAIyyB,GACPsiH,KACX32I,EAAU0X,IAAI2c,GACP/oB,EAAQu+H,WAAWx1G,IAE9B,SAAS6iH,EAAch3I,GACnB,GAAI,aAAcA,EAAKG,UACnB,MAAM,IAAInG,MAAM,8CAIpB,OAAOoR,EAAQG,cAAcvL,EAAKE,QAASF,EAAKG,UAAWH,EAAKI,OAAQJ,EAAKK,OA/SjFzH,EAAA,QAhBA,SAAmBs9I,EAAQrrI,GAGvB,IAAIlK,EACJ,GAHAkK,EAAUA,GAAW,GACrBO,EAAU,IAAIk+H,EAAUv4G,QAAQlmB,EAAQ1E,aA2ClB,iBAzCT+vI,EAAS,CAClB,IAAIl0D,EAAS,IAAIJ,EAAO/2E,GAGxBm3E,EAAOw2D,eACP73I,EAAQqhF,EAAOzgE,MAAM20H,QAGrBv1I,EAAQu1I,EAEZ,OAAOD,EAAet1I,EAAOkK,EAAQ8mH,MAAO9mH,EAAQsrI,kBA4TxD,IAAIsC,EAAW//I,OAAO6N,OAAOsV,GAC7B,SAAS+7H,EAAaxB,EAAQ/1I,EAAOq4I,GACjC,GAAItC,EAAOz2I,OAASkc,EAAM2vH,MAAO,CAC7B,GAAIkN,EAGA,MAAM,IAAI1+I,MAAM,+EAGpBo8I,EAASwB,EAAaxB,EAAOp5I,MAAOo5I,EAAO15I,WAE1C,GAAI05I,EAAOz2I,OAASkc,EAAM0uH,IAC3B6L,EAAO9L,SAAW8L,EAAO9L,SAAS9qI,KAAIQ,IAC9B04I,IACI14I,EAAKE,QAAQ0G,OAAOvG,KACpBL,EAAKE,QAAUw4I,GACf14I,EAAKG,UAAUyG,OAAOvG,KACtBL,EAAKG,UAAYu4I,GACjB14I,EAAKI,OAAOwG,OAAOvG,KACnBL,EAAKI,OAASs4I,IAEM,iBAAxB14I,EAAKK,MAAMC,WACXN,EAAKK,MAAQA,GACVL,UAEV,GAAIo2I,EAAOz2I,OAASkc,EAAMixH,KACvB4L,IACItC,EAAOl2I,QAAQ0G,OAAOvG,KACtB+1I,EAAOl2I,QAAUw4I,GACjBtC,EAAOh2I,OAAOwG,OAAOvG,KACrB+1I,EAAOh2I,OAASs4I,IAEM,iBAA1BtC,EAAO/1I,MAAMC,WACb81I,EAAO/1I,MAAQA,QAIlB,GAAI+1I,EAAOz2I,OAASkc,EAAMmxH,SAAY0L,EAQtC,GAAItC,EAAOz2I,OAASkc,EAAMmvH,QAAW0N,EAMtC,IAAK,IAAI/9I,KAAOjC,OAAO0N,KAAKgwI,GACpB9gI,MAAMC,QAAQ6gI,EAAOz7I,IACrBy7I,EAAOz7I,GAAOy7I,EAAOz7I,GAAK6E,KAAKiI,GAAMmwI,EAAanwI,EAAGpH,EAAOq4I,KACvDD,EAASnnI,QAAQ8kI,EAAOz7I,GAAKgF,OAAS,EAC3Cy2I,EAAOz7I,GAAOi9I,EAAaxB,EAAOz7I,GAAM0F,EAAOq4I,GAC1CA,GAAe3B,EAAWX,EAAOz7I,KAASy7I,EAAOz7I,GAAKiM,OAAOvG,KAClE+1I,EAAOz7I,GAAO+9I,QAXlBtC,EAAOr2I,SAAS6G,OAAOvG,KACvBq4I,EAAcjC,KAClBL,EAAOp5I,MAAQ46I,EAAaxB,EAAOp5I,MAAOqD,EAAOq4I,QAV5CtC,EAAOt2I,UAAUkjB,MAAKmR,GAAKA,EAAEvtB,OAAOvG,OACrCq4I,EAAcjC,KAClBL,EAAOp5I,MAAQ46I,EAAaxB,EAAOp5I,MAAOqD,EAAOq4I,GAoBrD,OAAOtC,EAEX,SAASyB,EAA4BtgH,EAAGzC,GACpC,GAAe,aAAXA,EAAEn1B,KAAqB,CAEvB,MAAMq1B,EAAIshH,EAA2B,CAAE32I,KAAM,QAAS2qI,SAAUx1G,EAAEw1G,WAE9D/yG,EADAvC,EAAEr1B,OAASkc,EAAMyvH,OACblgI,EAAQ0gI,eAAev0G,EAAGvC,EAAEh4B,MAAOg4B,EAAEzoB,YAGrCnB,EAAQ0gI,eAAev0G,EAAGvC,QAEjC,GAAe,UAAXF,EAAEn1B,KAAkB,CAEzB,MAAMq1B,EAAIshH,EAA2B,CAAE32I,KAAM,QAAS2qI,SAAUx1G,EAAEw1G,WAClE/yG,EAAInsB,EAAQ8gI,YAAY30G,EAAGvC,QAE1B,GAAe,SAAXF,EAAEn1B,KACP43B,EAAInsB,EAAQ2/H,aAAaxzG,EAAGzC,EAAE/0B,SAAU8wI,EAAoB/7G,EAAEvoB,kBAC7D,GAAe,YAAXuoB,EAAEn1B,KAAoB,CAE3B,MAAM8L,EAAQ,CAAE9L,KAAM,QAAS2qI,SAAUx1G,EAAEw1G,UAE3C/yG,EAAIohH,EAAephH,EADTnsB,EAAQiiI,cAAciJ,EAA2B7qI,GAAQqpB,EAAEp4B,KAAMo4B,EAAEw4G,cAK7E/1G,EAAIohH,EAAephH,EADT++G,EAA2BxhH,IAGzC,OAAOyC,EAEX,SAASohH,EAAephH,EAAGvC,GAUvB,OARIuC,EAAE53B,OAASkc,EAAM0uH,KAAOv1G,EAAEr1B,OAASkc,EAAM0uH,IACzChzG,EAAInsB,EAAQi/H,UAAU,IAAI9yG,EAAE+yG,YAAat1G,EAAEs1G,WAEtC/yG,EAAE53B,OAASkc,EAAM0uH,KAA6B,IAAtBhzG,EAAE+yG,SAAS/qI,OACxCg4B,EAAIvC,EACCA,EAAEr1B,OAASkc,EAAM0uH,KAA6B,IAAtBv1G,EAAEs1G,SAAS/qI,SAExCg4B,EAAInsB,EAAQwgI,WAAW,CAACr0G,EAAGvC,KACxBuC,EAEX,SAASm/G,EAAoBnwI,GACzB,IAAIzG,GAAsC,IAAzByG,EAAOA,OAAOhH,OAAe,GAAK7G,OAAO0N,KAAKG,EAAOA,OAAO,KAAK/G,IAAI4L,EAAQu+H,WAAW3pH,KAAK5U,IAC1GnG,EAAWsB,EAAOA,OAAO/G,KAAKsM,IAC9B,IAAI1F,EAAO1N,OAAO0N,KAAK0F,GACvB1F,EAAOA,EAAKU,QAAO1L,QAAoBE,IAAfwQ,EAAQ1Q,KAChC,IAAIoE,EAAM,GACV,IAAK,IAAI7E,KAAOyL,EACZ5G,EAAI7E,GAAOmR,EAAQnR,GACvB,OAAO6E,KAEX,OAAO4L,EAAQkB,aAAaxM,EAAWmF,GAmG3C,SAASsxI,EAAaH,EAAQzqI,GAC1B,GAAI,SAAUyqI,GAA0B,cAAhBA,EAAOz2I,KAAsB,CACjD,IACIw0B,EADA2yD,GAAQ,EAEZ,IAAK,IAAInsF,KAAOjC,OAAO0N,KAAKuF,GACxB,GAAIspF,EAAMtpF,EAAWhR,GAAMy7I,GAAS,CAChCjiH,EAAI/oB,EAAQu+H,WAAWhvI,GACvBmsF,GAAQ,EACR,MAOR,OAJKA,IACD3yD,EAAIsiH,IACJ9qI,GAAW,EAAIxN,EAAa8B,cAAck0B,IAAMiiH,GAE7CjiH,EAGX,MAAI,eAAgBiiH,GAAUA,EAAO7pI,WAC1B,IAAK6pI,EAAQ7pI,WAAYgqI,EAAaH,EAAO7pI,WAAYZ,IAChE,SAAUyqI,GAAUA,EAAOl9I,KACpB,IAAKk9I,EAAQl9I,KAAMk9I,EAAOl9I,KAAKsG,KAAIo5I,GAAarC,EAAaqC,EAAWjtI,MAE5EyqI,EAcX,SAASc,EAAsBd,GAC3B,GAAI,SAAUA,EAAQ,CAClB,GAAoB,SAAhBA,EAAOz2I,KACP,OA+DZ,SAAkCy2I,GAC9B,OAAOhrI,EAAQkkI,WAAW8G,EAAO1nI,OAAQ0nI,EAAOznI,YAAaynI,EAAO9I,QAhErDuL,CAAyBzC,GACpC,GAAoB,UAAhBA,EAAOz2I,MAAoC,WAAhBy2I,EAAOz2I,MAAqC,SAAhBy2I,EAAOz2I,KAC9D,OA2CZ,SAA8By2I,GAC1B,IAAI1nI,EAWJ,OATIA,EADAkF,EAAOmd,QAAQgkH,aAAaqB,EAAO/1I,OAC1B+1I,EAAO/1I,MACX+1I,EAAO/1I,MAAM+rB,IACT,MACJgqH,EAAO/1I,MAAM0wB,QACT,UACJqlH,EAAO/1I,MAAM8qI,MACT,QAEAiL,EAAO/1I,MAAM3D,KAClB05I,EAAOz2I,MACX,IAAK,QAAS,OAAOyL,EAAQqkI,YAAY/gI,EAAQ0nI,EAAO9I,QACxD,IAAK,SAAU,OAAOliI,EAAQukI,aAAajhI,EAAQ0nI,EAAO9I,QAC1D,IAAK,OAAQ,OAAOliI,EAAQykI,WAAWnhI,EAAQ0nI,EAAO9I,SA1D3CwL,CAAqB1C,GAChC,GAAoB,QAAhBA,EAAOz2I,MAAkC,SAAhBy2I,EAAOz2I,MAAmC,SAAhBy2I,EAAOz2I,KAC1D,OA8DZ,SAAsCy2I,GAClC,MAAM1nI,EAAS0nI,EAAO1nI,OAAOqiB,QAAU,UAAYqlH,EAAO1nI,OAAOhS,KAC3DiS,EAAcynI,EAAOznI,YAAYoiB,QAAU,UAAYqlH,EAAOznI,YAAYjS,KAChF,OAAQ05I,EAAOz2I,MACX,IAAK,OAAQ,OAAOyL,EAAQ+kI,WAAWzhI,EAAQC,EAAaynI,EAAO9I,QACnE,IAAK,OAAQ,OAAOliI,EAAQ6kI,WAAWvhI,EAAQC,EAAaynI,EAAO9I,QACnE,IAAK,MAAO,OAAOliI,EAAQ2kI,UAAUrhI,EAAQC,EAAaynI,EAAO9I,SApEtDgG,CAA6B8C,QAEvC,GAA0B,iBAAtBA,EAAOzD,YAAuD,gBAAtByD,EAAOzD,YAAsD,WAAtByD,EAAOzD,YAAiD,WAAtByD,EAAOzD,WAC7H,OAGR,SAA+ByD,GAC3B,IAAKJ,EACD,MAAM,IAAIh8I,MAAM,yEACpB,IAEIo1I,EAFA2J,EAAgB,GAChBC,EAAgB,GAMpB,GAJI5C,EAAO/4I,SACP07I,EAAgBnlI,EAAOmd,QAAQ27E,QAAQ0pC,EAAO/4I,OAAOmC,KAAIxC,GAASi8I,EAA4Bj8I,EAAOo5I,EAAO/1I,WAC5G+1I,EAAOx+B,SACPohC,EAAgBplI,EAAOmd,QAAQ27E,QAAQ0pC,EAAOx+B,OAAOp4G,KAAIxC,GAASi8I,EAA4Bj8I,EAAOo5I,EAAO/1I,WAC5G+1I,EAAOhH,OAASgH,EAAOhH,MAAM7vI,OAAS,EAAG,CACzC6vI,EAAQkH,EAA2B,CAAE32I,KAAM,QAAS2qI,SAAU8L,EAAOhH,QAErE,MAAMsD,EAAQ0D,EAAO1D,MACjBA,EACAtD,EAAQhkI,EAAQ6/H,WAAWmE,EAAOsD,EAAM3hH,QAAS2hH,EAAMvH,OAClDiL,EAAO/1I,QAEZ+uI,EAAQwI,EAAaxI,EAAOgH,EAAO/1I,YAEZ,gBAAtB+1I,EAAOzD,YAAgCoG,EAAcx5I,OAAS,IACnE6vI,EAAQhkI,EAAQi/H,UAAU0O,IAE9B,OAAO3tI,EAAQ6jI,mBAAmB8J,EAAcx5I,OAAS,EAAIw5I,OAAgBz9I,EAAW09I,EAAcz5I,OAAS,EAAIy5I,OAAgB19I,EAAW8zI,GA1BnI8J,CAAsB9C,GACjC,MAAM,IAAIp8I,MAAM,uBAAuB4L,KAAKC,UAAUuwI,MA4B1D,SAAS6C,EAA4B7C,EAAQ/1I,GACzC,IAAI84I,EAAe94I,EACC,UAAhB+1I,EAAOz2I,OACPw5I,EAAe/C,EAAO15I,MAC1B,IAAI08I,EAAiBhD,EAAOpF,QAG5B,OAFImI,IACAC,EAAiBA,EAAe55I,KAAI83I,GAAU5+I,OAAO4W,OAAOgoI,EAAQ,CAAEj3I,MAAO84I,OAC1EC,EAAe55I,IAAIw3I,GAgC9B,SAASG,EAA+Bz3H,GACpC,MAAM25H,EAAyB,GACzBC,EAAehkI,MAAM4b,KAAKpxB,GAAWiT,QAAO,CAACqE,EAAKrX,KACpDqX,EAAIrX,IAAY,EACTqX,IACR,IACH,OAAOxD,EAAOmd,QAAQ9lB,aAAayU,EAAK,CACpC,CAACypH,EAAQttH,MAAMwzH,eAAiBlkI,IAErB,CAAErK,OAAQqK,EAAIE,SAAS,IAElC,CAAC89H,EAAQttH,MAAMixH,MAAO,CAAC3hI,EAAIC,KAChB,CACHtK,OAAQsK,EAAQE,WAAW6qI,EAAgBhrI,EAAGjL,SAAUiL,EAAGhL,UAAWg2I,EAAgBhrI,EAAG/K,QAAS+1I,EAAgBhrI,EAAG9K,QACrHgL,SAAS,IAGjB,CAAC89H,EAAQttH,MAAMkxH,SAAU,CAAC5hI,EAAIC,KACnB,CACHtK,OAAQsK,EAAQG,cAAc4qI,EAAgBhrI,EAAGjL,SAAUi2I,EAAgBhrI,EAAGhL,WAAYg2I,EAAgBhrI,EAAG/K,QAAS+1I,EAAgBhrI,EAAG9K,QACzIgL,SAAS,IAGjB,CAAC89H,EAAQttH,MAAM6uH,WAAav/H,IAEjB,CACHrK,OAAQsK,EAAQo/H,gBAAgB2M,EAA+BhsI,EAAGnO,OAAQmO,EAAGs/H,UAC7Ep/H,SAAS,MAIrB,SAAS8qI,EAAgBvrI,GACrB,GAAsB,cAAlBA,EAAKtK,SAA0B,CAC/B,IAAIP,EAAWs5I,EAAuBzuI,EAAK/R,OAM3C,OALKkH,IACDA,EAAW6T,EAAOmd,QAAQwoH,qBAAqB3uI,EAAK/R,MAAOygJ,EAAcluI,EAAQjF,aACjFmzI,EAAav5I,EAASlH,QAAS,EAC/BwgJ,EAAuBzuI,EAAK/R,OAASkH,GAElCA,EAEX,OAAO6K,wCCtuBf,IAAImmE,EAAmBv3E,MAAQA,KAAKu3E,iBAAoB,SAAU9kC,GAC9D,OAAQA,GAAOA,EAAIxwC,WAAcwwC,EAAM,CAAE,QAAWA,IAExDvzC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtD,MAAM2gJ,EAAY,EAAQ,OACpBlQ,EAAYv4D,EAAgB,EAAQ,QAC1C,MAAM/lE,EAKFpH,eAAe8V,GACX,OAAOpE,MAAMtZ,UAAUic,UAAUyB,GAAK5S,QAAOW,GAAKA,IAKtD7D,iBAAiB61I,GACb,GAAIA,EAAQn5I,SAAU,CAClB,GAAyB,SAArBm5I,EAAQn5I,SACR,MAAO,CACHX,KAAM,UACNW,SAAU,OACVJ,QAAS8K,EAAK0uI,UAAUD,EAAQv5I,SAChCC,UAAW6K,EAAK0uI,UAAUD,EAAQt5I,WAClCC,OAAQ4K,EAAK0uI,UAAUD,EAAQr5I,QAC/BC,MAAO2K,EAAK0uI,UAAUD,EAAQp5I,QAGjC,CACD,IAAIS,EAAS,CAAER,SAAUm5I,EAAQn5I,SAAUzH,MAAO4gJ,EAAQ5gJ,OAK1D,OAJI4gJ,EAAQj4I,WACRV,EAAOU,SAAWi4I,EAAQj4I,UAC1Bi4I,EAAQtrB,WACRrtH,EAAOqtH,SAAWnjH,EAAK0uI,UAAUD,EAAQtrB,WACtCrtH,GAGf,GAAIwU,MAAMC,QAAQkkI,GACd,OAAOA,EAAQj6I,KAAIyoB,GAAKjd,EAAK0uI,UAAUzxH,KAC3C,GAAIwxH,IAAY/gJ,OAAO+gJ,GAAU,CAC7B,IAAI34I,EAAS,GACb,IAAK,IAAInG,KAAOjC,OAAO0N,KAAKqzI,GACxB34I,EAAOnG,GAAOqQ,EAAK0uI,UAAUD,EAAQ9+I,IACzC,OAAOmG,EAEX,OAAO24I,EASX71I,wBAAwBuH,GACpB,MAAMrL,EAAY,GAClB,SAAS65I,EAAYxlH,GACZr0B,EAAUo7B,MAAK0+G,GAAMzlH,EAAEt7B,QAAU+gJ,EAAG/gJ,SACrCiH,EAAUb,KAAKk1B,GAEvB,SAAS0lH,EAAY75I,GACa,aAA1BA,EAAKE,QAAQI,UACbq5I,EAAY35I,EAAKE,SACW,aAA5BF,EAAKG,UAAUG,UACfq5I,EAAY35I,EAAKG,WACQ,aAAzBH,EAAKI,OAAOE,UACZq5I,EAAY35I,EAAKI,QACO,aAAxBJ,EAAKK,MAAMC,UACXq5I,EAAY35I,EAAKK,OACS,SAA1BL,EAAKE,QAAQI,UACbu5I,EAAY75I,EAAKE,SACW,SAA5BF,EAAKG,UAAUG,UACfu5I,EAAY75I,EAAKG,WACQ,SAAzBH,EAAKI,OAAOE,UACZu5I,EAAY75I,EAAKI,QACO,SAAxBJ,EAAKK,MAAMC,UACXu5I,EAAY75I,EAAKK,OAwDzB,OArDA2K,EAAK8uI,iBAAiB3uI,EAAI,CACtB,CAACquI,EAAU39H,MAAMmyH,YAAc7iI,IACvBA,EAAGqB,iBAAmBgtI,EAAUhQ,gBAAgByE,WAAa9iI,EAAGpL,UAChE45I,EAAYxuI,EAAGpL,WAEZ,GAEX,CAACy5I,EAAU39H,MAAMmvH,QAAU7/H,IACvBwuI,EAAYxuI,EAAGpL,WACR,GAEX,CAACy5I,EAAU39H,MAAM2vH,OAASrgI,IACG,aAArBA,EAAGzO,KAAK4D,UACRq5I,EAAYxuI,EAAGzO,OACZ,GAEX,CAAC88I,EAAU39H,MAAM4vH,OAAStgI,IACtBA,EAAGrL,UAAUpF,QAAQi/I,IACd,GAEX,CAACH,EAAU39H,MAAMixH,MAAQ3hI,IACO,aAAxBA,EAAGjL,QAAQI,UACXq5I,EAAYxuI,EAAGjL,SACQ,aAAvBiL,EAAG/K,OAAOE,UACVq5I,EAAYxuI,EAAG/K,QACO,aAAtB+K,EAAG9K,MAAMC,UACTq5I,EAAYxuI,EAAG9K,OACS,SAAxB8K,EAAGjL,QAAQI,UACXu5I,EAAY1uI,EAAGjL,SACQ,SAAvBiL,EAAG/K,OAAOE,UACVu5I,EAAY1uI,EAAG/K,QACO,SAAtB+K,EAAG9K,MAAMC,UACTu5I,EAAY1uI,EAAG9K,QACZ,GAEX,CAACm5I,EAAU39H,MAAMkxH,SAAW5hI,IACxB0uI,EAAY1uI,IACL,GAEX,CAACquI,EAAU39H,MAAMmxH,SAAW7hI,IACxBA,EAAGrL,UAAUpF,QAAQi/I,IACd,GAEX,CAACH,EAAU39H,MAAM0xH,SAAWpiI,IACC,aAArBA,EAAGzO,KAAK4D,UACRq5I,EAAYxuI,EAAGzO,OACZ,GAEX,CAAC88I,EAAU39H,MAAM0pF,QAAUp6F,IACvBA,EAAGrL,UAAUpF,QAAQi/I,IACd,KAGR75I,EAUX8D,wBAAwBuH,EAAI4uI,GACxB,IAAIj5I,EAASqK,EACT6uI,GAAc,EAClB,MAAMxyI,EAAWuyI,EAAU5uI,EAAGxL,MAI9B,GAHI6H,IAEAwyI,EAAcxyI,EAAS2D,KACtB6uI,EACD,OACJ,IAAIC,EAAa9uI,GAAOH,EAAK8uI,iBAAiB3uI,EAAI4uI,GAClD,OAAQj5I,EAAOnB,MACX,KAAK65I,EAAU39H,MAAMiuH,IACjBhpI,EAAO9D,MAAMwC,IAAIy6I,GACjB,MACJ,KAAKT,EAAU39H,MAAMmuH,IACjBiQ,EAAUn5I,EAAO9D,OACjB,MACJ,KAAKw8I,EAAU39H,MAAM0uH,IACjBzpI,EAAOwpI,SAAS5vI,QAAQu/I,GACxB,MACJ,KAAKT,EAAU39H,MAAM6uH,UACjBuP,EAAUn5I,EAAO9D,OACjB8D,EAAO2pI,SAASjrI,IAAIy6I,GACpB,MACJ,KAAKT,EAAU39H,MAAM+uH,SAGrB,KAAK4O,EAAU39H,MAAMivH,SACjBmP,EAAUn5I,EAAO9D,OACjB,MACJ,KAAKw8I,EAAU39H,MAAMmyH,WACbltI,EAAO0L,iBAAmBgtI,EAAUhQ,gBAAgB2E,WACpD8L,EAAUn5I,EAAO9D,OAErB,MACJ,KAAKw8I,EAAU39H,MAAMmvH,OAIrB,KAAKwO,EAAU39H,MAAMyvH,OACjB2O,EAAUn5I,EAAO9D,OACjBi9I,EAAUn5I,EAAOyL,YACjB,MACJ,KAAKitI,EAAU39H,MAAMuvH,KAGrB,KAAKoO,EAAU39H,MAAM2vH,MACjByO,EAAUn5I,EAAO9D,OACjB,MACJ,KAAKw8I,EAAU39H,MAAM4vH,MACjBwO,EAAUn5I,EAAO9D,OACjB8D,EAAO6K,WAAWjR,QAAQu/I,GAC1B,MACJ,KAAKT,EAAU39H,MAAM8vH,IACjBsO,EAAUn5I,EAAOoK,MACjB,MACJ,KAAKsuI,EAAU39H,MAAMgwH,KACjB/qI,EAAO9D,MAAMwC,IAAIy6I,GACjB,MACJ,KAAKT,EAAU39H,MAAMkwH,UACjBjrI,EAAO9D,MAAMwC,IAAIy6I,GACbn5I,EAAOyL,YACP0tI,EAAUn5I,EAAOyL,YACrB,MACJ,KAAKitI,EAAU39H,MAAMowH,KACjB,MACJ,KAAKuN,EAAU39H,MAAMswH,MACjBrrI,EAAO9D,MAAMwC,IAAIy6I,GACjB,MACJ,KAAKT,EAAU39H,MAAMwwH,IAErB,KAAKmN,EAAU39H,MAAM2wH,IACjB,MACJ,KAAKgN,EAAU39H,MAAM6wH,iBACjBuN,EAAUn5I,EAAOoK,MACjB,MACJ,KAAKsuI,EAAU39H,MAAMgxH,SACjBoN,EAAUn5I,EAAO9D,OACjB8D,EAAO8rI,YAAYlyI,QAAQu/I,GAC3B,MACJ,KAAKT,EAAU39H,MAAMixH,KACjBmN,EAAUn5I,EAAOX,WACjB,MACJ,KAAKq5I,EAAU39H,MAAMkxH,QACjB,MACJ,KAAKyM,EAAU39H,MAAMmxH,QAGrB,KAAKwM,EAAU39H,MAAMqxH,QACjB+M,EAAUn5I,EAAO9D,OACjB,MACJ,KAAKw8I,EAAU39H,MAAMuxH,IACjBtsI,EAAO9D,MAAMwC,IAAIy6I,GACjB,MACJ,KAAKT,EAAU39H,MAAM0xH,QAGrB,KAAKiM,EAAU39H,MAAM4xH,MACjBwM,EAAUn5I,EAAO9D,OACjB,MACJ,KAAKw8I,EAAU39H,MAAM8xH,MACjB7sI,EAAO9D,MAAMwC,IAAIy6I,GACjB,MACJ,KAAKT,EAAU39H,MAAM0pF,OACjB,MACJ,KAAKi0C,EAAU39H,MAAMgyH,kBAGrB,KAAK2L,EAAU39H,MAAMkyH,iBACjBkM,EAAUn5I,EAAOoK,MACjB,MAEJ,KAAKsuI,EAAU39H,MAAMmzH,iBACjBluI,EAAOiuI,QAAQr0I,SAAQuuC,GAAUgxG,EAAUhxG,KAC3C,MACJ,KAAKuwG,EAAU39H,MAAMwzH,cACbvuI,EAAOzD,QACPyD,EAAOzD,OAAO3C,SAAQkF,GAAWq6I,EAAUr6I,KAC3CkB,EAAO82G,QACP92G,EAAO82G,OAAOl9G,SAAQkF,GAAWq6I,EAAUr6I,KAC3CkB,EAAOsuI,OACP6K,EAAUn5I,EAAOsuI,OACrB,MAEJ,KAAKoK,EAAU39H,MAAM0zH,KACrB,KAAKiK,EAAU39H,MAAM6zH,MACrB,KAAK8J,EAAU39H,MAAM+zH,OACrB,KAAK4J,EAAU39H,MAAMi0H,KACrB,KAAK0J,EAAU39H,MAAMm0H,IACrB,KAAKwJ,EAAU39H,MAAMq0H,KACrB,KAAKsJ,EAAU39H,MAAMu0H,KAAM,MAC3B,QAAS,MAAM,IAAIp2I,MAAM,0BAA0B8G,EAAOnB,SAclEiE,oBAAoBuH,EAAI4uI,EAAW3uI,GAC/B,IAAItK,EAASqK,EACT6uI,GAAc,EAClB5uI,EAAUA,GAAW,IAAIk+H,EAAUv4G,QACnC,MAAMvpB,EAAWuyI,EAAU5uI,EAAGxL,MAI9B,GAHI6H,KAEG1G,OAAAA,EAAQuK,QAAS2uI,GAAgBxyI,EAAS2D,EAAIC,KAChD4uI,EACD,OAAOl5I,EACX,IAAIo5I,EAAS/uI,GAAOH,EAAKC,aAAaE,EAAI4uI,EAAW3uI,GAErD,OAAQtK,EAAOnB,MACX,KAAK65I,EAAU39H,MAAMiuH,IACjB,OAAO1+H,EAAQw+H,UAAU9oI,EAAO9D,MAAMwC,IAAI06I,IAC9C,KAAKV,EAAU39H,MAAMmuH,IACjB,OAAO5+H,EAAQ2+H,UAAUmQ,EAAMp5I,EAAO9D,QAC1C,KAAKw8I,EAAU39H,MAAM0uH,IACjB,OAAOn/H,EAAQi/H,UAAUvpI,EAAOwpI,SAAS9qI,IAAI06I,IACjD,KAAKV,EAAU39H,MAAM6uH,UACjB,OAAOt/H,EAAQo/H,gBAAgB0P,EAAMp5I,EAAO9D,OAAQ8D,EAAO2pI,SAASjrI,IAAI06I,IAC5E,KAAKV,EAAU39H,MAAM+uH,SACjB,OAAOx/H,EAAQu/H,eAAeuP,EAAMp5I,EAAO9D,OAAQ8D,EAAO8wH,OAC9D,KAAK4nB,EAAU39H,MAAMivH,SACjB,OAAO1/H,EAAQy/H,eAAeqP,EAAMp5I,EAAO9D,QAC/C,KAAKw8I,EAAU39H,MAAMmyH,WACjB,OAAOhjI,EAAKmvI,cAAcr5I,EAAQi5I,EAAW3uI,GACjD,KAAKouI,EAAU39H,MAAMmvH,OACjB,OAAO5/H,EAAQ2/H,aAAamP,EAAMp5I,EAAO9D,OAAQ8D,EAAOf,SAAUm6I,EAAMp5I,EAAOyL,aACnF,KAAKitI,EAAU39H,MAAMyvH,OACjB,OAAOlgI,EAAQigI,aAAa6O,EAAMp5I,EAAO9D,OAAQk9I,EAAMp5I,EAAOyL,aAClE,KAAKitI,EAAU39H,MAAMuvH,KACjB,OAAOhgI,EAAQ6/H,WAAWiP,EAAMp5I,EAAO9D,OAAQ,IAAI8D,EAAOiwB,SAAU,IAAIjwB,EAAOqqI,QACnF,KAAKqO,EAAU39H,MAAM2vH,MACjB,OAAOpgI,EAAQmgI,YAAY2O,EAAMp5I,EAAO9D,OAAQ8D,EAAOpE,MAC3D,KAAK88I,EAAU39H,MAAM4vH,MACjB,OAAOrgI,EAAQM,YAAYwuI,EAAMp5I,EAAO9D,OAAQ,GAAGib,OAAOnX,EAAOhB,WAAYgB,EAAO6K,WAAWnM,IAAI06I,IACvG,KAAKV,EAAU39H,MAAM8vH,IACjB,OAAOvgI,EAAQsgI,UAAUwO,EAAMp5I,EAAOoK,OAC1C,KAAKsuI,EAAU39H,MAAMgwH,KACjB,OAAOzgI,EAAQwgI,WAAW9qI,EAAO9D,MAAMwC,IAAI06I,IAC/C,KAAKV,EAAU39H,MAAMkwH,UACjB,OAAO3gI,EAAQ0gI,eAAeoO,EAAMp5I,EAAO9D,MAAM,IAAKk9I,EAAMp5I,EAAO9D,MAAM,IAAK8D,EAAOyL,WAAa2tI,EAAMp5I,EAAOyL,iBAAcjR,GACjI,KAAKk+I,EAAU39H,MAAMowH,KACjB,OAAO7gI,EAAQ4gI,WAAWlrI,EAAOy9E,KACrC,KAAKi7D,EAAU39H,MAAMswH,MACjB,OAAO/gI,EAAQ8gI,YAAYgO,EAAMp5I,EAAO9D,MAAM,IAAKk9I,EAAMp5I,EAAO9D,MAAM,KAC1E,KAAKw8I,EAAU39H,MAAMwwH,IACjB,OAAOjhI,EAAQghI,YACnB,KAAKoN,EAAU39H,MAAM2wH,IACjB,OAAOphI,EAAQkhI,UAAU,GAAGr0H,OAAOnX,EAAOyrI,OAC9C,KAAKiN,EAAU39H,MAAM6wH,iBACjB,OAAOthI,EAAQqhI,oBAAoByN,EAAMp5I,EAAOoK,OACpD,KAAKsuI,EAAU39H,MAAMgxH,SACjB,OAAOzhI,EAAQuhI,cAAcuN,EAAMp5I,EAAO9D,OAAQ8D,EAAO8rI,YAAYptI,IAAI06I,IAC7E,KAAKV,EAAU39H,MAAMixH,KACjB,OAAO1hI,EAAQE,WAAWxK,EAAOZ,QAASg6I,EAAMp5I,EAAOX,WAAYW,EAAOV,OAAQU,EAAOT,OAC7F,KAAKm5I,EAAU39H,MAAMkxH,QACjB,OAAO3hI,EAAQG,cAAczK,EAAOZ,QAASY,EAAOX,UAAWW,EAAOV,OAAQU,EAAOT,OACzF,KAAKm5I,EAAU39H,MAAMmxH,QACjB,OAAO5hI,EAAQa,cAAciuI,EAAMp5I,EAAO9D,OAAQ,IAAI8D,EAAOhB,YACjE,KAAK05I,EAAU39H,MAAMqxH,QACjB,OAAO9hI,EAAQ6hI,cAAciN,EAAMp5I,EAAO9D,QAC9C,KAAKw8I,EAAU39H,MAAMuxH,IACjB,OAAOhiI,EAAQ+hI,UAAUrsI,EAAO9D,MAAMwC,IAAI06I,IAC9C,KAAKV,EAAU39H,MAAM0xH,QACjB,OAAOniI,EAAQiiI,cAAc6M,EAAMp5I,EAAO9D,OAAQ8D,EAAOpE,KAAMoE,EAAOwsI,QAC1E,KAAKkM,EAAU39H,MAAM4xH,MACjB,OAAOriI,EAAQoiI,YAAY0M,EAAMp5I,EAAO9D,OAAQ8D,EAAOohC,MAAOphC,EAAOvB,QACzE,KAAKi6I,EAAU39H,MAAM8xH,MACjB,OAAOviI,EAAQsiI,YAAY5sI,EAAO9D,MAAMwC,IAAI06I,IAChD,KAAKV,EAAU39H,MAAM0pF,OACjB,OAAOn6F,EAAQkB,aAAa,GAAG2L,OAAOnX,EAAOhB,WAAYgB,EAAOmE,SAASzF,KAAIyd,GAAKvkB,OAAO4W,OAAO,GAAI2N,MACxG,KAAKu8H,EAAU39H,MAAMgyH,kBACjB,OAAOziI,EAAQwiI,qBAAqBsM,EAAMp5I,EAAOoK,OACrD,KAAKsuI,EAAU39H,MAAMkyH,iBACjB,OAAO3iI,EAAQ0iI,oBAAoBoM,EAAMp5I,EAAOoK,OAEpD,KAAKsuI,EAAU39H,MAAMmzH,iBACjB,OAAO5jI,EAAQ0jI,sBAAsBhuI,EAAOiuI,QAAQvvI,IAAI06I,IAC5D,KAAKV,EAAU39H,MAAMwzH,cACjB,OAAOjkI,EAAQ6jI,mBAAmBnuI,EAAOzD,OAASyD,EAAOzD,OAAOmC,IAAI06I,QAAS5+I,EAAWwF,EAAO82G,OAAS92G,EAAO82G,OAAOp4G,IAAI06I,QAAS5+I,EAAWwF,EAAOsuI,MAAQ8K,EAAMp5I,EAAOsuI,YAAS9zI,GACvL,KAAKk+I,EAAU39H,MAAM0zH,KACjB,OAAOnkI,EAAQkkI,WAAWxuI,EAAO4N,OAAQ5N,EAAO6N,YAAa7N,EAAOwsI,QACxE,KAAKkM,EAAU39H,MAAM6zH,MACjB,OAAOtkI,EAAQqkI,YAAY3uI,EAAO4N,OAAQ5N,EAAOwsI,QACrD,KAAKkM,EAAU39H,MAAM+zH,OACjB,OAAOxkI,EAAQukI,aAAa7uI,EAAO4N,OAAQ5N,EAAOwsI,QACtD,KAAKkM,EAAU39H,MAAMi0H,KACjB,OAAO1kI,EAAQykI,WAAW/uI,EAAO4N,OAAQ5N,EAAOwsI,QACpD,KAAKkM,EAAU39H,MAAMm0H,IACjB,OAAO5kI,EAAQ2kI,UAAUjvI,EAAO4N,OAAQ5N,EAAO6N,aACnD,KAAK6qI,EAAU39H,MAAMq0H,KACjB,OAAO9kI,EAAQ6kI,WAAWnvI,EAAO4N,OAAQ5N,EAAO6N,aACpD,KAAK6qI,EAAU39H,MAAMu0H,KACjB,OAAOhlI,EAAQ+kI,WAAWrvI,EAAO4N,OAAQ5N,EAAO6N,aACpD,QAAS,MAAM,IAAI3U,MAAM,0BAA0B8G,EAAOnB,SAYlEiE,qBAAqB2F,EAAMwwI,EAAW3uI,GAClC,IAAIC,EAAWF,GAAOH,EAAKC,aAAaE,EAAI4uI,EAAW3uI,GACvD,OAAQ7B,EAAKiD,gBACT,KAAKgtI,EAAUhQ,gBAAgByE,UAC3B,OAAI1kI,EAAKxJ,SACEqL,EAAQ6+H,qBAAqB1gI,EAAKxJ,SAAUwJ,EAAKmD,WAAYrB,EAAQ9B,EAAKgD,YAAahD,EAAK4gI,SAAU5gI,EAAKw1G,WAE/G3zG,EAAQg/H,0BAA0B7gI,EAAKmD,WAAYrB,EAAQ9B,EAAKgD,YAAahD,EAAK4gI,SAAU5gI,EAAKw1G,WAC5G,KAAKy6B,EAAUhQ,gBAAgB2E,UAC3B,OAAO/iI,EAAQ8iI,0BAA0B3kI,EAAKI,IAAK0B,EAAQ9B,EAAKvM,QACpE,KAAKw8I,EAAUhQ,gBAAgB6E,MAC3B,OAAOjjI,EAAQgjI,sBAAsB7kI,EAAK7M,KAAM6M,EAAKrQ,KAAKsG,IAAI6L,IAClE,KAAKmuI,EAAUhQ,gBAAgBgF,SAC3B,OAAOpjI,EAAQkjI,yBAAyB/kI,EAAKglI,SAAUhlI,EAAKrQ,KAAKsG,IAAI6L,IACzE,KAAKmuI,EAAUhQ,gBAAgBiF,KAC3B,OAAOrjI,EAAQqB,qBAAqBlD,EAAKqB,MAC7C,KAAK4uI,EAAUhQ,gBAAgBmF,SAC3B,OAAOvjI,EAAQsjI,2BACnB,QAAS,MAAM,IAAI10I,MAAM,2BAA2BuP,EAAKiD,mBAGjE5I,4BAA4Bw2I,EAAOt6I,EAAWqG,GAC1C,IAAIk0I,EAAU,EACVC,EAAYF,EAChB,KAAOt6I,EAAUw6I,IACbA,EAAY,GAAGF,IAAQC,MAE3B,OAAOl0I,EAAYpG,SAASu6I,GAGhC12I,oBAAoBgH,GAChB,YAAyBtP,IAAlBsP,EAAKtK,UAA4C,SAAlBsK,EAAKtK,UAAyC,aAAlBsK,EAAKtK,SAE3EsD,cAAcgH,GACV,MAAyB,SAAlBA,EAAKtK,SAEhBsD,kBAAkBgH,GACd,MAAyB,aAAlBA,EAAKtK,UAGpB1H,EAAA,QAAkBoS,gCCpblBtS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+nL,wBAA0B/nL,EAAQqpL,WAAarpL,EAAQwlL,kBAAoBxlL,EAAQw8R,gBAAkBx8R,EAAQy8R,mBAAqBz8R,EAAQ08R,cAAgB18R,EAAQolL,oBAAiB,EAE3L,IAAIu3G,EAAmB,EAAQ,OAC/B78R,OAAOC,eAAeC,EAAS,iBAAkB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO05R,EAAiBv3G,kBAChH,IAAIw3G,EAAkB,EAAQ,OAC9B98R,OAAOC,eAAeC,EAAS,gBAAiB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO25R,EAAgBF,iBAC9G,IAAIG,EAAuB,EAAQ,OACnC/8R,OAAOC,eAAeC,EAAS,qBAAsB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO45R,EAAqBJ,sBACxH,IAAIK,EAAW,EAAQ,OACvBh9R,OAAOC,eAAeC,EAAS,kBAAmB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO65R,EAASN,mBACzG18R,OAAOC,eAAeC,EAAS,oBAAqB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO65R,EAASt3G,qBAC3G,IAAIu3G,EAAa,EAAQ,OACzBj9R,OAAOC,eAAeC,EAAS,aAAc,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO85R,EAAW1zG,cACtG,IAAI2zG,EAA4B,EAAQ,OACxCl9R,OAAOC,eAAeC,EAAS,0BAA2B,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO+5R,EAA0Bj1G,yDCflIjoL,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQi9R,aAAU,EAClB,MAAM/gQ,EAAI,EAAQ,OACZghQ,EAAc,EAAQ,OACtBC,EAAY,EAAQ,MACpB1gQ,EAAI,EAAQ,OACZ2gQ,EAAmB,EAAQ,OACjC,MAAMH,UAAgBG,EAAiBC,eACnCh9R,cACIE,SAASod,WACT/c,KAAK08R,OAASJ,EAAYK,iBAAiB9gQ,EAAE+gQ,gBAAgBC,UAC7D78R,KAAK88R,QAAUR,EAAYK,iBAAiB9gQ,EAAE+gQ,gBAAgBG,UAElE3yR,oBACI,OAAO,EAAImyR,EAAU1mB,SAAS,GAAGmnB,QAErC94R,KAAKwkC,GAED,MAAO,CAAEyqE,IADGnzG,KAAKi9R,qBAAqBv0P,GACxBqxD,MAAO,GAEzBktF,IAAIxkJ,EAAOrxB,GACP,MAAM8rR,EAAel9R,KAAKi9R,qBAAqB7rR,GAE/C,MAAO,CACH+hG,IAFQnzG,KAAK08R,OAAOr8Q,MAAM,CAACoiB,EAAM0wE,IAAK+pL,GAAel9R,KAAKm9R,eAG1DpjM,MAAOt3D,EAAMs3D,MAAQ,GAG7BzyF,OAAOm7B,GACH,MAAMs3D,EAAQ,IAAIz+D,EAAE8hQ,eAAe36P,EAAMs3D,OAEzC,OADe/5F,KAAK88R,QAAQz8Q,MAAM,CAACoiB,EAAM0wE,IAAKpZ,GAAQ/5F,KAAKm9R,eAC7CH,SAGtB59R,EAAQi9R,QAAUA,gCClClBn9R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQq9R,oBAAiB,EACzB,MAAMY,EAAoB,EAAQ,MAC5BC,EAAW,EAAQ,OACnBC,EAAiB,EAAQ,OA6B/Bn+R,EAAQq9R,eA5BR,MACIh9R,YAAYsQ,EAAMotR,GACdn9R,KAAKm9R,cAAgBA,EACrBn9R,KAAK2wI,SAAW5gI,EAAK4gI,SACrB3wI,KAAKulH,UAAYx1G,EAAKw1G,WAAa,IACnCvlH,KAAKw9R,gBAAkB,IAAIH,EAAkBI,gBAAgBN,EAAcO,kBAAmBP,EAAcQ,wBAEhHV,qBAAqB7rR,GAEjB,GAAsB,YAAlBA,EAAKtK,SACL,MAAM,IAAItG,MAAM,mBAAmB4Q,EAAK/R,kBAAkB+R,EAAKtK,yCAE9D,KAAK,EAAIy2R,EAAeK,aAAaxsR,EAAKujH,SAASt1H,MAAOi+R,EAASO,UAAUC,eAAgB99R,KAAKm9R,cAAcO,mBACjH,MAAM,IAAIl9R,MAAM,iBAAiB4Q,EAAKujH,SAASt1H,oBAAoB+R,EAAK/R,kBAAkB+R,EAAKtK,yCAEnG,OAAO9G,KAAKw9R,gBAAgBO,iBAAiB3sR,GAEjD4sR,aAAa5sR,GACT,GAAsB,YAAlBA,EAAKtK,SACL,MAAM,IAAItG,MAAM,mBAAmB4Q,EAAK/R,kBAAkB+R,EAAKtK,iCAEnE,MAAMm3R,EAAiBj+R,KAAKw9R,gBAAgBO,iBAAiB3sR,GAC7D,MAAO,CAAEjL,KAAM83R,EAAeC,SAAU7+R,MAAO4+R,EAAeE,YAElE/zR,qDC7BJlL,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQg/R,WAAQ,EAChB,MAAM7B,EAAY,EAAQ,MACpBC,EAAmB,EAAQ,OACjC,MAAM4B,UAAc5B,EAAiBC,eACjCryR,oBACI,OAAO,EAAImyR,EAAU1mB,SAAS,GAAGmnB,QAErC94R,KAAKwkC,GACD,OAAO,EAEXu+I,IAAIxkJ,EAAOrxB,GACP,OAAOqxB,EAAQ,EAEnBn7B,OAAOm7B,GACH,OAAO,EAAI85P,EAAU1mB,SAASpzO,GAAOu6P,SAG7C59R,EAAQg/R,MAAQA,gCClBhBl/R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQi/R,iBAAc,EACtB,MAAM9B,EAAY,EAAQ,MACpBC,EAAmB,EAAQ,OACjC,MAAM6B,UAAoB7B,EAAiBC,eACvCryR,oBACI,OAAO,EAAImyR,EAAUnxM,QAAQ,IAAI4xM,QAErC94R,KAAKwkC,GACD,OAAOA,EAAMrpC,MAEjB4nL,IAAIxkJ,EAAOrxB,GACP,OAAOqxB,EAAQziC,KAAKulH,UAAYn0G,EAAK/R,MAEzCiI,OAAOm7B,GACH,OAAO,EAAI85P,EAAUnxM,QAAQ3oD,GAAOu6P,SAG5C59R,EAAQi/R,YAAcA,gCClBtBn/R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQk/R,SAAM,EACd,MAAM9B,EAAmB,EAAQ,OACjC,MAAM8B,UAAY9B,EAAiBC,eAC/Bv4R,KAAKwkC,GACD,MAAM,MAAErpC,GAAUW,KAAKg+R,aAAat1P,GACpC,GAAuB,YAAnBA,EAAM5hC,SACN,MAAO,CAAEy3R,aAAcl/R,EAAO+R,KAAMs3B,GAExC,MAAM,IAAIloC,MAAM,4BAEpBymL,IAAIxkJ,EAAOrxB,GACP,MAAMotR,EAAYx+R,KAAKg+R,aAAa5sR,GACpC,OAAIotR,EAAUn/R,MAAQojC,EAAM87P,cAAkC,YAAlBntR,EAAKtK,SACtC,CACHy3R,aAAcC,EAAUn/R,MACxB+R,KAAAA,GAGDqxB,EAEXn7B,OAAOm7B,GACH,OAAOA,EAAMrxB,MAGrBhS,EAAQk/R,IAAMA,gCCzBdp/R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQq/R,SAAM,EACd,MAAMjC,EAAmB,EAAQ,OACjC,MAAMiC,UAAYjC,EAAiBC,eAC/Bv4R,KAAKwkC,GACD,MAAM,MAAErpC,GAAUW,KAAKg+R,aAAat1P,GACpC,GAAuB,YAAnBA,EAAM5hC,SACN,MAAO,CAAEy3R,aAAcl/R,EAAO+R,KAAMs3B,GAExC,MAAM,IAAIloC,MAAM,4BAEpBymL,IAAIxkJ,EAAOrxB,GACP,MAAMotR,EAAYx+R,KAAKg+R,aAAa5sR,GACpC,OAAIotR,EAAUn/R,MAAQojC,EAAM87P,cAAkC,YAAlBntR,EAAKtK,SACtC,CACHy3R,aAAcC,EAAUn/R,MACxB+R,KAAAA,GAGDqxB,EAEXn7B,OAAOm7B,GACH,OAAOA,EAAMrxB,MAGrBhS,EAAQq/R,IAAMA,gCCzBdv/R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQs/R,YAAS,EACjB,MAAMlC,EAAmB,EAAQ,OACjC,MAAMkC,UAAelC,EAAiBC,eAClCv4R,KAAKwkC,GACD,OAAOA,EAEXu+I,IAAIxkJ,EAAOrxB,GAEP,OAAOqxB,EAEXn7B,OAAOm7B,GACH,OAAOA,GAGfrjC,EAAQs/R,OAASA,gCCfjBx/R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQu/R,SAAM,EACd,MAAMrC,EAAc,EAAQ,OACtBC,EAAY,EAAQ,MACpB1gQ,EAAI,EAAQ,OACZ2gQ,EAAmB,EAAQ,OACjC,MAAMmC,UAAYnC,EAAiBC,eAC/Bh9R,cACIE,SAASod,WACT/c,KAAK08R,OAASJ,EAAYK,iBAAiB9gQ,EAAE+gQ,gBAAgBC,UAEjEzyR,oBACI,OAAO,EAAImyR,EAAU1mB,SAAS,GAAGmnB,QAErC94R,KAAKwkC,GACD,OAAO1oC,KAAKi9R,qBAAqBv0P,GAErCu+I,IAAIxkJ,EAAOrxB,GACP,MAAM8rR,EAAel9R,KAAKi9R,qBAAqB7rR,GAE/C,OADYpR,KAAK08R,OAAOr8Q,MAAM,CAACoiB,EAAOy6P,GAAel9R,KAAKm9R,eAG9D71R,OAAOm7B,GACH,OAAOA,EAAMu6P,SAGrB59R,EAAQu/R,IAAMA,gCC1Bdz/R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQq8I,iBAAc,EACtB,MAAMmjJ,EAAY,EAAQ,OACpBC,EAAU,EAAQ,OAClBC,EAAgB,EAAQ,OACxBC,EAAQ,EAAQ,OAChBC,EAAQ,EAAQ,OAChBC,EAAW,EAAQ,OACnBC,EAAQ,EAAQ,OACtB9/R,EAAQq8I,YAAc,CAClB1hD,MAAO8kM,EAAQT,MACfjrL,IAAK+rL,EAAMP,IACXvvP,IAAK4vP,EAAMP,IACXvvP,IAAK6vP,EAAMT,IACXa,IAAKP,EAAUvC,QACf+C,aAAcN,EAAcT,YAC5BgB,OAAQJ,EAASP,sCChBrBx/R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQy8R,wBAAqB,EAC7B,MAAMyD,EAA2B,EAAQ,OACnCtD,EAAkB,EAAQ,OAEhC,MAAMH,UAA2ByD,EAAyBC,uBACtD9/R,YAAYsQ,EAAM5P,EAASq/R,GACvB7/R,MAAMoQ,EAAMisR,EAAgBF,cAAc2D,gBAAgBt/R,GAAW,IAAKq/R,GAC1Ex/R,KAAK0kL,UAAY,IAAIs3G,EAAgBF,cAAc/rR,EAAKgD,WAAY5S,GAExE8mL,IAAIx7K,GACAzL,KAAKkE,KAAKuH,GAEdi0R,MAAMj0R,GACF,IACI,MAAM2F,EAAOpR,KAAK0kL,UAAUC,SAASl5K,GACrCzL,KAAKyiC,MAAQziC,KAAKkT,WAAW+zK,IAAIjnL,KAAKyiC,MAAOrxB,GAEjD,MAAOrF,GACH/L,KAAK2/R,UAAU5zR,IAGvB4zR,UAAUz0Q,GACN,GAAIlrB,KAAKw/R,WACL,MAAMt0Q,EAINlrB,KAAKinL,IAAM,OAEXjnL,KAAKsH,OAAS,OAGtBpD,KAAKwkC,GACD,IACI,MAAMk3P,EAAY5/R,KAAK0kL,UAAUC,SAASj8I,GAC1C1oC,KAAKyiC,MAAQziC,KAAKkT,WAAWhP,KAAK07R,GAC9B5/R,KAAKyiC,QACLziC,KAAKinL,IAAMjnL,KAAK0/R,MAAMl5Q,KAAKxmB,MAC3BA,KAAKsH,OAAStH,KAAK6/R,SAASr5Q,KAAKxmB,OAGzC,MAAO+L,GACH/L,KAAK2/R,UAAU5zR,KAI3B3M,EAAQy8R,mBAAqBA,gCC/C7B38R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+nL,6BAA0B,EAClC,MAAM40G,EAAmB,EAAQ,OAC3BuD,EAA2B,EAAQ,OACzC,MAAMn4G,UAAgCm4G,EAAyBC,uBAC3D9/R,YAAYsQ,EAAM5P,EAASq/R,GACvB7/R,MAAMoQ,EAAMgsR,EAAiBv3G,eAAei7G,gBAAgBt/R,GAAW,IAAKq/R,GAC5Ex/R,KAAK0kL,UAAY,IAAIq3G,EAAiBv3G,eAAez0K,EAAKgD,WAAY5S,GACtEH,KAAK8/R,eAAgB,EAEzB74G,IAAIx7K,GACA,OAAOzL,KAAKkE,KAAKuH,GAErB7L,YAAY6L,GACR,IACI,MAAM2F,QAAapR,KAAK0kL,UAAUC,SAASl5K,GAC3CzL,KAAKyiC,MAAQziC,KAAKkT,WAAW+zK,IAAIjnL,KAAKyiC,MAAOrxB,GAEjD,MAAOrF,GACH/L,KAAK2/R,UAAU5zR,IAGvB4zR,UAAUz0Q,GACN,GAAIlrB,KAAKw/R,WACL,MAAMt0Q,EAINlrB,KAAKinL,IAAMrnL,YAEXI,KAAKsH,OAAS,OACdtH,KAAK8/R,eAAgB,EAG7BlgS,WAAW8oC,GACP,IACI,MAAMk3P,QAAkB5/R,KAAK0kL,UAAUC,SAASj8I,GAChD,IAAKk3P,GAAa5/R,KAAK8/R,cACnB,OAEJ,GAAI9/R,KAAKyiC,MAGL,YADAziC,KAAKyiC,MAAQziC,KAAKkT,WAAW+zK,IAAIjnL,KAAKyiC,MAAOm9P,IAGjD5/R,KAAKyiC,MAAQziC,KAAKkT,WAAWhP,KAAK07R,GAC9B5/R,KAAKyiC,QACLziC,KAAKinL,IAAMjnL,KAAK0/R,MAAMl5Q,KAAKxmB,MAC3BA,KAAKsH,OAAStH,KAAK6/R,SAASr5Q,KAAKxmB,OAGzC,MAAO+L,GACH/L,KAAK2/R,UAAU5zR,KAI3B3M,EAAQ+nL,wBAA0BA,gCCxDlCjoL,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQolL,oBAAiB,EACzB,MAAMqwB,EAAW,EAAQ,OACnBkrF,EAAuB,EAAQ,OAC/BC,EAA4B,EAAQ,MAC1C,MAAMx7G,EACF/kL,YAAYwgS,EAAS9/R,EAAU,IAC3BH,KAAKigS,QAAUA,EAEf,MAAMC,EAAU//R,EAAQmP,0BAA4B,SAC9C6wR,EAAc37G,EAAei7G,gBAAgBt/R,GAC7CigS,EAAc,IAAIL,EAAqBM,mBAAmBnhS,OAAO4W,OAAO,CAAE3P,KAAM,QAAS+5R,QAAAA,GAAWC,IAC1GngS,KAAK+P,KAAOqwR,EAAYE,iBAAiBL,GACzCjgS,KAAK0kL,UAAY,IAAIs7G,EAA0BO,wBAAwBJ,EAAaC,GAExFh2R,uBAAuBjK,GACnB,MAAO,CACHkP,IAAKlP,EAAQkP,KAAO,IAAI7G,KAAKA,KAAK6G,OAClC/G,QAASnI,EAAQmI,cAAWxG,EAC5B0+R,cAAergS,EAAQqgS,eAAiB,IAAI3rF,EAC5C6oF,kBAAmB,CACfzwL,MAAO9sG,EAAQsgS,WAAa,IAAI5rF,EAChC6rF,WAAYvgS,EAAQwgS,cAAgB,KAAO,SAE/CrxR,yBAA0BnP,EAAQmP,yBAClCO,OAAQ1P,EAAQ0P,OAChB6gI,UAAWvwI,EAAQuwI,UACnBhhI,MAAOvP,EAAQuP,MACfiuR,uBAAwBx9R,EAAQw9R,yBAA0B,GAGlE/9R,eAAeq+H,GAEX,aADqBj+H,KAAK0kL,UAAUC,SAAS3kL,KAAK+P,KAAMkuH,IAC1C++J,QAElBp9R,oBAAoBq+H,GAEhB,aADqBj+H,KAAK0kL,UAAUC,SAAS3kL,KAAK+P,KAAMkuH,IAC1C2iK,YAElBhhS,yBAAyBq+H,GAErB,aADqBj+H,KAAK0kL,UAAUC,SAAS3kL,KAAK+P,KAAMkuH,IAIhE7+H,EAAQolL,eAAiBA,gCC5CzBtlL,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ08R,mBAAgB,EACxB,MAAMjnF,EAAW,EAAQ,OACnBkrF,EAAuB,EAAQ,OAC/Bc,EAA2B,EAAQ,OACzC,MAAM/E,EACFr8R,YAAYwgS,EAAS9/R,EAAU,IAC3BH,KAAKigS,QAAUA,EACfjgS,KAAKG,QAAUA,EAEf,MAAM+/R,EAAU//R,EAAQmP,0BAA4B,SAC9C6wR,EAAcrE,EAAc2D,gBAAgBt/R,GAC5CigS,EAAc,IAAIL,EAAqBM,mBAAmBnhS,OAAO4W,OAAO,CAAE3P,KAAM,OAAQ+5R,QAAAA,GAAWC,IACzGngS,KAAK+P,KAAOqwR,EAAYE,iBAAiBL,GACzCjgS,KAAK0kL,UAAY,IAAIm8G,EAAyBC,uBAAuBX,EAAaC,GAEtFh2R,uBAAuBjK,GACnB,MAAO,CACHkP,IAAKlP,EAAQkP,KAAO,IAAI7G,KAAKA,KAAK6G,OAClC/G,QAASnI,EAAQmI,cAAWxG,EAC5B0+R,cAAergS,EAAQqgS,eAAiB,IAAI3rF,EAC5C6oF,kBAAmB,CACfzwL,MAAO9sG,EAAQsgS,WAAa,IAAI5rF,EAChC6rF,WAAYvgS,EAAQwgS,cAAgB,KAAO,SAE/CrxR,yBAA0BnP,EAAQmP,yBAClCO,OAAQ1P,EAAQ0P,OAChB6gI,UAAWvwI,EAAQuwI,UACnBhhI,MAAOvP,EAAQuP,MACfiuR,uBAAwBx9R,EAAQw9R,yBAA0B,GAGlEh5G,SAAS1mD,GAEL,OADej+H,KAAK0kL,UAAUC,SAAS3kL,KAAK+P,KAAMkuH,GACpC++J,QAElBj4G,cAAc9mD,GAEV,OADej+H,KAAK0kL,UAAUC,SAAS3kL,KAAK+P,KAAMkuH,GACpC2iK,YAElBG,mBAAmB9iK,GAEf,OADej+H,KAAK0kL,UAAUC,SAAS3kL,KAAK+P,KAAMkuH,IAI1D7+H,EAAQ08R,cAAgBA,+BC7CxB58R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmhS,6BAA0B,EAClC,MAAMjlQ,EAAI,EAAQ,OACZ+hQ,EAAoB,EAAQ,MAC5Bl0Q,EAAM,EAAQ,OACd63Q,EAA4B,EAAQ,MAC1C,MAAMT,UAAgCS,EAA0BC,wBAC5DxhS,YAAYU,EAASq9R,GACjB79R,MAAM69R,GAAmB,IAAIH,EAAkBI,gBAAgBt9R,EAAQu9R,kBAAmBv9R,EAAQw9R,yBAClG39R,KAAKG,QAAUA,EACfH,KAAKkhS,cAAgB,CAEjB,CAAC5lQ,EAAE6lQ,eAAennB,MAAOh6Q,KAAKoR,KAAKoV,KAAKxmB,MACxC,CAACs7B,EAAE6lQ,eAAe/sK,UAAWp0H,KAAKuG,SAASigB,KAAKxmB,MAEhD,CAACs7B,EAAE6lQ,eAAeC,UAAWphS,KAAKqhS,aAAa76Q,KAAKxmB,MACpD,CAACs7B,EAAE6lQ,eAAeG,iBAAkBthS,KAAKuhS,oBAAoB/6Q,KAAKxmB,MAClE,CAACs7B,EAAE6lQ,eAAeK,OAAQxhS,KAAKyhS,UAAUj7Q,KAAKxmB,MAC9C,CAACs7B,EAAE6lQ,eAAeO,WAAY1hS,KAAK2hS,cAAcn7Q,KAAKxmB,MACtD,CAACs7B,EAAE6lQ,eAAeS,WAAY5hS,KAAK6hS,cAAcr7Q,KAAKxmB,MACtD,CAACs7B,EAAE6lQ,eAAeW,gBAAiB9hS,KAAK+hS,mBAAmBv7Q,KAAKxmB,OAGxEJ,eAAemQ,EAAMkuH,GACjB,MAAMymD,EAAY1kL,KAAKkhS,cAAcnxR,EAAKiD,gBAC1C,IAAK0xK,EACD,MAAM,IAAIv7J,EAAI64Q,sBAAsBjyR,GAExC,OAAO20K,EAAUl+J,KAAKxmB,KAAf0kL,CAAqB30K,EAAMkuH,GAEtCr+H,mBAAmBmQ,EAAMkuH,GACrB,MAAMgkK,EAAclyR,EAAKrQ,KAAKsG,KAAIklF,GAAOlrF,KAAK2kL,SAASz5F,EAAK+yC,KACtDikK,QAAmBl3R,QAAQ4nB,IAAIqvQ,GACrC,OAAOlyR,EAAKsQ,MAAM6hR,GAEtBtiS,0BAA0BmQ,EAAMkuH,GAC5B,MAAM0mD,EAAW3kL,KAAK2kL,SAASn+J,KAAKxmB,MAC9BG,EAAU,CACZT,KAAMqQ,EAAKrQ,KACXu+H,QAAAA,EACAy/J,kBAAmB19R,KAAKG,QAAQu9R,kBAChCruR,IAAKrP,KAAKG,QAAQkP,IAClB/G,QAAStI,KAAKG,QAAQmI,QACtBk4R,cAAexgS,KAAKG,QAAQqgS,cAC5B77G,SAAAA,EACAj1K,MAAO1P,KAAKG,QAAQuP,MACpBiuR,uBAAwB39R,KAAKG,QAAQw9R,wBAEzC,OAAO5tR,EAAKoyR,WAAWhiS,GAE3BP,qBAAqBF,EAAMu+H,GACvB,MAAMgkK,EAAcviS,EAAKsG,KAAIklF,GAAOlrF,KAAK2kL,SAASz5F,EAAK+yC,KACvD,aAAajzH,QAAQ4nB,IAAIqvQ,GAE7BriS,gBAAgBmQ,EAAMkuH,GAClB,OAAOluH,EAAKsQ,YAAYrgB,KAAKoiS,eAAeryR,EAAKrQ,KAAMu+H,IAE3Dr+H,yBAAyBmQ,EAAMkuH,GAC3B,aAAaluH,EAAKsQ,YAAYrgB,KAAKoiS,eAAeryR,EAAKrQ,KAAMu+H,IAEjEr+H,oBAAoBmQ,EAAMkuH,GACtB,IAAKj+H,KAAKG,QAAQ0P,OACd,MAAM,IAAIsZ,EAAIk5Q,gBAElB,OAAO,IAAI/mQ,EAAEgnQ,qBAAqBtiS,KAAKG,QAAQ0P,OAAOE,EAAKgD,WAAYkrH,IAG3Er+H,oBAAoBmQ,EAAMm7M,GACtB,IAAKlrN,KAAKG,QAAQuwI,UACd,MAAM,IAAIvnH,EAAIk5Q,gBAElB,OAAOriS,KAAKw9R,gBAAgB+E,6BAA6BviS,KAAKG,QAAQuwI,UAAU3gI,EAAKgD,cAG7F3T,EAAQmhS,wBAA0BA,gCC1ElCrhS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmgS,4BAAyB,EACjC,MAAMiD,EAAgB,EAAQ,OACxBr5Q,EAAM,EAAQ,OAqCpB/pB,EAAQmgS,uBApCR,MACI9/R,YAAYsQ,EAAMotR,EAAeqC,GAC7Bx/R,KAAKw/R,YAAa,EAClBx/R,KAAK+S,WAAahD,EAClB/P,KAAKkT,WAAa,IAAIsvR,EAAc/mJ,YAAY1rI,EAAKmD,YAAYnD,EAAMotR,GACvEn9R,KAAKw/R,WAAaA,IAAc,EAUpCp1R,kBAAkB2F,EAAMyvR,GAAa,GACjC,MAAMzyM,EAAMy1M,EAAc/mJ,YAAY1rI,EAAKmD,YAAYw0K,aACvD,QAAY5lL,IAARirF,GAAqByyM,EACrB,MAAM,IAAIr2Q,EAAIs5Q,oBAElB,OAAO11M,EAEXzlF,SACI,OAAOtH,KAAKkT,WAAWzT,YAAYioL,aASvCm4G,WACI,OAAO7/R,KAAKkT,WAAW5L,OAAOtH,KAAKyiC,sCCrC3CvjC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6hS,6BAA0B,EAClC,MAAM1E,EAAY,EAAQ,MACpBpzQ,EAAM,EAAQ,OAgBpB/pB,EAAQ6hS,wBAfR,MACIxhS,YAAY+9R,GACRx9R,KAAKw9R,gBAAkBA,EAE3BpsR,KAAKrB,EAAMkuH,GACP,OAAOluH,EAEXxJ,SAASwJ,EAAMkuH,GACX,MAAM7sH,EAAO6sH,EAAQ57H,KAAI,EAAIk6R,EAAUmG,iBAAiB3yR,IACxD,IAAKqB,EACD,MAAM,IAAI+X,EAAIw5Q,qBAAqB5yR,EAAK7M,KAAM+6H,GAElD,OAAOj+H,KAAKw9R,gBAAgB+E,uBAAuBnxR,mCChB3DlS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0hS,4BAAyB,EACjC,MAAMxlQ,EAAI,EAAQ,OACZ+hQ,EAAoB,EAAQ,MAC5Bl0Q,EAAM,EAAQ,OACd63Q,EAA4B,EAAQ,MAC1C,MAAMF,UAA+BE,EAA0BC,wBAC3DxhS,YAAYU,EAASq9R,GACjB79R,MAAM69R,GAAmB,IAAIH,EAAkBI,gBAAgBt9R,EAAQu9R,kBAAmBv9R,EAAQw9R,yBAClG39R,KAAKG,QAAUA,EACfH,KAAKkhS,cAAgB,CAEjB,CAAC5lQ,EAAE6lQ,eAAennB,MAAOh6Q,KAAKoR,KAAKoV,KAAKxmB,MACxC,CAACs7B,EAAE6lQ,eAAe/sK,UAAWp0H,KAAKuG,SAASigB,KAAKxmB,MAEhD,CAACs7B,EAAE6lQ,eAAeC,UAAWphS,KAAKqhS,aAAa76Q,KAAKxmB,MACpD,CAACs7B,EAAE6lQ,eAAeG,iBAAkBthS,KAAKuhS,oBAAoB/6Q,KAAKxmB,MAClE,CAACs7B,EAAE6lQ,eAAeK,OAAQxhS,KAAKyhS,UAAUj7Q,KAAKxmB,MAC9C,CAACs7B,EAAE6lQ,eAAeO,WAAY1hS,KAAK2hS,cAAcn7Q,KAAKxmB,MACtD,CAACs7B,EAAE6lQ,eAAeS,WAAY5hS,KAAK6hS,cAAcr7Q,KAAKxmB,MACtD,CAACs7B,EAAE6lQ,eAAeyB,eAAgB5iS,KAAK6iS,kBAAkBr8Q,KAAKxmB,OAGtE2kL,SAAS50K,EAAMkuH,GACX,MAAMymD,EAAY1kL,KAAKkhS,cAAcnxR,EAAKiD,gBAC1C,IAAK0xK,EACD,MAAM,IAAIv7J,EAAI64Q,sBAAsBjyR,GAExC,OAAO20K,EAAUl+J,KAAKxmB,KAAf0kL,CAAqB30K,EAAMkuH,GAEtCojK,aAAatxR,EAAMkuH,GACf,MAAMv+H,EAAOqQ,EAAKrQ,KAAKsG,KAAIklF,GAAOlrF,KAAK2kL,SAASz5F,EAAK+yC,KACrD,OAAOluH,EAAKsQ,MAAM3gB,GAEtB6hS,oBAAoBxxR,EAAMkuH,GACtB,MAAM0mD,EAAW3kL,KAAK2kL,SAASn+J,KAAKxmB,MAC9BG,EAAU,CACZT,KAAMqQ,EAAKrQ,KACXu+H,QAAAA,EACAy/J,kBAAmB19R,KAAKG,QAAQu9R,kBAChCruR,IAAKrP,KAAKG,QAAQkP,IAClB/G,QAAStI,KAAKG,QAAQmI,QACtBk4R,cAAexgS,KAAKG,QAAQqgS,cAC5B77G,SAAAA,EACAj1K,MAAO1P,KAAKG,QAAQuP,MACpBiuR,uBAAwB39R,KAAKG,QAAQw9R,wBAEzC,OAAO5tR,EAAK+yR,UAAU3iS,GAE1BshS,UAAU1xR,EAAMkuH,GACZ,MAAMv+H,EAAOqQ,EAAKrQ,KAAKsG,KAAIklF,GAAOlrF,KAAK2kL,SAASz5F,EAAK+yC,KACrD,OAAOluH,EAAKsQ,MAAM3gB,GAEtBmjS,kBAAkB9yR,EAAMkuH,GACpB,MAAMv+H,EAAOqQ,EAAKrQ,KAAKsG,KAAIklF,GAAOlrF,KAAK2kL,SAASz5F,EAAK+yC,KACrD,OAAOluH,EAAKsQ,MAAM3gB,GAEtBiiS,cAAc5xR,EAAMkuH,GAChB,IAAKj+H,KAAKG,QAAQ0P,OACd,MAAM,IAAIsZ,EAAIk5Q,gBAElB,OAAO,IAAI/mQ,EAAEgnQ,eAAetiS,KAAKG,QAAQ0P,OAAOE,EAAKgD,WAAYkrH,IAErE4jK,cAAc9xR,EAAMkuH,GAChB,IAAKj+H,KAAKG,QAAQuwI,UACd,MAAM,IAAIvnH,EAAI45Q,aAElB,OAAO/iS,KAAKw9R,gBAAgB+E,uBAAuBviS,KAAKG,QAAQuwI,UAAU3gI,EAAKgD,cAGvF3T,EAAQ0hS,uBAAyBA,gCCtEjC5hS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwiS,eAAY,EACpB,MAAMoB,EAAgB,EAAQ,OAQ9B5jS,EAAQwiS,UAPR,MACIniS,YAAYyD,EAAM6P,GACd/S,KAAKkD,KAAOA,EACZlD,KAAK+S,WAAaA,EAClB/S,KAAKgT,eAAiBgwR,EAAc7B,eAAeS,yCCP3D1iS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0iS,oBAAiB,EACzB,MAAMkB,EAAgB,EAAQ,OAS9B5jS,EAAQ0iS,eARR,MACIriS,YAAYyD,EAAMxD,EAAM2gB,GACpBrgB,KAAKkD,KAAOA,EACZlD,KAAKN,KAAOA,EACZM,KAAKqgB,MAAQA,EACbrgB,KAAKgT,eAAiBgwR,EAAc7B,eAAeW,+CCR3D5iS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQsiS,eAAY,EACpB,MAAMsB,EAAgB,EAAQ,OAO9B5jS,EAAQsiS,UANR,MACIjiS,YAAYsT,GACR/S,KAAK+S,WAAaA,EAClB/S,KAAKgT,eAAiBgwR,EAAc7B,eAAeO,wCCH3D,IAAWP,EAHXjiS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6jS,WAAa7jS,EAAQ+hS,oBAAiB,GAEnCA,EAUS/hS,EAAQ+hS,iBAAmB/hS,EAAQ+hS,eAAiB,KAT1C,UAAI,YAC9BA,EAA0B,UAAI,YAC9BA,EAAsB,MAAI,QAC1BA,EAAyB,SAAI,WAC7BA,EAAgC,gBAAI,kBACpCA,EAAqB,KAAI,OACzBA,EAAyB,SAAI,WAC7BA,EAA+B,eAAI,iBACnCA,EAA8B,cAAI,gBAStC/hS,EAAQ6jS,WANR,SAAoB98R,GAChB,GAAa,cAATA,GAAiC,YAATA,GAA+B,cAATA,EAC9C,OAAOA,iCCjBfjH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoiS,WAAQ,EAChB,MAAMwB,EAAgB,EAAQ,OAS9B5jS,EAAQoiS,MARR,MACI/hS,YAAYyD,EAAMxD,EAAM2gB,GACpBrgB,KAAKkD,KAAOA,EACZlD,KAAKN,KAAOA,EACZM,KAAKqgB,MAAQA,EACbrgB,KAAKgT,eAAiBgwR,EAAc7B,eAAeK,sCCR3DtiS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgiS,cAAW,EACnB,MAAM4B,EAAgB,EAAQ,OAQ9B5jS,EAAQgiS,SAPR,MACI3hS,YAAYC,EAAM2gB,GACdrgB,KAAKN,KAAOA,EACZM,KAAKqgB,MAAQA,EACbrgB,KAAKgT,eAAiBgwR,EAAc7B,eAAeC,yCCP3DliS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQkiS,qBAAkB,EAC1B,MAAM0B,EAAgB,EAAQ,OAS9B5jS,EAAQkiS,gBARR,MACI7hS,YAAYC,EAAMyiS,EAAYW,GAC1B9iS,KAAKN,KAAOA,EACZM,KAAKmiS,WAAaA,EAClBniS,KAAK8iS,UAAYA,EACjB9iS,KAAKgT,eAAiBgwR,EAAc7B,eAAeG,gDCR3DpiS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwjS,mBAAgB,EACxB,MAAMI,EAAgB,EAAQ,OAS9B5jS,EAAQwjS,cARR,MACInjS,YAAYyD,EAAMxD,EAAM2gB,GACpBrgB,KAAKkD,KAAOA,EACZlD,KAAKN,KAAOA,EACZM,KAAKqgB,MAAQA,EACbrgB,KAAKgT,eAAiBgwR,EAAc7B,eAAeyB,8CCR3D1jS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8jS,oBAAsB9jS,EAAQ+jS,kBAAoB/jS,EAAQgkS,cAAgBhkS,EAAQikS,kBAAoBjkS,EAAQkkS,gBAAkBlkS,EAAQkjS,eAAiBljS,EAAQmkS,cAAgBnkS,EAAQokS,aAAepkS,EAAQqkS,eAAiBrkS,EAAQg+R,eAAiBh+R,EAAQskS,eAAiBtkS,EAAQ+0H,QAAU/0H,EAAQukS,wBAA0BvkS,EAAQg0H,UAAYh0H,EAAQ20H,UAAY30H,EAAQ46Q,UAAO,EACtY,MAAM7rQ,EAAqB,EAAQ,OAC7B0tB,EAAI,EAAQ,OACZyhQ,EAAW,EAAQ,OACnBn0Q,EAAM,EAAQ,OACdo0Q,EAAiB,EAAQ,OACzByF,EAAgB,EAAQ,OACxBvpK,EAAK,IAAItrH,EAAmBE,YAClC,MAAM2rQ,EACFv6Q,cACIO,KAAKgT,eAAiBgwR,EAAc7B,eAAennB,KAEvD1mP,MACI,MAAM,IAAInK,EAAIy6Q,qBAAqB,CAAC5jS,MAAO67B,EAAE+gQ,gBAAgBiH,KAEjEjD,YACI,MAAM,IAAIz3Q,EAAI26Q,iBAAiB9jS,OAGvCZ,EAAQ46Q,KAAOA,EAef56Q,EAAQ20H,UAbR,cAAwBimJ,EACpBv6Q,YAAYJ,GACRM,QACAK,KAAKX,MAAQA,EACbW,KAAK8G,SAAW,YAEpBk2R,QACI,OAAOvjK,EAAG3F,UAAU9zH,KAAKX,OAE7Bi0B,MACI,OAAOtzB,KAAKX,QAKpB,MAAM+zH,UAAkB4mJ,EACpBv6Q,YAAYJ,GACRM,QACAK,KAAK8G,SAAW,YAChB9G,KAAKX,MAAyB,iBAAVA,EAAqBo6H,EAAGzF,UAAU30H,GAASA,EAEnE+K,gBAEI,OADAgpH,EAAU2wK,SAAW,EACd3wK,EAAU4wK,OAAOn2R,WAE5BmvR,QACI,OAAOh9R,KAAKX,OAGpBD,EAAQg0H,UAAYA,EACpBA,EAAU2wK,QAAU,EAQpB3kS,EAAQukS,wBANR,SAAiC5zR,GAC7B,GAAsB,YAAlBA,EAAKjJ,SACL,OAAOiJ,GAKf,MAAMokH,UAAgB6lJ,EAQlBv6Q,YAAY0+R,EAAYD,EAAU+F,EAAUj8R,EAAUk8R,GAClDvkS,QACAK,KAAKm+R,WAAaA,EAClBn+R,KAAKk+R,SAAWA,EAChBl+R,KAAKikS,SAAWA,EAChBjkS,KAAKgI,SAAWA,EAChBhI,KAAK8G,SAAW,UAChB9G,KAAKkkS,eAAiBA,GAAkB,QAE5ClH,QACI,OAAOvjK,EAAGxF,QAAQj0H,KAAKikS,UAAYjkS,KAAKszB,MAAOtzB,KAAKgI,UAAYyxH,EAAG3F,UAAU9zH,KAAKk+R,WAEtF5qQ,MACI,OAAOtzB,KAAKikS,UAAYjkS,KAAKm+R,WAAWtwR,YAGhDzO,EAAQ+0H,QAAUA,EAClB,MAAMuvK,UAAuBvvK,EACzB10H,YAAY0+R,EAAYD,EAAU+F,EAAUj8R,EAAUk8R,GAClDvkS,MAAMw+R,EAAYD,EAAU+F,EAAUj8R,EAAUk8R,GAChDlkS,KAAKm+R,WAAaA,EAClBn+R,KAAKikS,SAAWA,EAChBjkS,KAAKgI,SAAWA,EAEpB44R,YACI,QAAS5gS,KAAKm+R,WAElBnB,QACI,MAAM5rR,EAAOzR,MAAMq9R,QAInB,OAHK35R,OAAO0+D,SAAS/hE,KAAKm+R,cACtB/sR,EAAK/R,MAAQ+R,EAAK/R,MAAMohB,QAAQ,WAAY,QAEzCrP,EAEXkiB,MACI,OAAOtzB,KAAKikS,UACRjkS,KAAKmkS,kBAAkBnkS,KAAKm+R,aAGxC/+R,EAAQskS,eAAiBA,EAYzBtkS,EAAQg+R,eAXR,cAA6BsG,EACzBjkS,YAAY0+R,EAAYD,EAAU+F,EAAUj8R,GACxCrI,MAAMw+R,EAAYD,GAAYZ,EAAS8G,QAAQryI,YAAakyI,EAAUj8R,EAAU,WAChFhI,KAAKm+R,WAAaA,EAClBn+R,KAAKikS,SAAWA,EAChBjkS,KAAKgI,SAAWA,EAEpBm8R,kBAAkBp3M,GACd,OAAOA,EAAIwyF,QAAQ,KAe3BngL,EAAQqkS,eAXR,cAA6BC,EACzBjkS,YAAY0+R,EAAYD,EAAU+F,EAAUj8R,GACxCrI,MAAMw+R,EAAYD,GAAYZ,EAAS8G,QAAQpyI,YAAaiyI,EAAUj8R,EAAU,WAChFhI,KAAKm+R,WAAaA,EAClBn+R,KAAKikS,SAAWA,EAChBjkS,KAAKgI,SAAWA,EAEpBm8R,kBAAkBp3M,GACd,OAAOA,EAAIl/E,aAenBzO,EAAQokS,aAXR,cAA2BE,EACvBjkS,YAAY0+R,EAAYD,EAAU+F,EAAUj8R,GACxCrI,MAAMw+R,EAAYD,GAAYZ,EAAS8G,QAAQC,UAAWJ,EAAUj8R,EAAU,SAC9EhI,KAAKm+R,WAAaA,EAClBn+R,KAAKikS,SAAWA,EAChBjkS,KAAKgI,SAAWA,EAEpBm8R,kBAAkBp3M,GACd,OAAOA,EAAIl/E,aAwBnBzO,EAAQmkS,cApBR,cAA4BG,EACxBjkS,YAAY0+R,EAAYD,EAAU+F,EAAUj8R,GACxCrI,MAAMw+R,EAAYD,GAAYZ,EAAS8G,QAAQnyI,WAAYgyI,EAAUj8R,EAAU,UAC/EhI,KAAKm+R,WAAaA,EAClBn+R,KAAKikS,SAAWA,EAChBjkS,KAAKgI,SAAWA,EAEpBm8R,kBAAkBp3M,GACd,MAAMu3M,EAAgBv3M,EAAIsuC,iBACnBkpK,EAAYC,GAAcF,EAAcxjR,MAAM,KAG/C2jR,EAAWD,EAAW/jR,QAAQ,MAAO,IAK3C,MAAO,GAHU8jR,EAAWzrR,SAAS,KACjCyrR,EACA,GAAGA,SACeE,MAc9BrlS,EAAQkjS,eAVR,cAA6BnuK,EACzB10H,YAAY0+R,EAAY8F,EAAU/F,GAC9Bv+R,MAAMw+R,EAAYD,GAAYZ,EAAS8G,QAAQlyI,YAAa+xI,OAAUniS,EAAW,WACjF9B,KAAKm+R,WAAaA,EAClBn+R,KAAKikS,SAAWA,EAEpBrD,YACI,QAAS5gS,KAAKm+R,aAatB/+R,EAAQkkS,gBATR,cAA8BnvK,EAG1B10H,YAAY0+R,EAAY8F,EAAU/F,GAC9Bv+R,MAAMw+R,EAAYD,GAAYZ,EAAS8G,QAAQM,cAAeT,OAAUniS,EAAW,YACnF9B,KAAKm+R,WAAaA,EAClBn+R,KAAKikS,SAAWA,IAcxB7kS,EAAQikS,kBAVR,cAAgClvK,EAC5B10H,YAAY0+R,EAAYn2R,EAAUk2R,GAC9Bv+R,MAAMw+R,EAAYD,GAAYZ,EAAS8G,QAAQO,gBAAiBxG,EAAYn2R,EAAU,cACtFhI,KAAKm+R,WAAaA,EAClBn+R,KAAKgI,SAAWA,EAEpB44R,YACI,OAAO5gS,KAAKszB,MAAMvtB,OAAS,IAqBnC3G,EAAQgkS,cAbR,cAA4BjvK,EAKxB10H,YAAY0+R,EAAYD,GACpBv+R,MAAMw+R,EAAYD,GAAYZ,EAAS8G,QAAQxvK,WAAYupK,OAAYr8R,EAAW,UAClF9B,KAAKm+R,WAAaA,EAEtByC,YACI,OAAO5gS,KAAKszB,MAAMvtB,OAAS,IA4CnC3G,EAAQ+jS,kBAvBR,cAAgChvK,EAC5B10H,YAAY0+R,EAAYyG,EAASC,EAAeZ,EAAUj8R,GACtDrI,MAAM,CAAEkO,SAAU,IAAM,aAAe+2R,EAASX,EAAUj8R,EAAU,cACpEhI,KAAK4kS,QAAUA,EACf5kS,KAAK6kS,cAAgBA,EACrB7kS,KAAKm+R,WAAa,CAAEtwR,SAAU,IAAM,aACpC7N,KAAKk+R,SAAWZ,EAASO,UAAUiH,mBAEvClE,YAGI,IAFwB,EAAIrD,EAAeK,aAAa59R,KAAK4kS,QAAStH,EAAS8G,QAAQlyI,YAAalyJ,KAAK6kS,iBACrG,EAAItH,EAAeK,aAAa59R,KAAK4kS,QAAStH,EAASO,UAAUC,eAAgB99R,KAAK6kS,eAEtF,OAAO,EAEX,MAAM,IAAI17Q,EAAI26Q,iBAAiB9jS,MAEnCg9R,QACI,OAAOvjK,EAAGxF,QAAQj0H,KAAKszB,MAAOtzB,KAAKgI,UAAYyxH,EAAG3F,UAAU9zH,KAAK4kS,UAErEtxQ,MACI,OAAOtzB,KAAKikS,UAAY,KAUhC7kS,EAAQ8jS,oBANR,SAA6B6B,GACzB,GAAIA,EAAI7G,WAAaZ,EAASO,UAAUiH,mBACpC,OAAOC,iCCnQf7lS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQg1H,cAAW,EACnB,MAAM4uK,EAAgB,EAAQ,OAO9B5jS,EAAQg1H,SANR,MACI30H,YAAYyD,GACRlD,KAAKgT,eAAiBgwR,EAAc7B,eAAe/sK,SACnDp0H,KAAKkD,KAAOA,wCCNpB,IAAI1B,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDiD,EAAa,EAAQ,OAAkBlD,GACvCkD,EAAa,EAAQ,OAAelD,GACpCkD,EAAa,EAAQ,OAAWlD,GAChCkD,EAAa,EAAQ,OAAelD,GACpCkD,EAAa,EAAQ,OAAsBlD,GAC3CkD,EAAa,EAAQ,OAAYlD,GACjCkD,EAAa,EAAQ,OAAgBlD,GACrCkD,EAAa,EAAQ,OAAgBlD,GACrCkD,EAAa,EAAQ,MAAqBlD,GAC1CkD,EAAa,EAAQ,OAAoBlD,iCCxBzCF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4lS,gBAAkB5lS,EAAQ6lS,cAAgB7lS,EAAQ8lS,gBAAkB9lS,EAAQ+lS,kBAAe,EACnG,MAAMh8Q,EAAM,EAAQ,OACpB,MAAMg8Q,EACF1lS,YAAYs1I,EAAUw0F,GAClBvpO,KAAK+0I,SAAWA,EAMhB/0I,KAAKqgB,MAAQ,CAAC3gB,EAAMS,KACSH,KAAKolS,UAAU1lS,EAAMS,EAAQu9R,kBAAmBv9R,EAAQqgS,cAAergS,EAAQw9R,yBACpG39R,KAAKqlS,mBAAmB3lS,IACJS,EAAjBmlS,CAA0B5lS,GAErCM,KAAKulS,MAAQh8D,EAAWg8D,MACxBvlS,KAAKwlS,UAAYj8D,EAAWi8D,UAahCJ,UAAU1lS,EAAMg+R,EAAmB8C,EAAeiF,GAC9C,OAAOA,EACHzlS,KAAKwlS,UAAUE,iBAAiB/lK,OAAOjgI,EAAMg+R,EAAmB8C,GAChExgS,KAAKwlS,UAAU3sI,KAAKl5B,OAAOjgI,IAGvCN,EAAQ+lS,aAAeA,EA6BvB/lS,EAAQ8lS,gBATR,cAA8BC,EAC1B1lS,YAAYkS,EAAI43N,GACZ5pO,MAAMgS,EAAI43N,GACVvpO,KAAK2lS,cAAgB,UAEzBN,mBAAmB3lS,GACf,MAAM,IAAIypB,EAAIy6Q,qBAAqBlkS,EAAMM,KAAK+0I,YActD31I,EAAQ6lS,cATR,cAA4BE,EACxB1lS,YAAYkS,EAAI43N,GACZ5pO,MAAMgS,EAAI43N,GACVvpO,KAAK2lS,cAAgB,QAEzBN,mBAAmB3lS,GACf,MAAM,IAAIypB,EAAIy6Q,qBAAqBlkS,EAAMM,KAAK+0I,YA8BtD31I,EAAQ4lS,gBAVR,MACIvlS,YAAYs1I,EAAUw0F,GAU1B,IAA2Bg8D,EATnBvlS,KAAK+0I,SAAWA,EAChB/0I,KAAK2lS,cAAgB,UACrB3lS,KAAKulS,MAAQh8D,EAAWg8D,MACxBvlS,KAAK8iS,UAAYv5D,EAAWu5D,UAC5B9iS,KAAKmiS,WAAa54D,EAAW44D,WAC7BniS,KAAK4lS,WAAar8D,EAAWq8D,aAIVL,EAJ0CvlS,KAAKulS,MAK9D7lS,GAEA6lS,IAAUliS,OAAOC,oBAIjBwY,MAAMC,QAAQwpR,GACPA,EAAMzsR,SAASpZ,EAAKqG,QAExBrG,EAAKqG,SAAWw/R,mCClH/BrmS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQsjS,gBAAkBtjS,EAAQ47H,SAAW57H,EAAQ02Q,WAAa12Q,EAAQgsF,OAAShsF,EAAQw2Q,OAASx2Q,EAAQymS,MAAQzmS,EAAQk1N,QAAUl1N,EAAQy2Q,QAAUz2Q,EAAQ0mS,KAAO1mS,EAAQ2mS,QAAU3mS,EAAQ4mS,aAAU,EAC3M,MAAM73R,EAAqB,EAAQ,OAC7BmtB,EAAI,EAAQ,OACZ2qQ,EAAgB,EAAQ,OACxBpqQ,EAAI,EAAQ,OACZyhQ,EAAW,EAAQ,OACnBn0Q,EAAM,EAAQ,OACdo0Q,EAAiB,EAAQ,OACzB2I,EAAe,EAAQ,OACvBC,EAAiB,EAAQ,MACzB1sK,EAAK,IAAItrH,EAAmBE,YAIlCjP,EAAQ4mS,QAHR,SAAiBI,GACb,OAAO,IAAIL,EAAQK,IAGvB,MAAML,EACFtmS,YAAY2mS,GACRpmS,KAAKqmS,aAAe,IAAIF,EAAeG,aAAaF,GACpDpmS,KAAKumS,WAAa,IAAIL,EAAaM,WACnCxmS,KAAKymS,WAAY,EAErBC,UACI,GAAI1mS,KAAKymS,UAEL,MAAM,IAAIjmS,MAAM,wCAGpB,OADAR,KAAKymS,WAAY,EACV,CAAEf,iBAAkB1lS,KAAKqmS,aAAcxtI,KAAM74J,KAAKumS,YAE7DhhS,IAAIohS,EAAUzyM,GAGV,OAFAl0F,KAAKqmS,aAAaO,YAAYD,EAAUzyM,GACxCl0F,KAAKumS,WAAWK,YAAYD,EAAUzyM,GAC/Bl0F,KAOX6mS,UAAUF,EAAUzyM,GAEhB,OADAl0F,KAAKumS,WAAWO,kBAAkBH,EAAUzyM,GACrCl0F,KAEX0gE,MAAK,KAAEhpC,EAAI,GAAE+9E,IACT,MAAMsxL,EAAO/mS,KAAKqmS,aAAaW,uBAAuBtvQ,GACtD,IAAKqvQ,EACD,MAAM,IAAI59Q,EAAI89Q,gBAAgB,oDAAqD,CAAEvvQ,KAAAA,EAAM+9E,GAAAA,IAE/F,OAAOz1G,KAAKuF,IAAIkwG,EAAIsxL,GAExBG,QAAQ/gS,EAAMwL,GACV,OAAO3R,KAAKuF,IAAI,CAACY,IAAOhG,GAAW,EAAE4sF,KAASp7E,EAAGxR,EAAHwR,CAAYo7E,KAE9Do6M,aAAahhS,EAAMwL,GACf,OAAO3R,KAAKuF,IAAI,CAACY,IAAOhG,GAAW,EAAE4sF,KAASp7E,EAAGxR,EAAHwR,CAAYo7E,EAAIoxM,cAElEiJ,SAAS/kR,EAAO1Q,GACZ,OAAO3R,KAAKuF,IAAI8c,GAAOliB,GAAW,EAAEsN,EAAMC,KAAWiE,EAAGxR,EAAHwR,CAAYlE,EAAMC,KAE3E25R,cAAchlR,EAAO1Q,GACjB,OAAO3R,KAAKuF,IAAI8c,GAAOliB,GAAW,EAAEsN,EAAMC,KAAWiE,EAAGxR,EAAHwR,CAAYlE,EAAK0wR,WAAYzwR,EAAMywR,cAE5FmJ,eAAejlR,EAAO1Q,GAClB,OAAO3R,KAAKuF,IAAI8c,GAAOliB,GAAW,EAAEonS,EAAIC,EAAIC,KAAQ91R,EAAGxR,EAAHwR,CAAY41R,EAAGpJ,WAAYqJ,EAAGrJ,WAAYsJ,EAAGtJ,cAErGuJ,UAAUrlR,EAAO1Q,GACb,OAAO3R,KAAKuF,IAAI8c,GAAOliB,GAAW,EAAEonS,EAAIC,EAAIC,KAAQ91R,EAAGxR,EAAHwR,CAAY41R,EAAIC,EAAIC,KAE5EE,kBAAkBtlR,EAAO1Q,GACrB,OAAO3R,KAAKuF,IAAI8c,GAAOliB,GAAW,EAAEonS,EAAIC,EAAIC,EAAIG,KAAQj2R,EAAGxR,EAAHwR,CAAY41R,EAAGpJ,WAAYqJ,EAAGrJ,WAAYsJ,EAAGtJ,WAAYyJ,EAAGzJ,cAExH0J,QAAQl2R,GACJ,OAAO3R,KAAKuF,IAAI,CAAC,SAASpF,GAAW,EAAEiR,KAAUO,EAAGxR,EAAHwR,CAAYP,KAEjE02R,WAAWn2R,GACP,OAAO3R,KAAKuF,IAAI,CAAC,YAAYpF,GAAW,EAAEiR,KAAUO,EAAGxR,EAAHwR,CAAYP,KAEpE22R,WAAWp2R,GACP,OAAO3R,KACFuF,IAAI,CAACs2B,EAAEuoQ,QAAQlyI,cAAc/xJ,GAAW,EAAE4kS,KAASpzR,EAAGxR,EAAHwR,CAAYozR,KAExEiD,gBAAgBr2R,GACZ,OAAO3R,KACFuF,IAAI,CAACs2B,EAAEuoQ,QAAQlyI,cAAc/xJ,GAAW,EAAE4kS,KAASpzR,EAAGxR,EAAHwR,CAAYozR,EAAI5G,cAE5E8J,UAAUt2R,GACN,OAAO3R,KACFuF,IAAI,CAACs2B,EAAEuoQ,QAAQxvK,aAAaz0H,GAAW,EAAE4kS,KAASpzR,EAAGxR,EAAHwR,CAAYozR,KAEvEmD,eAAev2R,GACX,OAAO3R,KACFuF,IAAI,CAACs2B,EAAEuoQ,QAAQxvK,aAAaz0H,GAAW,EAAE4kS,KAASpzR,EAAGxR,EAAHwR,CAAYozR,EAAI5G,cAE3EgK,cAAcx2R,GACV,OAAO3R,KACFuF,IAAI,CAACs2B,EAAEuoQ,QAAQO,kBAAkBxkS,GAAW,EAAE4kS,KAASpzR,EAAGxR,EAAHwR,CAAYozR,KAE5EqD,YAAYz2R,GACR,OAAO3R,KACFuF,IAAI,CAACs2B,EAAEgiQ,UAAUwK,kBAAkBloS,GAAW,EAAE4kS,KAASpzR,EAAGxR,EAAHwR,CAAYozR,KAE9EuD,iBAAiB32R,GACb,OAAO3R,KACFuF,IAAI,CAACs2B,EAAEgiQ,UAAUwK,kBAAkBloS,GAAW,EAAE4kS,KAASpzR,EAAGxR,EAAHwR,CAAYozR,EAAI5G,cAElFoK,WAAW52R,GACP,OAAO3R,KACFuF,IAAI,CAACs2B,EAAEgiQ,UAAUC,iBAAiB39R,GAAW,EAAE4sF,KAASp7E,EAAGxR,EAAHwR,CAAYo7E,KACpEy7M,mBAAmB,CAAC3sQ,EAAEgiQ,UAAUiH,oBAAqB,GAE9D2D,YAAY92R,GACR,OAAO3R,KACFuF,IAAI,CAACs2B,EAAEuoQ,QAAQM,gBAAgBvkS,GAAW,EAAE4sF,KAASp7E,EAAGxR,EAAHwR,CAAYo7E,KACjEy7M,mBAAmB,CAAC3sQ,EAAEgiQ,UAAUiH,oBAAqB,GAQ9D4D,iBAAiB/2R,GACb,MAAMg3R,EAAcxoS,GAAa+qF,GAAQv5E,EAAGxR,EAAHwR,CAAYu5E,EAAIizM,YACzD,OAAOn+R,KAAKonS,SAAS,CAAC9J,EAAS8G,QAAQryI,cAAc5xJ,GAAW+qF,GAAO2qL,EAAQ8yB,EAAWxoS,EAAXwoS,CAAoBz9M,MAC9Fk8M,SAAS,CAAC9J,EAAS8G,QAAQpyI,cAAc7xJ,GAAW+qF,GAAOopI,EAAQq0E,EAAWxoS,EAAXwoS,CAAoBz9M,MACvFk8M,SAAS,CAAC9J,EAAS8G,QAAQC,YAAYlkS,GAAW+qF,GAAO26M,EAAM8C,EAAWxoS,EAAXwoS,CAAoBz9M,MACnFk8M,SAAS,CAAC9J,EAAS8G,QAAQnyI,aAAa9xJ,GAAW+qF,GAAO0qL,EAAO+yB,EAAWxoS,EAAXwoS,CAAoBz9M,MACrFs9M,mBAAmB,CAAC3sQ,EAAEgiQ,UAAUiH,oBAAqB,GAa9D8D,WAAWj3R,GACP,MAAMg3R,EAAcxoS,GAAY,CAACsN,EAAMC,IAAUiE,EAAGxR,EAAHwR,CAAYlE,EAAK0wR,WAAYzwR,EAAMywR,YACpF,OAAOn+R,KAAKonS,SAAS,CAAC9J,EAAS8G,QAAQryI,YAAaurI,EAAS8G,QAAQryI,cAAc5xJ,GAAW,CAACsN,EAAMC,IAAUmoQ,EAAQ8yB,EAAWxoS,EAAXwoS,CAAoBl7R,EAAMC,MAC5I05R,SAAS,CAAC9J,EAAS8G,QAAQpyI,YAAasrI,EAAS8G,QAAQpyI,cAAc7xJ,GAAW,CAACsN,EAAMC,IAAU4mN,EAAQq0E,EAAWxoS,EAAXwoS,CAAoBl7R,EAAMC,MACrI05R,SAAS,CAAC9J,EAAS8G,QAAQC,UAAW/G,EAAS8G,QAAQC,YAAYlkS,GAAW,CAACsN,EAAMC,IAAUm4R,EAAM8C,EAAWxoS,EAAXwoS,CAAoBl7R,EAAMC,MAC/H05R,SAAS,CAAC9J,EAAS8G,QAAQnyI,WAAYqrI,EAAS8G,QAAQnyI,aAAa9xJ,GAAW,CAACsN,EAAMC,IAAUkoQ,EAAO+yB,EAAWxoS,EAAXwoS,CAAoBl7R,EAAMC,MAClIm5R,UAAU,CAACvJ,EAASO,UAAUC,eAAgBR,EAASO,UAAUC,iBAAkB39R,GAAY,EAAEsN,EAAMC,KAAWq4R,EAAQ8C,0BAA0Bp7R,EAAKy2R,gBAAgBx2R,EAAMw2R,gBAAgBvyR,EAAGxR,EAAHwR,CAAYlE,EAAK0wR,WAAYzwR,EAAMywR,eAE3O2K,WAAW3wR,GACP,OAAOnY,KAAK+oS,SAAQ5oS,GAAW,EAAEsN,EAAMC,KAE5Bo4R,EADQ3tR,EAAKhY,EAALgY,CAAc1K,EAAK0wR,WAAYzwR,EAAMywR,eAI5D6K,WAAW7wR,GACP,OAAOnY,KACFuF,IAAI,CAACs2B,EAAEuoQ,QAAQxvK,WAAY/4F,EAAEuoQ,QAAQxvK,aAAaz0H,GAAW,EAAEsN,EAAMC,KAE/Do4R,EADQ3tR,EAAKhY,EAALgY,CAAc1K,EAAK0wR,WAAYzwR,EAAMywR,eAGnDqK,mBAAmB,CAAC3sQ,EAAEgiQ,UAAUiH,mBAAoBjpQ,EAAEuoQ,QAAQxvK,YAAa,GAC3E4zK,mBAAmB,CAAC3sQ,EAAEuoQ,QAAQxvK,WAAY/4F,EAAEgiQ,UAAUiH,oBAAqB,GAEpFmE,YAAY9wR,GACR,OAAOnY,KACFuF,IAAI,CAACs2B,EAAEuoQ,QAAQlyI,YAAar2H,EAAEuoQ,QAAQlyI,cAAc/xJ,GAAW,EAAEsN,EAAMC,KAEjEo4R,EADQ3tR,EAAKhY,EAALgY,CAAc1K,EAAK0wR,WAAYzwR,EAAMywR,eAGnDqK,mBAAmB,CAAC3sQ,EAAEgiQ,UAAUiH,mBAAoBjpQ,EAAEuoQ,QAAQlyI,aAAc,GAC5Es2I,mBAAmB,CAAC3sQ,EAAEuoQ,QAAQlyI,YAAar2H,EAAEgiQ,UAAUiH,oBAAqB,GAErFoE,aAAa/wR,GACT,OAAOnY,KACFuF,IAAI,CAACs2B,EAAEuoQ,QAAQM,cAAe7oQ,EAAEuoQ,QAAQM,gBAAgBvkS,GAAW,EAAEsN,EAAMC,KAErEo4R,EADQ3tR,EAAKhY,EAALgY,CAAc1K,EAAK0wR,WAAYzwR,EAAMywR,eAGnDqK,mBAAmB,CAAC3sQ,EAAEgiQ,UAAUiH,mBAAoBjpQ,EAAEuoQ,QAAQM,eAAgB,GAC9E8D,mBAAmB,CAAC3sQ,EAAEuoQ,QAAQM,cAAe7oQ,EAAEgiQ,UAAUiH,oBAAqB,GAEvFiE,QAAQp3R,GACJ,OAAO3R,KACFuF,IAAI,CAACs2B,EAAEgiQ,UAAUC,eAAgBjiQ,EAAEgiQ,UAAUC,gBAAiBnsR,GAC9D62R,mBAAmB,CAAC3sQ,EAAEgiQ,UAAUC,eAAgBjiQ,EAAEgiQ,UAAUiH,oBAAqB,GACjF0D,mBAAmB,CAAC3sQ,EAAEgiQ,UAAUiH,mBAAoBjpQ,EAAEgiQ,UAAUC,gBAAiB,GAE1F0K,mBAAmBnmR,EAAOjhB,GACtB,OAAOpB,KAAKuF,IAAI8c,GAAO,IAAO3iB,IAC1B,MAAM,IAAIypB,EAAIggR,mBAAmBzpS,EAAK0B,EAAQ,GAAG47R,aAkC7D,SAAS8I,EAAK/4M,GACV,OAAO,IAAIzxD,EAAEgnQ,eAAev1M,GAGhC,SAAS8oL,EAAQ7gN,EAAKsuG,GAClB,GAAIA,KAAO,EAAIi6H,EAAe6L,mBAAmB9lI,EAAIg6H,EAAS8G,QAAQryI,aAClE,MAAM,IAAIvxJ,MAAM,SAEpB,OAAO,IAAI86B,EAAE8hQ,eAAepoO,EAAKsuG,GAGrC,SAASgxD,EAAQt/J,EAAKsuG,GAClB,GAAIA,KAAO,EAAIi6H,EAAe6L,mBAAmB9lI,EAAIg6H,EAAS8G,QAAQpyI,aAClE,MAAM,IAAIxxJ,MAAM,SAEpB,OAAO,IAAI86B,EAAEmoQ,eAAezuO,EAAKsuG,GAGrC,SAASuiI,EAAM7wO,EAAKsuG,GAChB,GAAIA,KAAO,EAAIi6H,EAAe6L,mBAAmB9lI,EAAIg6H,EAAS8G,QAAQC,WAClE,MAAM,IAAI7jS,MAAM,SAEpB,OAAO,IAAI86B,EAAEkoQ,aAAaxuO,EAAKsuG,GAGnC,SAASsyG,EAAO5gN,EAAKsuG,GACjB,GAAIA,KAAO,EAAIi6H,EAAe6L,mBAAmB9lI,EAAIg6H,EAAS8G,QAAQnyI,YAClE,MAAM,IAAIzxJ,MAAM,SAEpB,OAAO,IAAI86B,EAAEioQ,cAAcvuO,EAAKsuG,GA3DpClkK,EAAQ2mS,QAAUA,EAClBA,EAAQ8C,0BAA4B,CAChChzB,QAAS,CACLA,QAAS7gN,GAAO,IAAIixO,EAAc7I,eAAepoO,GACjDs/J,QAASt/J,GAAO,IAAIixO,EAAcxC,eAAezuO,GACjD6wO,MAAO7wO,GAAO,IAAIixO,EAAczC,aAAaxuO,GAC7C4gN,OAAQ5gN,GAAO,IAAIixO,EAAc1C,cAAcvuO,IAEnDs/J,QAAS,CACLuhD,QAAS7gN,GAAO,IAAIixO,EAAcxC,eAAezuO,GACjDs/J,QAASt/J,GAAO,IAAIixO,EAAcxC,eAAezuO,GACjD6wO,MAAO7wO,GAAO,IAAIixO,EAAczC,aAAaxuO,GAC7C4gN,OAAQ5gN,GAAO,IAAIixO,EAAc1C,cAAcvuO,IAEnD6wO,MAAO,CACHhwB,QAAS7gN,GAAO,IAAIixO,EAAczC,aAAaxuO,GAC/Cs/J,QAASt/J,GAAO,IAAIixO,EAAczC,aAAaxuO,GAC/C6wO,MAAO7wO,GAAO,IAAIixO,EAAczC,aAAaxuO,GAC7C4gN,OAAQ5gN,GAAO,IAAIixO,EAAc1C,cAAcvuO,IAEnD4gN,OAAQ,CACJC,QAAS7gN,GAAO,IAAIixO,EAAc1C,cAAcvuO,GAChDs/J,QAASt/J,GAAO,IAAIixO,EAAc1C,cAAcvuO,GAChD6wO,MAAO7wO,GAAO,IAAIixO,EAAc1C,cAAcvuO,GAC9C4gN,OAAQ5gN,GAAO,IAAIixO,EAAc1C,cAAcvuO,KASvD51D,EAAQ0mS,KAAOA,EAOf1mS,EAAQy2Q,QAAUA,EAOlBz2Q,EAAQk1N,QAAUA,EAOlBl1N,EAAQymS,MAAQA,EAOhBzmS,EAAQw2Q,OAASA,EAIjBx2Q,EAAQgsF,OAHR,SAAgB93D,GACZ,OAAO,IAAIgI,EAAE8nQ,cAAc9vQ,IAM/Bl0B,EAAQ02Q,WAHR,SAAoBxiP,EAAK4wB,GACrB,OAAO,IAAI5oB,EAAE+nQ,kBAAkB/vQ,EAAK4wB,IAMxC9kD,EAAQ47H,SAHR,SAAkB9nG,EAAMI,GACpB,OAAO,IAAIgI,EAAEgoQ,gBAAgBpwQ,EAAMI,IAMvCl0B,EAAQsjS,gBAHR,SAAyB2G,GACrB,OAAO5vK,EAAGlzH,SAAS8iS,EAAmBnmS,KAAKmgB,MAAM,mCC7QrDnkB,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQonS,gBAAa,EACrB,MAAMP,EAAgB,EAAQ,OACxB1I,EAAiB,EAAQ,OAK/B,MAAMiJ,EACF/mS,YAAY6pS,GACRtpS,KAAKm8F,oBAAiBr6F,EACtB9B,KAAK08P,SAAWx9P,OAAOuC,OAAO,MAC9BzB,KAAKspS,iBAAmBA,GAAoB,EAMhD3pK,OAAOjgI,GAGH,MAAM6pS,EAAc,GAEpB,GAAoB,IAAhB7pS,EAAKqG,OACL,OAAO/F,KAAKm8F,eAMhB,IADAotM,EAAY9jS,QAAQzF,KAAKwpS,kBAAkB9pS,EAPxB,IAO0CsG,KAAIf,IAAQ,CAAGA,KAAAA,EAAM7D,MAAOskM,OAClF6jG,EAAYxjS,OAAS,GAAG,CAC3B,MAAM,MAAE3E,EAAK,KAAE6D,GAASskS,EAAY/mR,MACpC,GAAIphB,IAAU1B,EAAKqG,OACf,OAAOd,EAAKk3F,eAEhBotM,EAAY9jS,QAAQR,EAAKukS,kBAAkB9pS,EAAK0B,IAAQ4E,KAAIy4I,IAAQ,CAAGx5I,KAAMw5I,EAAMr9I,MAAOA,EAAQ,OAEtG,OAAOpB,KAAKm8F,eAQhByqM,YAAY6C,EAAev1M,GACvBl0F,KAAK0pS,aAAa,IAAID,GAAgBv1M,GAAM,EAAO,GAEvD4yM,kBAAkB2C,EAAev1M,GAC7Bl0F,KAAK0pS,aAAa,IAAID,GAAgBv1M,GAAM,EAAM,GAEtDw1M,aAAaD,EAAev1M,EAAMy1M,EAAgBC,GAC9C,MAAOC,KAAiBC,GAAkBL,EAC1C,IAAKI,EAID,aAHIF,GAAkB3pS,KAAKspS,kBAAoBM,KAC3C5pS,KAAKm8F,eAAiBjI,IAI9B,MAAM21C,GAAS,EAAI0zJ,EAAe2G,gBAAgB2F,GAClD,IAAK,MAAME,KAAYlgK,EAAOxnH,OACtBsnR,GAAmB3pS,KAAK08P,SAASqtC,KACjC/pS,KAAK08P,SAASqtC,GAAY,IAAIvD,EAAW38J,EAAOmgK,OAEpDhqS,KAAK08P,SAASqtC,GAAUL,aAAaI,EAAgB51M,EAAMy1M,EAAgB9/J,EAAOmgK,MAO1FR,kBAAkBt+M,GACd,MAAM++M,GAAoB,EAAIhE,EAActC,yBAAyBz4M,GAC/DhlE,EAAM,GAYZ,OAVIlmB,KAAK08P,SAAStrP,MACd8U,EAAIzgB,KAAKzF,KAAK08P,SAAStrP,MAGvBpR,KAAK08P,SAASxxK,EAAIpkF,WAClBof,EAAIzgB,KAAKzF,KAAK08P,SAASxxK,EAAIpkF,WAE3BmjS,GAAqBjqS,KAAK08P,SAASutC,EAAkB/F,iBACrDh+Q,EAAIzgB,KAAKzF,KAAK08P,SAASutC,EAAkB/F,iBAEtCh+Q,GAGf9mB,EAAQonS,WAAaA,gCCxFrBtnS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8qS,sBAAmB,EAC3B,MAAM5M,EAAW,EAAQ,OACnBn0Q,EAAM,EAAQ,OACdghR,EAAY,EAAQ,MACpB5N,EAAY,EAAQ,MAapB6N,EAAc,CAChB7E,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAAS1I,EAAS8G,QAAQxvK,YAC9C2zK,YAAW,IAAOx7M,IAAQ,EAAIwvM,EAAUnxM,SAAQ,EAAImxM,EAAUsJ,OAAO94M,EAAIoxM,YAAY7qQ,SACrF00Q,iBAAgB,IAAMj7M,IAAO,EAAIwvM,EAAUnxM,SAAQ,EAAImxM,EAAUuJ,MAAM/4M,GAAKz5D,SAC5Eu0Q,SAAQ,IAAO96M,IAAQ,EAAIwvM,EAAUnxM,QAAQ2B,EAAIz5D,SACjDozQ,WAEH2D,EAAa,CACf9E,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAAS1I,EAAS8G,QAAQC,WAC9CkE,YAAW,IAAOx7M,IAAQ,EAAIwvM,EAAUsJ,OAAO94M,EAAIoxM,cACnD6J,iBAAgB,IAAMj7M,IAAO,EAAIwvM,EAAUsJ,OAAO94M,EAAM,EAAI,KAC5Dm6M,QAAQ5J,EAAS8G,QAAQxvK,YAAY,IAAO7nC,IAC7C,MAAMzlF,GAAS,EAAI6iS,EAAUG,eAAev9M,EAAIz5D,OAChD,QAAexxB,IAAXwF,EACA,MAAM,IAAI6hB,EAAIohR,UAAUx9M,EAAKuwM,EAAS8G,QAAQC,WAElD,OAAO,EAAI9H,EAAUsJ,OAAOv+R,MAE3Bo5D,KAAK,CAAEhpC,KAAM,CAAC4lQ,EAAS8G,QAAQxvK,YAAanf,GAAI,CAAC6nL,EAASO,UAAUiH,sBACpE4B,WAEH8D,EAAc,CAChBjF,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAAS1I,EAAS8G,QAAQnyI,YAC9Cs2I,YAAW,IAAOx7M,IAAQ,EAAIwvM,EAAU3mB,QAAQ7oL,EAAIoxM,cACpD6J,iBAAgB,IAAMj7M,IAAO,EAAIwvM,EAAU3mB,QAAQ7oL,EAAM,EAAI,KAC7Dm6M,QAAQ5J,EAAS8G,QAAQxvK,YAAY,IAAO7nC,IAC7C,MAAMzlF,GAAS,EAAI6iS,EAAUG,eAAev9M,EAAIz5D,OAChD,QAAexxB,IAAXwF,EACA,MAAM,IAAI6hB,EAAIohR,UAAUx9M,EAAKuwM,EAAS8G,QAAQnyI,YAElD,OAAO,EAAIsqI,EAAU3mB,QAAQtuQ,MAE5Bo5D,KAAK,CAAEhpC,KAAM,CAAC4lQ,EAAS8G,QAAQxvK,YAAanf,GAAI,CAAC6nL,EAASO,UAAUiH,sBACpE4B,WAEH+D,EAAe,CACjBlF,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAAS1I,EAAS8G,QAAQpyI,aAC9Cu2I,YAAW,IAAOx7M,IACnB,MAAMzlF,GAAS,EAAI6iS,EAAUO,iBAAiB39M,EAAIz5D,OAClD,QAAexxB,IAAXwF,EACA,MAAM,IAAI6hB,EAAIohR,UAAUx9M,EAAKuwM,EAAS8G,QAAQpyI,aAElD,OAAO,EAAIuqI,EAAUjoE,SAAShtN,MAE7B2gS,WAAU,IAAOl7M,IAClB,MAAMz5D,EAAMy5D,EAAIz5D,MACVhsB,EAAS,0BAA0B6Q,KAAKmb,IAAO,EAAI62Q,EAAUO,iBAAiBp3Q,QAAOxxB,EAC3F,QAAeA,IAAXwF,EACA,MAAM,IAAI6hB,EAAIohR,UAAUx9M,EAAKuwM,EAAS8G,QAAQpyI,aAElD,OAAO,EAAIuqI,EAAUjoE,SAAShtN,MAE7Bo5D,KAAK,CAAEhpC,KAAM,CAAC4lQ,EAAS8G,QAAQxvK,YAAanf,GAAI,CAAC6nL,EAASO,UAAUiH,sBACpEkD,iBAAgB,IAAMj7M,IAAO,EAAIwvM,EAAUjoE,SAASvnI,EAAM,EAAI,KAC9D25M,WAEHiE,EAAe,CACjBpF,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAAS1I,EAAS8G,QAAQryI,aAC9Ci2I,iBAAgB,IAAMj7M,IAAO,EAAIwvM,EAAU1mB,SAAS9oL,EAAM,EAAI,KAC9Dw7M,YAAW,IAAOx7M,IACnB,MAAMzlF,GAAS,EAAI6iS,EAAUS,iBAAiB79M,EAAIz5D,OAClD,QAAexxB,IAAXwF,EACA,MAAM,IAAI6hB,EAAIohR,UAAUx9M,EAAKuwM,EAAS8G,QAAQryI,aAElD,OAAO,EAAIwqI,EAAU1mB,SAASvuQ,MAE7B2gS,WAAU,IAAOl7M,IAClB,MAAMz5D,EAAMy5D,EAAIz5D,MACVhsB,EAAS,SAAS6Q,KAAKmb,IAAO,EAAI62Q,EAAUS,iBAAiBt3Q,QAAOxxB,EAC1E,QAAeA,IAAXwF,EACA,MAAM,IAAI6hB,EAAIohR,UAAUx9M,EAAKuwM,EAAS8G,QAAQryI,aAElD,OAAO,EAAIwqI,EAAU1mB,SAASvuQ,MAE7Bo5D,KAAK,CAAEhpC,KAAM,CAAC4lQ,EAASO,UAAUC,gBAAiBroL,GAAI,CAAC6nL,EAASO,UAAUiH,sBAC1E4B,WAEHmE,EAAgB,CAClBtF,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAAS1I,EAAS8G,QAAQM,eAC9CwC,QAAQ5J,EAAS8G,QAAQM,eAAe,IAAO33M,GAAQA,IACvDm6M,QAAQ5J,EAAS8G,QAAQxvK,YAAY,IAAO7nC,IAC7C,MAAM75D,EAAO,IAAI1qB,KAAKukF,EAAIz5D,OAC1B,GAAIjwB,OAAOu9D,MAAM1tC,EAAKC,WAClB,MAAM,IAAIhK,EAAIohR,UAAUx9M,EAAKuwM,EAAS8G,QAAQM,eAElD,OAAO,EAAInI,EAAUvhK,UAAU9nG,EAAM65D,EAAIz5D,UAExCotC,KAAK,CAAEhpC,KAAM,CAAC4lQ,EAAS8G,QAAQxvK,YAAanf,GAAI,CAAC6nL,EAASO,UAAUiH,sBACpE4B,WAEHoE,EAAe,CACjBvF,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAAS1I,EAAS8G,QAAQlyI,aAC9Cq2I,YAAW,IAAOx7M,IAAQ,EAAIwvM,EAAUuJ,MAAM/4M,EAAI6zM,eAClDsG,QAAQ5J,EAAS8G,QAAQlyI,aAAa,IAAOnlE,IAAQ,EAAIwvM,EAAUuJ,MAAM/4M,EAAI6zM,eAC7EsG,QAAQ5J,EAAS8G,QAAQxvK,YAAY,IAAO7nC,IAC7C,OAAQA,EAAIz5D,OACR,IAAK,OAIL,IAAK,IACD,OAAO,EAAIipQ,EAAUuJ,OAAM,GAH/B,IAAK,QAIL,IAAK,IACD,OAAO,EAAIvJ,EAAUuJ,OAAM,GAC/B,QACI,MAAM,IAAI38Q,EAAIohR,UAAUx9M,EAAKuwM,EAAS8G,QAAQlyI,iBAGrDxxF,KAAK,CAAEhpC,KAAM,CAAC4lQ,EAAS8G,QAAQxvK,YAAanf,GAAI,CAAC6nL,EAASO,UAAUiH,sBACpE4B,WAMTtnS,EAAQ8qS,iBAAmB,CAKvB,CAAC5M,EAAS8G,QAAQxvK,YAAaw1K,EAC/B,CAAC9M,EAAS8G,QAAQC,WAAYgG,EAC9B,CAAC/M,EAAS8G,QAAQnyI,YAAau4I,EAC/B,CAAClN,EAAS8G,QAAQpyI,aAAcy4I,EAChC,CAACnN,EAAS8G,QAAQryI,aAAc44I,EAChC,CAACrN,EAAS8G,QAAQM,eAAgBmG,EAClC,CAACvN,EAAS8G,QAAQ2G,UAAWF,EAC7B,CAACvN,EAAS8G,QAAQlyI,aAAc44I,gCCxJpC5rS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQknS,kBAAe,EACvB,MAAML,EAAgB,EAAQ,OACxB3I,EAAW,EAAQ,OACnBC,EAAiB,EAAQ,OACzBhB,EAAY,EAAQ,MAK1B,MAAM+J,EACF7mS,YAAY2mS,EAAY/yL,GACpBrzG,KAAKomS,WAAaA,EAClBpmS,KAAKm8F,oBAAiBr6F,EACtB9B,KAAKgrS,iBAAmB9rS,OAAOuC,OAAO,MACtCzB,KAAKirS,iBAAmB,GACxBjrS,KAAKqzG,MAAQA,GAAS,EACtBrzG,KAAKkrS,oBAAiBppS,EAE1BqpS,WAAWC,GACP,MAAMC,GAAc,EAAI9N,EAAe+N,eAAeF,GACtD,GAAIC,EACA,OAAOrrS,KAAKgrS,iBAAiBK,GAEjC,IAAK,MAAOllS,EAAMkgS,KAAiBrmS,KAAKirS,iBACpC,GAAIG,IAAiBjlS,EACjB,OAAOkgS,EAQnBW,uBAAuBtnS,GAEnB,IAAIuF,EAAOjF,KACX,IAAK,MAAM+S,KAAcrT,EAErB,GADAuF,EAAOA,EAAKkmS,WAAWp4R,IAClB9N,EACD,OAGR,OAAOA,EAAKk3F,eAEhBovM,2BAA2B7rS,GACvB,OAAOM,KAAKomS,WAAa1mS,EAAKsG,KAAIoL,IAC9B,MAAM64R,GAAoB,EAAIhE,EAActC,yBAAyBvyR,GACrE,OAAO64R,EAAoBA,EAAkB/L,SAAW9sR,EAAKtK,YAC9D0Z,KAAK,IAQZm/G,OAAOjgI,EAAMg+R,EAAmB8C,GAC5B,MAAM4F,EAAapmS,KAAKurS,2BAA2B7rS,GACnD,GAAI8gS,EAAct4R,IAAIk+R,GAClB,OAAO5F,EAAcn+R,IAAI+jS,GAI7B,MAAMmD,EAAc,GAEpB,GAAoB,IAAhB7pS,EAAKqG,OACL,OAAO/F,KAAKm8F,eAMhB,IADAotM,EAAY9jS,QAAQzF,KAAKwpS,kBAAkB9pS,EAPxB,GAO0Cg+R,GAAmB13R,KAAIf,IAAQ,CAAGA,KAAAA,EAAM7D,MAAOskM,OACrG6jG,EAAYxjS,OAAS,GAAG,CAC3B,MAAM,MAAE3E,EAAK,KAAE6D,GAASskS,EAAY/mR,MAGpC,GAAIphB,IAAU1B,EAAKqG,QAAUd,EAAKk3F,eAE9B,OADAqkM,EAAcj7R,IAAI6gS,EAAYnhS,EAAKk3F,gBAC5Bl3F,EAAKk3F,eAEhBotM,EAAY9jS,QAAQR,EAAKukS,kBAAkB9pS,EAAK0B,GAAQs8R,GAAmB13R,KAAIy4I,IAAQ,CAAGx5I,KAAMw5I,EAAMr9I,MAAOA,EAAQ,OAIzHo/R,EAAcj7R,IAAI6gS,OAAYtkS,GASlC8kS,YAAY4E,EAA2Bt3M,GACnCl0F,KAAK0pS,aAAa,IAAI8B,GAA4Bt3M,EAAM,GAE5Dw1M,aAAa8B,EAA2Bt3M,EAAMg3M,GAC1C,MAAOO,KAA6BC,GAA8BF,EAClE,IAAKC,EAKD,kBAJ4B3pS,IAAxB9B,KAAKkrS,gBAAgCA,GAAkBlrS,KAAKkrS,kBAC5DlrS,KAAKkrS,eAAiBA,EACtBlrS,KAAKm8F,eAAiBjI,IAI9B,IAAIy3M,EAAW3rS,KAAKmrS,WAAWM,GAC/B,IAAKE,EAAU,CACX,MAAMjxL,EAAU,IAAI4rL,EAAatmS,KAAKomS,WAAYpmS,KAAKqzG,MAAQ,GACzDg4L,GAAc,EAAI9N,EAAe+N,eAAeG,GAClDJ,IACArrS,KAAKgrS,iBAAiBK,GAAe3wL,GAEzC,MAAM0wL,GAAe,EAAI7N,EAAeqO,gBAAgBH,GACpDL,GACAprS,KAAKirS,iBAAiBxlS,KAAK,CAAC2lS,EAAc1wL,IAE9CixL,EAAWjxL,EAEfixL,EAASjC,aAAagC,EAA4Bx3M,EAAMg3M,GAIpDO,IAA6BnO,EAAS8G,QAAQxvK,YAC9C50H,KAAK6rS,oBAAoBvO,EAAS8G,QAAQ0H,YAAa53M,GAAMhJ,IAAO,EAAIqxM,EAAUnxM,QAAQF,EAAI53D,QAAQo4Q,EAA4BR,GAGlIO,IAA6BnO,EAAS8G,QAAQnyI,aAC9CjyJ,KAAK6rS,oBAAoBvO,EAAS8G,QAAQC,UAAWnwM,GAAMhJ,IAAO,EAAIqxM,EAAU3mB,QAAQ1qL,EAAIizM,aAAauN,EAA4BR,GACrIlrS,KAAK6rS,oBAAoBvO,EAAS8G,QAAQpyI,YAAa99D,GAAMhJ,IAAO,EAAIqxM,EAAU3mB,QAAQ1qL,EAAIizM,aAAauN,EAA4BR,IAEvIO,IAA6BnO,EAAS8G,QAAQC,WAC9CrkS,KAAK6rS,oBAAoBvO,EAAS8G,QAAQpyI,YAAa99D,GAAMhJ,IAAO,EAAIqxM,EAAUsJ,OAAO36M,EAAIizM,aAAauN,EAA4BR,GAG9IW,oBAAoBE,EAAe73M,EAAM83M,EAAoBR,EAA2BN,GACpF,IAAIS,EAAW3rS,KAAKmrS,WAAWY,GAC/B,IAAKJ,EAAU,CACX,MAAMjxL,EAAU,IAAI4rL,EAAatmS,KAAKomS,WAAYpmS,KAAKqzG,MAAQ,GAC/DrzG,KAAKirS,iBAAiBxlS,KAAK,CAACsmS,EAAerxL,IAC3CixL,EAAWjxL,EAEfixL,EAASjC,aAAa8B,GAA2BS,GAAYvsS,GAAQw0F,EAAK+3M,EAAL/3M,CAAe,IAC7Ex0F,EAAK2jB,MAAM,EAAGrjB,KAAKqzG,OACtB24L,EAAmBtsS,EAAKM,KAAKqzG,WAC1B3zG,EAAK2jB,MAAMrjB,KAAKqzG,MAAQ,EAAG3zG,EAAKqG,WACnCmlS,EAAiB,GAMzB1B,kBAAkBt+M,EAAK25M,GACnB,MAAM3+Q,EAAM,GACN+jR,GAAoB,EAAIhE,EAActC,yBAAyBz4M,GASrE,GAPIlrF,KAAKgrS,iBAAiB55R,MACtB8U,EAAIzgB,KAAKzF,KAAKgrS,iBAAiB55R,MAG/BpR,KAAKgrS,iBAAiB9/M,EAAIpkF,WAC1Bof,EAAIzgB,KAAKzF,KAAKgrS,iBAAiB9/M,EAAIpkF,WAEnCmjS,EAAmB,CAKnB,MAAMiC,GAAe,EAAI3O,EAAe4O,oBAAoBlC,EAAkB/L,UAC9E,IAAIkO,EAGAA,EAFAF,EAEoB3O,EAAe8O,mBAAmBH,IAIlC,EAAI3O,EAAe+O,eAAerC,EAAkB/L,SAAU2G,GAEtF,MAAMluI,EAAU32J,KAAKirS,iBAAiB39R,QAAO,EAAEi/R,EAAWxxQ,KAAOwxQ,KAAaH,IACzEpmS,KAAI,EAAEumS,EAAW1zI,KAAU,CAACuzI,EAAkBG,GAAY1zI,KAC/DlC,EAAQx2G,MAAK,EAAEqsP,EAAOC,IAAcC,EAAOC,KAAgBH,EAAQE,IACnExmR,EAAIzgB,QAAQkxJ,EAAQ3wJ,KAAI,EAAE+0B,EAAG6xQ,KAAgBA,KAEjD,OAAO1mR,GAGf9mB,EAAQknS,aAAeA,gCC1LvBpnS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoqO,iBAAc,EACtB,MAAMqjE,EAAiB,EAAQ,MACzB52K,EAAY,EAAQ,OACpB9nH,EAAqB,EAAQ,OAC7B6wK,EAA6B,EAAQ,OACrC8tH,EAAc,EAAQ,OACtBlqI,EAAO,EAAQ,MACftnI,EAAI,EAAQ,OACZ+hQ,EAAoB,EAAQ,MAC5BxhQ,EAAI,EAAQ,OACZyhQ,EAAW,EAAQ,OACnBn0Q,EAAM,EAAQ,OACdwS,EAAI,EAAQ,MACZ4gQ,EAAY,EAAQ,MACpBt+P,EAAI,EAAQ,MACZw7F,EAAK,IAAItrH,EAAmBE,YAS5B8B,EAAM,CACRo1R,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBmQ,KAC/ClF,SAAQ,IAAM96M,IAAO,EAAIwvM,EAAUuJ,OAAO/4M,EAAI6zM,eAC9C8F,WAEHsG,EAAY,CACdzH,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBqQ,OAC/CvE,kBAAiB,IAAM37M,GAAOA,IAC9B25M,WAEHwG,EAAa,CACf3H,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBuQ,QAC/CzE,kBAAiB,IAAM37M,IAAQA,IAC/B25M,WAEH0G,EAAiB,CACnB7H,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgByQ,gBAC/CzE,YAAW,IAAM,CAACn7R,EAAMC,IAAU,IAAIm/R,EAAez9E,UAAU3hN,GAAMi+G,MAAMh+G,GAAO2rN,aAClFqtE,WAEH4G,EAAW,CACb/H,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBG,UAC/C6L,YAAW,IAAM,CAACn7R,EAAMC,IAAU,IAAIm/R,EAAez9E,UAAU3hN,GAAMgjN,IAAI/iN,GAAO2rN,aAChFguE,cAAc,CAAC/J,EAAS8G,QAAQryI,YAAaurI,EAAS8G,QAAQryI,cAAc,IAAM,CAACtkJ,EAAMC,KAC1F,GAAc,IAAVA,EACA,MAAM,IAAIyb,EAAIyyQ,gBAAgB,yBAElC,OAAO,EAAIW,EAAUjoE,SAAS,IAAIu4E,EAAez9E,UAAU3hN,GAAMgjN,IAAI/iN,GAAO2rN,eAE3EqtE,WAEH6G,EAAW,CACbhI,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBC,UAC/C+L,YAAW,IAAM,CAACn7R,EAAMC,IAAU,IAAIm/R,EAAez9E,UAAU3hN,GAAM4mN,KAAK3mN,GAAO2rN,aACjFqtE,WAEH8G,EAAc,CAChBjI,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB6Q,aAC/C7E,YAAW,IAAM,CAACn7R,EAAMC,IAAU,IAAIm/R,EAAez9E,UAAU3hN,GAAMm1I,MAAMl1I,GAAO2rN,aAClFqtE,WAGHgH,EAAW,CACbnI,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB+Q,OAC/C7E,YAAW,IAAM,CAACr7R,EAAMC,IAAUD,IAASC,IAC3Cs7R,YAAW,IAAM,CAACv7R,EAAMC,IAAwC,IAA9BD,EAAK6vI,cAAc5vI,KACrDu7R,aAAY,IAAM,CAACx7R,EAAMC,IAAUD,IAASC,IAC5Cw7R,cAAa,IAAM,CAACz7R,EAAMC,IAAUD,EAAK0lB,YAAczlB,EAAMylB,YAC7D5tB,IAAI,CAAC,OAAQ,SAAS,IAAM,EAAEkI,EAAMC,MAAW,EAAI6uR,EAAUuJ,MAAM8H,EAAangS,EAAMC,MACtFg5R,WAET,SAASkH,EAAaC,EAAOC,GACzB,MAAMrgS,EAAOogS,EAAM7Q,QACbtvR,EAAQogS,EAAO9Q,QACfjwM,EAAMt/E,EAAKL,OAAOM,GACxB,GAAuB,YAAlBD,EAAK3G,UAA+C,YAAnB4G,EAAM5G,SACxC,MAAM,IAAIqiB,EAAI4kR,kBAAkB,CAACF,EAAOC,IAE5C,OAAO/gN,EAEX,MAAMihN,EAAa,CACfzI,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBqR,WAC/CnF,YAAW,IAAM,CAACr7R,EAAMC,IAAUD,IAASC,IAC3Cs7R,YAAW,IAAM,CAACv7R,EAAMC,IAAwC,IAA9BD,EAAK6vI,cAAc5vI,KACrDu7R,aAAY,IAAM,CAACx7R,EAAMC,IAAUD,IAASC,IAC5Cw7R,cAAa,IAAM,CAACz7R,EAAMC,IAAUD,EAAK0lB,YAAczlB,EAAMylB,YAC7D5tB,IAAI,CAAC,OAAQ,SAAS,IAAM,EAAEkI,EAAMC,MAAW,EAAI6uR,EAAUuJ,OAAO8H,EAAangS,EAAMC,MACvFg5R,WAEHwH,EAAa,CACf3I,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBuR,IAC/CrF,YAAW,IAAM,CAACr7R,EAAMC,IAAUD,EAAOC,IACzCs7R,YAAW,IAAM,CAACv7R,EAAMC,KAAyC,IAA/BD,EAAK6vI,cAAc5vI,KACrDu7R,aAAY,IAAM,CAACx7R,EAAMC,IAAUD,EAAOC,IAC1Cw7R,cAAa,IAAM,CAACz7R,EAAMC,IAAUD,EAAK0lB,UAAYzlB,EAAMylB,YAC3DuzQ,WAEH0H,EAAc,CAChB7I,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgByR,IAC/CvF,YAAW,IAAM,CAACr7R,EAAMC,IAAUD,EAAOC,IACzCs7R,YAAW,IAAM,CAACv7R,EAAMC,IAAwC,IAA9BD,EAAK6vI,cAAc5vI,KACrDu7R,aAAY,IAAM,CAACx7R,EAAMC,IAAUD,EAAOC,IAC1Cw7R,cAAa,IAAM,CAACz7R,EAAMC,IAAUD,EAAK0lB,UAAYzlB,EAAMylB,YAC3DuzQ,WAEH4H,EAAkB,CACpB/I,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB2R,KAC/CzF,YAAW,IAAM,CAACr7R,EAAMC,IAAUD,GAAQC,IAC1Cs7R,YAAW,IAAM,CAACv7R,EAAMC,IAAwC,IAA9BD,EAAK6vI,cAAc5vI,KACrDu7R,aAAY,IAAM,CAACx7R,EAAMC,IAAUD,GAAQC,IAC3Cw7R,cAAa,IAAM,CAACz7R,EAAMC,IAAUD,EAAK0lB,WAAazlB,EAAMylB,YAC5DuzQ,WAEH8H,EAAmB,CACrBjJ,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB6R,KAC/C3F,YAAW,IAAM,CAACr7R,EAAMC,IAAUD,GAAQC,IAC1Cs7R,YAAW,IAAM,CAACv7R,EAAMC,KAAyC,IAA/BD,EAAK6vI,cAAc5vI,KACrDu7R,aAAY,IAAM,CAACx7R,EAAMC,IAAUD,GAAQC,IAC3Cw7R,cAAa,IAAM,CAACz7R,EAAMC,IAAUD,EAAK0lB,WAAazlB,EAAMylB,YAC5DuzQ,WASHgI,EAAQ,CACVnJ,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB+R,QAC/C9G,SAAQ,IAAMz2R,IAAQ,EAAImrR,EAAUuJ,MAAwB,cAAlB10R,EAAKtK,YAC/C4/R,WAKH5xD,EAAU,CACZywD,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBgS,UAC/C/G,SAAQ,IAAMz2R,IAAQ,EAAImrR,EAAUuJ,MAAwB,cAAlB10R,EAAKtK,YAC/C4/R,WAKHzmC,EAAY,CACdslC,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBiS,YAC/ChH,SAAQ,IAAMz2R,IAAQ,EAAImrR,EAAUuJ,MAAwB,YAAlB10R,EAAKtK,YAC/C4/R,WAKHr3E,EAAY,CACdk2E,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBkS,YAC/CvG,YAAW,IAAMn3R,IAAQ,EAAImrR,EAAUuJ,OAAM,KAC7C+B,SAAQ,IAAMz2R,IAAQ,EAAImrR,EAAUuJ,OAAM,KAC1CY,WAKH7C,EAAM,CACR0B,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBiH,KAC/CgE,SAAQ,IAAMz2R,IAAQ,EAAImrR,EAAUnxM,QAAQh6E,EAAKkiB,SACjDozQ,WAKHxiP,EAAO,CACTqhP,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBmS,MAC/CjH,YAAW,IAAM/C,IAAO,EAAIxI,EAAUnxM,QAAQ25M,EAAI/8R,UAAY,MAC9D0+R,WAKH/xK,EAAW,CACb4wK,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBoS,UAC/ClH,YAAW,IAAM/C,GAAO,IAAIzpQ,EAAEy4F,UAAUgxK,EAAI7G,YAC5CwI,WAKHuI,EAAM,CACR1J,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBqS,KAC/C1pS,IAAI,CAAC,cAAcpF,GAAWT,IAC/B,MAAMqlS,EAAMrlS,EAAK,GACXqlF,GAAM,EAAIi6F,EAA2B/zK,SAAS85R,EAAIzxQ,MAAOnzB,EAAQmI,SAAW,IAClF,OAAO,IAAIgzB,EAAEy4F,UAAUhvC,MAEtBkjN,WAAU9nS,GAAW4kS,IACtB,MAAMhgN,GAAM,EAAIi6F,EAA2B/zK,SAAS85R,EAAIzxQ,MAAOnzB,EAAQmI,SAAW,IAClF,OAAO,IAAIgzB,EAAEy4F,UAAUhvC,MAEtB2hN,WAOHwI,EAAQ,CACV3J,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBsS,OAAO3pS,IAAI,CAAC+3R,EAAS8G,QAAQxvK,WAAY,cAAc,EAAG8oK,kBAAAA,EAAmBC,uBAAAA,KAA6B,EAAErqQ,EAAKyxD,MACjK,MAAMggN,EAAMtrK,EAAGxF,QAAQ3gG,EAAI6qQ,WAAY1kK,EAAG3F,UAAU/uC,EAAI1lF,QACxD,OAAO,IAAIg+R,EAAkBI,gBAAgBC,EAAmBC,GAAwBI,iBAAiBgH,MAC1G2B,WAKDyI,EAAU,CACZ5J,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBuS,SAC/C9H,cAAc,CAAC/J,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,aAAa,IAAM,CAAC7nC,EAAK/kF,IAAa,IAAIszB,EAAE+nQ,kBAAkBt2M,EAAK/kF,EAAS0rB,iBACzIgzQ,WAKH0I,EAAO,CACT7J,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBwS,MAC/C7pS,IAAI,IAAI,IAAM,IAAM,IAAI+1B,EAAEy4F,UAAU,YAAY6uC,EAAKpsF,UACrDkwN,WAKH2I,EAAU,CACZ9J,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgByS,SAC/C9pS,IAAI,IAAI,IAAM,KAAM,EAAIg3R,EAAUnxM,QAAQw3E,EAAKpsF,QAC/CkwN,WASH4I,EAAS,CACX/J,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB0S,QAC/ClH,aAAY,IAAM90Q,IAAO,EAAIipQ,EAAU1mB,SAAS,IAAIviP,EAAI6qQ,YAAYp4R,UACpE2gS,WAKH6I,EAAS,CACXhK,MAAO,CAAC,EAAG,GACXC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB2S,QAC/ClI,cAAc,CAAC/J,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQryI,cAAc,IAAM,CAAC78I,EAAQs6R,KAAgB,EAAIjT,EAAUnxM,QAAQ,IAAIl2E,GAAQmO,MAAMmsR,EAAc,GAAGhvR,KAAK,OACxK4mR,SAAS,CAAC9J,EAAS8G,QAAQO,gBAAiBrH,EAAS8G,QAAQryI,cAAc,IAAM,CAAC78I,EAAQs6R,KAC3F,MAAMn7Q,EAAM,IAAInf,EAAOipR,YAAY96Q,MAAMmsR,EAAYrR,WAAa,GAAG39Q,KAAK,IAC1E,OAAO,EAAI+7Q,EAAUzmB,YAAYzhP,EAAKnf,EAAOlN,aAE5Cs/R,eAAe,CAAChK,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQryI,YAAaurI,EAAS8G,QAAQryI,cAAc,IAAM,CAAC78I,EAAQs6R,EAAazpS,KAAW,EAAIw2R,EAAUnxM,QAAQ,IAAIl2E,GAAQmO,MAAMmsR,EAAc,EAAGzpS,EAASypS,EAAc,GAAGhvR,KAAK,OACzOknR,UAAU,CAACpK,EAAS8G,QAAQO,gBAAiBrH,EAAS8G,QAAQryI,YAAaurI,EAAS8G,QAAQryI,cAAc,IAAM,CAAC78I,EAAQs6R,EAAazpS,KACvI,MAAMsuB,EAAM,IAAInf,EAAOipR,YAAY96Q,MAAMmsR,EAAYrR,WAAa,EAAGp4R,EAAOo4R,WAAaqR,EAAYrR,WAAa,GAAG39Q,KAAK,IAC1H,OAAO,EAAI+7Q,EAAUzmB,YAAYzhP,EAAKnf,EAAOlN,aAE5C0+R,WAKH+I,EAAQ,CACVlK,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB6S,OAC/CvH,gBAAe,IAAMnD,IAAO,EAAIxI,EAAUnxM,QAAQ25M,EAAIpqR,iBACtDwtR,eAAc,IAAMpD,IAAO,EAAIxI,EAAUzmB,YAAYivB,EAAI5G,WAAWxjR,cAAeoqR,EAAI/8R,YACvF0+R,WAKHgJ,EAAQ,CACVnK,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB8S,OAC/CxH,gBAAe,IAAMnD,IAAO,EAAIxI,EAAUnxM,QAAQ25M,EAAIrxQ,iBACtDy0Q,eAAc,IAAMpD,IAAO,EAAIxI,EAAUzmB,YAAYivB,EAAI5G,WAAWzqQ,cAAeqxQ,EAAI/8R,YACvF0+R,WAOHiJ,EAAY,CACdpK,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB+S,WAC/CtI,cAAc,CAAC/J,EAASO,UAAUwK,gBAAiB/K,EAAS8G,QAAQxvK,aAAa,IAAM,CAACyK,EAAMC,KAAS,EAAIi9J,EAAUuJ,MAAMzmK,EAAK/3G,WAAWg4G,MAC3I8nK,SAAS,CAAC9J,EAAS8G,QAAQO,gBAAiBrH,EAAS8G,QAAQO,kBAAkB,IAAM,CAACtlK,EAAMC,KAC7F,GAAID,EAAKr3H,WAAas3H,EAAKt3H,SACvB,MAAM,IAAImhB,EAAIymR,8BAA8BvwK,EAAMC,GAEtD,OAAO,EAAIi9J,EAAUuJ,MAAMzmK,EAAK8+J,WAAW72Q,WAAWg4G,EAAK6+J,gBAE1DuI,WAKHmJ,EAAU,CACZtK,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBiT,SAC/CxI,cAAc,CAAC/J,EAASO,UAAUwK,gBAAiB/K,EAAS8G,QAAQxvK,aAAa,IAAM,CAACyK,EAAMC,KAAS,EAAIi9J,EAAUuJ,MAAMzmK,EAAK3+C,SAAS4+C,MACzI8nK,SAAS,CAAC9J,EAAS8G,QAAQO,gBAAiBrH,EAAS8G,QAAQO,kBAAkB,IAAM,CAACtlK,EAAMC,KAC7F,GAAID,EAAKr3H,WAAas3H,EAAKt3H,SACvB,MAAM,IAAImhB,EAAIymR,8BAA8BvwK,EAAMC,GAEtD,OAAO,EAAIi9J,EAAUuJ,MAAMzmK,EAAK8+J,WAAWz9M,SAAS4+C,EAAK6+J,gBAExDuI,WAKHoJ,EAAW,CACbvK,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBkT,UAC/CzI,cAAc,CAAC/J,EAASO,UAAUwK,gBAAiB/K,EAAS8G,QAAQxvK,aAAa,IAAM,CAACyK,EAAMC,KAAS,EAAIi9J,EAAUuJ,MAAMzmK,EAAKvmH,SAASwmH,MACzI8nK,SAAS,CAAC9J,EAAS8G,QAAQO,gBAAiBrH,EAAS8G,QAAQO,kBAAkB,IAAM,CAACtlK,EAAMC,KAC7F,GAAID,EAAKr3H,WAAas3H,EAAKt3H,SACvB,MAAM,IAAImhB,EAAIymR,8BAA8BvwK,EAAMC,GAEtD,OAAO,EAAIi9J,EAAUuJ,MAAMzmK,EAAK8+J,WAAWrlR,SAASwmH,EAAK6+J,gBAExDuI,WAKHqJ,EAAY,CACdxK,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBmT,WAC/C1I,cAAc,CAAC/J,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,aAAa,IAAM,CAACyK,EAAMC,KAAS,EAAIi9J,EAAUnxM,QAAQi0C,EAAKh8G,MAAM,EAAG9D,KAAK2vB,IAAI,EAAGmwF,EAAKvnH,QAAQwnH,QAC7J8nK,SAAS,CAAC9J,EAAS8G,QAAQO,gBAAiBrH,EAAS8G,QAAQxvK,aAAa,IAAM,CAACyK,EAAMC,KACxF,MAAOioK,EAAIC,GAAM,CAACnoK,EAAK8+J,WAAY7+J,EAAK6+J,YAClC9pQ,EAAMgrG,EAAK8+J,WAAW96Q,MAAM,EAAG9D,KAAK2vB,IAAI,EAAGq4P,EAAGzvR,QAAQ0vR,KAC5D,OAAOnzQ,IAAQmzQ,GAAK,EAAIjL,EAAUzmB,YAAYzhP,EAAKgrG,EAAKr3H,WAAY,EAAIu0R,EAAUnxM,QAAQ/2D,MAEzF+yQ,SAAS,CAAC9J,EAAS8G,QAAQO,gBAAiBrH,EAAS8G,QAAQO,kBAAkB,IAAM,CAACtlK,EAAMC,KAC7F,GAAID,EAAKr3H,WAAas3H,EAAKt3H,SACvB,MAAM,IAAImhB,EAAIymR,8BAA8BvwK,EAAMC,GAEtD,MAAOioK,EAAIC,GAAM,CAACnoK,EAAK8+J,WAAY7+J,EAAK6+J,YAClC9pQ,EAAMgrG,EAAK8+J,WAAW96Q,MAAM,EAAG9D,KAAK2vB,IAAI,EAAGq4P,EAAGzvR,QAAQ0vR,KAC5D,OAAOnzQ,IAAQmzQ,GAAK,EAAIjL,EAAUzmB,YAAYzhP,EAAKgrG,EAAKr3H,WAAY,EAAIu0R,EAAUnxM,QAAQ/2D,MAEzFqyQ,WAKHsJ,EAAW,CACbzK,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBoT,UAC/C3I,cAAc,CAAC/J,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,aAAa,IAAM,CAACyK,EAAMC,KAAS,EAAIi9J,EAAUnxM,QAAQi0C,EAAKh8G,MAAMg8G,EAAKvnH,QAAQwnH,IAAOj8G,MAAMi8G,EAAKv5H,WAChKqhS,SAAS,CAAC9J,EAAS8G,QAAQO,gBAAiBrH,EAAS8G,QAAQxvK,aAAa,IAAM,CAACyK,EAAMC,KACxF,MAAOioK,EAAIC,GAAM,CAACnoK,EAAK8+J,WAAY7+J,EAAK6+J,YAClC9pQ,EAAMkzQ,EAAGlkR,MAAMkkR,EAAGzvR,QAAQ0vR,IAAKnkR,MAAMmkR,EAAGzhS,QAC9C,OAAOsuB,IAAQmzQ,GAAK,EAAIjL,EAAUzmB,YAAYzhP,EAAKgrG,EAAKr3H,WAAY,EAAIu0R,EAAUnxM,QAAQ/2D,MAEzF+yQ,SAAS,CAAC9J,EAAS8G,QAAQO,gBAAiBrH,EAAS8G,QAAQO,kBAAkB,IAAM,CAACtlK,EAAMC,KAC7F,GAAID,EAAKr3H,WAAas3H,EAAKt3H,SACvB,MAAM,IAAImhB,EAAIymR,8BAA8BvwK,EAAMC,GAEtD,MAAOioK,EAAIC,GAAM,CAACnoK,EAAK8+J,WAAY7+J,EAAK6+J,YAClC9pQ,EAAMkzQ,EAAGlkR,MAAMkkR,EAAGzvR,QAAQ0vR,IAAKnkR,MAAMmkR,EAAGzhS,QAC9C,OAAOsuB,IAAQmzQ,GAAK,EAAIjL,EAAUzmB,YAAYzhP,EAAKgrG,EAAKr3H,WAAY,EAAIu0R,EAAUnxM,QAAQ/2D,MAEzFqyQ,WAKHuJ,EAAiB,CACnB1K,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBqT,gBAC/C3H,kBAAiB,IAAMv7M,IAAO,EAAIwvM,EAAUnxM,QAAQkS,UAAUvQ,MAAO25M,WAOxEwJ,GAAc,CAChB3K,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBuT,cAC/C9I,cAAc,CAAC/J,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,aAAa,IAAM,CAACjyG,EAAK4vE,KAAU,EAAIgqM,EAAUuJ,MAAM7nQ,EAAEmyQ,YAAYztR,EAAK4vE,MAASm0M,WAOnJtzQ,GAAQ,CACVmyQ,MAAO,CAAC,EAAG,GACXC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBxpQ,OAC/Ci0Q,cAAc,CAAC/J,EAASO,UAAUwK,gBAAiB/K,EAAS8G,QAAQxvK,aAR9D,IAAM,CAAC9lD,EAAM1oE,KAAY,EAAIm2R,EAAUuJ,MAAM7nQ,EAAE04H,QAAQ7nF,EAAM1oE,MASnEkhS,eAAe,CAAChK,EAASO,UAAUwK,gBAAiB/K,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,aAR5F,IAAM,CAAC9lD,EAAM1oE,EAAS4yF,KAAU,EAAIujM,EAAUuJ,MAAM7nQ,EAAE04H,QAAQ7nF,EAAM1oE,EAAS4yF,MASnF0tM,WAKH2J,GAAU,CACZ9K,MAAO,CAAC,EAAG,GACXC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgByT,SAC/C/I,eAAe,CAAChK,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,aAAa,IAAM,CAAC1pC,EAAK9kF,EAAS84I,KAAgB,EAAIq9I,EAAUnxM,QAAQntD,EAAExd,QAAQyqE,EAAK9kF,EAAS84I,MAC3L35I,IAAI,CAAC+3R,EAAS8G,QAAQO,gBAAiBrH,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,aAAa,IAAM,EAAE1pC,EAAK9kF,EAAS84I,MACzH,MAAM53I,EAAS22B,EAAExd,QAAQyqE,EAAIizM,WAAY/3R,EAAQ+3R,WAAYj/I,EAAYi/I,YACzE,OAAO,EAAI5B,EAAUzmB,YAAYxuQ,EAAQ4jF,EAAIljF,aAE5C2/R,kBAAkB,CAACrK,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,aAAa,IAAM,CAAC1pC,EAAK9kF,EAAS84I,EAAalmD,KAAU,EAAIujM,EAAUnxM,QAAQntD,EAAExd,QAAQyqE,EAAK9kF,EAAS84I,EAAalmD,MAC/OzzF,IAAI,CAAC+3R,EAAS8G,QAAQO,gBAAiBrH,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,WAAY0oK,EAAS8G,QAAQxvK,aAAa,IAAM,EAAE1pC,EAAK9kF,EAAS84I,EAAalmD,MACnK,MAAM1xF,EAAS22B,EAAExd,QAAQyqE,EAAIizM,WAAY/3R,EAAQ+3R,WAAYj/I,EAAYi/I,WAAYnlM,EAAMmlM,YAC3F,OAAO,EAAI5B,EAAUzmB,YAAYxuQ,EAAQ4jF,EAAIljF,aAE5C0+R,WASH1zP,GAAM,CACRuyP,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB0T,KAC/C5H,kBAAiB,IAAM1zO,GAAOz1C,KAAKyzB,IAAIgiB,KACvC0xO,WAKH/yQ,GAAQ,CACV4xQ,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB2T,OAC/C7H,kBAAiB,IAAM1zO,GAAOz1C,KAAKoU,MAAMqhC,KACzC0xO,WAKH7gR,GAAO,CACT0/Q,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB4T,MAC/C9H,kBAAiB,IAAM1zO,GAAOz1C,KAAKsG,KAAKmvC,KACxC0xO,WAKHlnR,GAAQ,CACV+lR,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB6T,OAC/C/H,kBAAiB,IAAM1zO,GAAOz1C,KAAKC,MAAMw1C,KACzC0xO,WAKHtyE,GAAO,CACTmxE,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB8T,MAC/CnrS,IAAI,IAAI,IAAM,KAAM,EAAIg3R,EAAU3mB,QAAQr2P,KAAK8B,YAC/CqlR,WAMT,SAASiK,GAAUC,GACf,OAAOj1Q,EAAEk1Q,iBAAiBD,EAAQt9Q,OAKtC,MAAMjkB,GAAM,CACRk2R,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBkU,KAAKvrS,IAAI,IAAK43R,GAAkB,IAAM,IAAI7hQ,EAAEgoQ,gBAAgBnG,EAAc9tR,IAAK8tR,EAAc9tR,IAAIqL,iBAAgBgsR,WAKnKqK,GAAO,CACTxL,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBoU,MAC/CvI,aAAY,IAAMv1Q,IAAQ,EAAIqpQ,EAAU1mB,SAASxyQ,OAAOstS,GAAUz9Q,GAAM69Q,SACxErK,WAKHuK,GAAQ,CACV1L,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBsU,OAC/CzI,aAAY,IAAMv1Q,IAAQ,EAAIqpQ,EAAU1mB,SAASxyQ,OAAOstS,GAAUz9Q,GAAM+9Q,UACxEvK,WAKH5yQ,GAAM,CACRyxQ,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBuU,KAC/C1I,aAAY,IAAMv1Q,IAAQ,EAAIqpQ,EAAU1mB,SAASxyQ,OAAOstS,GAAUz9Q,GAAMY,QACxE4yQ,WAKH0K,GAAQ,CACV7L,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgByU,OAC/C5I,aAAY,IAAMv1Q,IAAQ,EAAIqpQ,EAAU1mB,SAASxyQ,OAAOstS,GAAUz9Q,GAAMk+Q,UACxE1K,WAKH4K,GAAU,CACZ/L,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB2U,SAC/C9I,aAAY,IAAMv1Q,IAAQ,EAAIqpQ,EAAU1mB,SAASxyQ,OAAOstS,GAAUz9Q,GAAMo+Q,YACxE5K,WAKH8K,GAAU,CACZjM,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB6U,SAC/ChJ,aAAY,IAAMv1Q,IAAQ,EAAIqpQ,EAAUjoE,SAASjxN,OAAOstS,GAAUz9Q,GAAMs+Q,YACxE9K,WAKHgL,GAAW,CACbnM,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB+U,UAC/ClJ,aAAY,IAAMv1Q,IACnB,MAAMm5N,EAAWpuN,EAAE2zQ,sBAAsBjB,GAAUz9Q,GAAMw+Q,UACzD,IAAKrlD,EACD,MAAM,IAAIljO,EAAI0oR,oBAAoB3+Q,EAAK+wQ,UAE3C,OAAO,IAAI3oQ,EAAE64F,QAAQk4H,EAAUixC,EAAS8G,QAAQ0N,qBAAsBzlD,MAErEq6C,WAKHqL,GAAK,CACPxM,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBoV,IAC/CvJ,aAAY,IAAMv1Q,IAAQ,EAAIqpQ,EAAUnxM,QAAQulN,GAAUz9Q,GAAMw+Q,YAChEhL,WASHl/O,GAAM,CACR+9O,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBp1O,KAC/C0gP,gBAAe,IAAM50Q,IAAO,EAAIipQ,EAAUnxM,SAAQ,EAAI0hN,EAAY/9R,MAAMukB,MACxEozQ,WAKHj/O,GAAO,CACT89O,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBn1O,MAC/CygP,gBAAe,IAAM50Q,IAAO,EAAIipQ,EAAUnxM,SAAQ,EAAI6qC,EAAUnxE,QAAQrV,OAAOnc,GAAKrO,OAAO,UAC3FyhR,WAKHl2P,GAAS,CACX+0P,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBpsP,QAC/C03P,gBAAe,IAAM50Q,IAAO,EAAIipQ,EAAUnxM,SAAQ,EAAI6qC,EAAUjxE,UAAUvV,OAAOnc,GAAKrO,OAAO,UAC7FyhR,WAKH51P,GAAS,CACXy0P,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgB9rP,QAC/Co3P,gBAAe,IAAM50Q,IAAO,EAAIipQ,EAAUnxM,SAAQ,EAAI6qC,EAAUhxE,UAAUxV,OAAOnc,GAAKrO,OAAO,UAC7FyhR,WAKH/1P,GAAS,CACX40P,MAAO,EACPC,WAAW,EAAIjJ,EAAUyJ,SAASnqQ,EAAE+gQ,gBAAgBjsP,QAC/Cu3P,gBAAe,IAAM50Q,IAAO,EAAIipQ,EAAUnxM,SAAQ,EAAI6qC,EAAU/wE,UAAUzV,OAAOnc,GAAKrO,OAAO,UAC7FyhR,WASTtnS,EAAQoqO,YAAc,CAKlB,IAAKr5N,EACL88R,MAAOD,EACPG,OAAQD,EACR,IAAKE,EACL,IAAKE,EACL,IAAKC,EACL,IAAKC,EACL,IAAKE,EACL,KAAMM,EACN,IAAKE,EACL,IAAKE,EACL,KAAME,EACN,KAAME,EAKNyD,MAAOvD,EACPwD,QAASp9D,EACTq9D,UAAWlyC,EACXmyC,UAAW/iF,EACX/7L,IAAKuwQ,EACL3/O,KAAAA,EACAywE,SAAAA,EACA5vC,IAAKkqN,EACLz7O,IAAKy7O,EAELoD,MAAOnD,EACPoD,QAASnD,EACTvsI,KAAMwsI,EACNmD,QAASlD,EAKTmD,OAAQlD,EACRrtR,OAAQstR,EACRkD,MAAOhD,EACPiD,MAAOhD,EACPiD,UAAWhD,EACXiD,QAAS/C,EACTt2N,SAAUu2N,EACV+C,UAAW9C,EACX+C,SAAU9C,EACV+C,eAAgB9C,EAEhBC,YAAAA,GACAnpI,MAAO3zI,GACP3S,QAAS4vR,GAKTr9P,IAAAA,GACArf,MAAAA,GACA9N,KAAAA,GACArG,MAAAA,GACA40M,KAAAA,GAKA/kN,IAAAA,GACA0hS,KAAAA,GACAE,MAAAA,GACAn9Q,IAAAA,GACAs9Q,MAAAA,GACAE,QAAAA,GACAE,QAAAA,GACAE,SAAAA,GACAK,GAAAA,GAKA3sP,IAAKoC,GACL1C,KAAM2C,GACNzC,OAAQxU,GACRyU,OAAQnU,GACRoU,OAAQvU,kCC9tBZzxC,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4zS,wBAAqB,EAC7B,MAAMpwI,EAAO,EAAQ,MACftnI,EAAI,EAAQ,OACZO,EAAI,EAAQ,OACZ1S,EAAM,EAAQ,OACdozQ,EAAY,EAAQ,MACpB0W,EAAK,EAAQ,OASbn3M,EAAQ,CACVypM,MAAO,EACP3lS,WAAgB,OAAC,KAAEF,EAAI,QAAEu+H,KACdi1K,EAAO,CAAExzS,KAAAA,EAAMu+H,QAAAA,IAE1B6kK,UAAS,EAAC,KAAEpjS,EAAI,QAAEu+H,KACPi1K,EAAO,CAAExzS,KAAAA,EAAMu+H,QAAAA,KAG9B,SAASi1K,GAAO,KAAExzS,EAAI,QAAEu+H,IACpB,MAAM13H,EAAW7G,EAAK,GACtB,GAAI6G,EAASyM,iBAAmBsoB,EAAE6lQ,eAAe/sK,SAC7C,MAAM,IAAIjrG,EAAIy6Q,qBAAqBlkS,EAAMm8B,EAAEylQ,gBAAgB6R,OAE/D,MAAMpmN,EAAMkxC,EAAQ/1H,KAAI,EAAIq0R,EAAUmG,iBAAiBn8R,IACvD,OAAO,EAAIg2R,EAAUuJ,MAAM/4M,GAO/B,MAAMqmN,EAAW,CACb7N,MAAO,EACP3lS,kBAAiB,KAAEF,EAAI,QAAEu+H,EAAO,SAAE0mD,IAC9B,MAAM0uH,QAAiB1uH,EAASjlL,EAAK,GAAIu+H,GAEzC,OACI0mD,EAFQ0uH,EAASzS,YAERlhS,EAAK,GACLA,EAAK,GADIu+H,IAG1B6kK,WAAU,KAAEpjS,EAAI,QAAEu+H,EAAO,SAAE0mD,IACvB,MAAM0uH,EAAW1uH,EAASjlL,EAAK,GAAIu+H,GAEnC,OACI0mD,EAFQ0uH,EAASzS,YAERlhS,EAAK,GACLA,EAAK,GADIu+H,KASxBq1K,EAAW,CACb/N,MAAOliS,OAAOC,kBACd1D,kBAAiB,KAAEF,EAAI,QAAEu+H,EAAO,SAAE0mD,IAC9B,MAAMxyF,EAAS,GACf,IAAK,MAAMpiF,KAAQrQ,EACf,IACI,aAAailL,EAAS50K,EAAMkuH,GAEhC,MAAOlyH,GACHomF,EAAO1sF,KAAKsG,GAGpB,MAAM,IAAIod,EAAIoqR,cAAcphN,IAEhC2wM,WAAU,KAAEpjS,EAAI,QAAEu+H,EAAO,SAAE0mD,IACvB,MAAMxyF,EAAS,GACf,IAAK,MAAMpiF,KAAQrQ,EACf,IACI,OAAOilL,EAAS50K,EAAMkuH,GAE1B,MAAOlyH,GACHomF,EAAO1sF,KAAKsG,GAGpB,MAAM,IAAIod,EAAIoqR,cAAcphN,KAQ9BqhN,EAAY,CACdjO,MAAO,EACP3lS,kBAAiB,KAAEF,EAAI,QAAEu+H,EAAO,SAAE0mD,IAC9B,MAAO8uH,EAAUC,GAAah0S,EAC9B,IAGI,UAFuBilL,EAAS8uH,EAAUx1K,IACpB2iK,YAElB,OAAO,EAAIrE,EAAUuJ,OAAM,GAE/B,MACMp4R,SADkBi3K,EAAS+uH,EAAWz1K,IACpB2iK,YACxB,OAAO,EAAIrE,EAAUuJ,MAAMp4R,GAE/B,MAAO3B,GAGH,WAF6B44K,EAAS+uH,EAAWz1K,IACf2iK,YAE9B,MAAM70R,EAEV,OAAO,EAAIwwR,EAAUuJ,OAAM,KAGnChD,WAAU,KAAEpjS,EAAI,QAAEu+H,EAAO,SAAE0mD,IACvB,MAAO8uH,EAAUC,GAAah0S,EAC9B,IAGI,GAFiBilL,EAAS8uH,EAAUx1K,GACd2iK,YAElB,OAAO,EAAIrE,EAAUuJ,OAAM,GAE/B,MACMp4R,EADYi3K,EAAS+uH,EAAWz1K,GACd2iK,YACxB,OAAO,EAAIrE,EAAUuJ,MAAMp4R,GAE/B,MAAO3B,GAGH,IAFuB44K,EAAS+uH,EAAWz1K,GACT2iK,YAE9B,MAAM70R,EAEV,OAAO,EAAIwwR,EAAUuJ,OAAM,MASjC6N,EAAa,CACfpO,MAAO,EACP3lS,kBAAiB,KAAEF,EAAI,QAAEu+H,EAAO,SAAE0mD,IAC9B,MAAO8uH,EAAUC,GAAah0S,EAC9B,IAGI,WAFuBilL,EAAS8uH,EAAUx1K,IACpB2iK,YAElB,OAAO,EAAIrE,EAAUuJ,OAAM,GAE/B,MACMp4R,SADkBi3K,EAAS+uH,EAAWz1K,IACpB2iK,YACxB,OAAO,EAAIrE,EAAUuJ,MAAMp4R,GAE/B,MAAO3B,GAGH,UAF6B44K,EAAS+uH,EAAWz1K,IACf2iK,YAE9B,MAAM70R,EAEV,OAAO,EAAIwwR,EAAUuJ,OAAM,KAGnChD,WAAU,KAAEpjS,EAAI,QAAEu+H,EAAO,SAAE0mD,IACvB,MAAO8uH,EAAUC,GAAah0S,EAC9B,IAGI,IAFiBilL,EAAS8uH,EAAUx1K,GACd2iK,YAElB,OAAO,EAAIrE,EAAUuJ,OAAM,GAE/B,MACMp4R,EADYi3K,EAAS+uH,EAAWz1K,GACd2iK,YACxB,OAAO,EAAIrE,EAAUuJ,MAAMp4R,GAE/B,MAAO3B,GAGH,GAFuB44K,EAAS+uH,EAAWz1K,GACT2iK,YAE9B,MAAM70R,EAEV,OAAO,EAAIwwR,EAAUuJ,OAAM,MASjC8N,EAAW,CACbrO,MAAO,EACP3lS,kBAAiB,KAAEF,EAAI,QAAEu+H,EAAO,SAAE0mD,IAC9B,MAAO8uH,EAAUC,GAAah0S,EAAKsG,KAAIklF,GAAOy5F,EAASz5F,EAAK+yC,MACrDxwH,EAAMC,SAAe1C,QAAQ4nB,IAAI,CAAC6gR,EAAUC,IACnD,OAAO,EAAInX,EAAUuJ,MAAMr4R,EAAKuvR,QAAQ5vR,OAAOM,EAAMsvR,WAEzD8F,WAAU,KAAEpjS,EAAI,QAAEu+H,EAAO,SAAE0mD,IACvB,MAAOl3K,EAAMC,GAAShO,EAAKsG,KAAIklF,GAAOy5F,EAASz5F,EAAK+yC,KACpD,OAAO,EAAIs+J,EAAUuJ,MAAMr4R,EAAKuvR,QAAQ5vR,OAAOM,EAAMsvR,YAQvD6W,EAAW,CACbtO,MAAOliS,OAAOC,kBACdsiS,WAAWlmS,GACAA,EAAKqG,OAAS,EAEzBnG,iBAAiBO,GACb,MAAM,KAAET,EAAI,QAAEu+H,EAAO,SAAE0mD,GAAaxkL,GAC7BszS,KAAajmN,GAAa9tF,EAEjC,OAAOo0S,QADYnvH,EAAS8uH,EAAUx1K,GACR/+H,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI3V,GAAU,CAAET,KAAM8tF,IAAc,KAElGs1M,UAAU3iS,GACN,MAAM,KAAET,EAAI,QAAEu+H,EAAO,SAAE0mD,GAAaxkL,GAC7BszS,KAAajmN,GAAa9tF,EAEjC,OAAOq0S,EADMpvH,EAAS8uH,EAAUx1K,GACH/+H,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAI3V,GAAU,CAAET,KAAM8tF,IAAc,MAGrG5tF,eAAek0S,EAAiBluC,EAAQzlQ,EAAS0b,GAC7C,MAAM,KAAEnc,EAAI,QAAEu+H,EAAO,SAAE0mD,EAAQ,cAAE67G,GAAkBrgS,EACnD,GAAoB,IAAhBT,EAAKqG,OAEL,OADiB8V,EAAQmS,OAAM++D,IAAQA,KACrB,EAAIwvM,EAAUuJ,OAAM,GAAS96R,QAAQE,OAAO,IAAIie,EAAI6qR,QAAQn4R,IAElF,IACI,MAAMo4R,EAAiBv0S,EAAKy6C,QAEtB1D,QAAakuI,EAASsvH,EAAgBh2K,GAE5C,OADgBg1K,EAAGtW,iBAAiB9gQ,EAAE+gQ,gBAAgB+Q,OAC1CttR,MAAM,CAACulP,EAAQnvN,GAAOt2C,GAASg+R,YAChC,EAAI5B,EAAUuJ,OAAM,GAExBgO,EAAiBluC,EAAQzlQ,EAAS,IAAI0b,GAAS,IAE1D,MAAO9P,GACH,OAAO+nS,EAAiBluC,EAAQzlQ,EAAS,IAAI0b,EAAS9P,KAG9D,SAASgoS,EAAgBnuC,EAAQzlQ,EAAS0b,GACtC,MAAM,KAAEnc,EAAI,QAAEu+H,EAAO,SAAE0mD,EAAQ,cAAE67G,GAAkBrgS,EACnD,GAAoB,IAAhBT,EAAKqG,OAAc,CAEnB,GADiB8V,EAAQmS,OAAM++D,IAAQA,IAEnC,OAAO,EAAIwvM,EAAUuJ,OAAM,GAE/B,MAAM,IAAI38Q,EAAI6qR,QAAQn4R,GAE1B,IACI,MAEM46B,EAAOkuI,EAFUjlL,EAAKy6C,QAEU8jF,GAEtC,OADgBg1K,EAAGtW,iBAAiB9gQ,EAAE+gQ,gBAAgB+Q,OAC1CttR,MAAM,CAACulP,EAAQnvN,GAAOt2C,GAASg+R,YAChC,EAAI5B,EAAUuJ,OAAM,GAExBiO,EAAgBnuC,EAAQzlQ,EAAS,IAAI0b,GAAS,IAEzD,MAAO9P,GACH,OAAOgoS,EAAgBnuC,EAAQzlQ,EAAS,IAAI0b,EAAS9P,KAQ7D,MAAMmoS,EAAc,CAChB3O,MAAOliS,OAAOC,kBACdsiS,WAAWlmS,GACAA,EAAKqG,OAAS,EAEzBnG,iBAAiBO,GACb,MAAMg0S,EAAMlB,EAAGmB,iBAAiBv4Q,EAAEylQ,gBAAgB+S,IAC5CC,QAAaH,EAAIhS,WAAWhiS,GAClC,OAAO,EAAIo8R,EAAUuJ,OAAOwO,EAAKnW,aAErC2E,UAAU3iS,GACN,MACMm0S,EADMrB,EAAGmB,iBAAiBv4Q,EAAEylQ,gBAAgB+S,IACjCvR,UAAU3iS,GAC3B,OAAO,EAAIo8R,EAAUuJ,OAAOwO,EAAKnW,cAUnCoW,GAAa,EAAIhY,EAAUyJ,SAASnqQ,EAAEylQ,gBAAgBkT,QAAQpM,aAAY,IAAMr4R,GAAQA,IACzF22R,UAAUhB,iBAITjnR,EAAS,CACX8mR,MAAOliS,OAAOC,kBACd1D,iBAAiBO,GACb,MAAM,KAAET,EAAI,QAAEu+H,EAAO,SAAE0mD,EAAQ,cAAE67G,EAAa,kBAAE9C,GAAsBv9R,EAChEs0S,EAAQ/0S,EACTsG,KAAIpG,MAAOmQ,GAAS40K,EAAS50K,EAAMkuH,KACnCj4H,KAAIpG,MAAO80S,IACZ,MAAMxuS,EAAYquS,EAAW50K,OAAO,OAAO+0K,GAAQhX,EAAmB8C,GACtE,IAAKt6R,EACD,MAAM,IAAIijB,EAAIy6Q,qBAAqBlkS,EAAMm8B,EAAEylQ,gBAAgBkT,QAE/D,OAAOtuS,EAAU/F,EAAV+F,CAAmB,OAAOwuS,OAE/BC,QAAa3pS,QAAQ4nB,IAAI6hR,GAEzBjvL,EADUmvL,EAAK3uS,KAAI++R,GAAOA,EAAI5G,aACb39Q,KAAK,IACtB0jC,EAAO0wP,EAAaD,GAAQA,EAAK,GAAG3sS,cAAWlG,EACrD,OAAOoiD,GAAO,EAAIq4O,EAAUzmB,YAAYtwJ,EAAQthE,IAAQ,EAAIq4O,EAAUnxM,QAAQo6B,IAElFs9K,UAAU3iS,GACN,MAAM,KAAET,EAAI,QAAEu+H,EAAO,SAAE0mD,EAAQ,kBAAE+4G,EAAiB,cAAE8C,GAAkBrgS,EAChEw0S,EAAOj1S,EACRsG,KAAI+J,GAAQ40K,EAAS50K,EAAMkuH,KAC3Bj4H,KAAI0uS,IACL,MAAMxuS,EAAYquS,EAAW50K,OAAO,CAAC+0K,GAAQhX,EAAmB8C,GAChE,IAAKt6R,EACD,MAAM,IAAIijB,EAAIy6Q,qBAAqBlkS,EAAMm8B,EAAEylQ,gBAAgBkT,QAE/D,OAAOtuS,EAAU/F,EAAV+F,CAAmB,CAACwuS,OAGzBlvL,EADUmvL,EAAK3uS,KAAI++R,GAAOA,EAAI5G,aACb39Q,KAAK,IACtB0jC,EAAO0wP,EAAaD,GAAQA,EAAK,GAAG3sS,cAAWlG,EACrD,OAAOoiD,GAAO,EAAIq4O,EAAUzmB,YAAYtwJ,EAAQthE,IAAQ,EAAIq4O,EAAUnxM,QAAQo6B,KAGtF,SAASovL,EAAaD,GAClB,OAAOA,EAAK5uS,OAAS,GAAK4uS,EAAK3mR,OAAM+2Q,GAAOA,EAAI/8R,WAAa2sS,EAAK,GAAG3sS,WASzE,MAAM6sS,GAAY,EAAItY,EAAUyJ,SAASnqQ,EAAEylQ,gBAAgBwT,OAAO7M,WAAU,IAAM/8M,GAAOA,IAAKw7M,UAAUhB,iBAKlGoP,EAAQ,CACVvP,MAAOliS,OAAOC,kBACdsiS,WAAWlmS,GACgB,IAAhBA,EAAKqG,QAAgC,IAAhBrG,EAAKqG,OAErCnG,iBAAiBO,GACb,MAAM,KAAET,EAAI,QAAEu+H,EAAO,SAAE0mD,EAAQ,kBAAE+4G,EAAiB,cAAE8C,GAAkBrgS,EAChEqD,EAAwB,IAAhB9D,EAAKqG,aACT4+K,EAASjlL,EAAK,GAAIu+H,QACxBn8H,EACJ,IAAIizS,EACJ,GAAIvxS,EAAO,CACP,MAAM0C,EAAY2uS,EAAUl1K,OAAO,CAACn8H,GAAQk6R,EAAmB8C,GAC/D,IAAKt6R,EACD,MAAM,IAAIijB,EAAIy6Q,qBAAqBlkS,EAAMm8B,EAAEylQ,gBAAgBwT,OAE/DC,EAAW7uS,EAAU/F,EAAV+F,CAAmB,CAAC1C,IAAQ8vB,MAG3C,GAAInzB,EAAQuP,MAAO,CACf,MAAMA,QAAcvP,EAAQuP,MAAMqlS,GAClC,OAAO,IAAIz5Q,EAAE83F,UAAU1jH,GAE3B,OAAOslS,EAAOD,IAElBjS,UAAU3iS,GACN,MAAM,KAAET,EAAI,QAAEu+H,EAAO,SAAE0mD,EAAQ,kBAAE+4G,EAAiB,cAAE8C,GAAkBrgS,EAChEqD,EAAwB,IAAhB9D,EAAKqG,OACf4+K,EAASjlL,EAAK,GAAIu+H,QAClBn8H,EACJ,IAAIizS,EACJ,GAAIvxS,EAAO,CACP,MAAM0C,EAAY2uS,EAAUl1K,OAAO,CAACn8H,GAAQk6R,EAAmB8C,GAC/D,IAAKt6R,EACD,MAAM,IAAIijB,EAAIy6Q,qBAAqBlkS,EAAMm8B,EAAEylQ,gBAAgBwT,OAE/DC,EAAW7uS,EAAU/F,EAAV+F,CAAmB,CAAC1C,IAAQ8vB,MAG3C,GAAInzB,EAAQuP,MAAO,CACf,MAAMA,EAAQvP,EAAQuP,MAAMqlS,GAC5B,OAAO,IAAIz5Q,EAAE83F,UAAU1jH,GAE3B,OAAOslS,EAAOD,KAGtB,SAASC,EAAOxxS,GACZ,OAAO,IAAI83B,EAAE83F,UAAU5vH,GAASo/J,EAAKpsF,MAEzCp3E,EAAQ4zS,mBAAqB,CAKzBl3M,MAAAA,EACAm5M,GAAI7B,EACJE,SAAAA,EACA,KAAMK,EACN,KAAMH,EACN0B,SAAUtB,EACVuB,GAAItB,EACJuB,MAAOlB,EAEPz1R,OAAAA,EAEAq2R,MAAAA,8BC3WJ,SAASO,EAAY1yR,GACjB,MAAe,MAARA,EAEX,SAAS2yR,EAAc7nS,EAAMC,GAEzB,OADqB,IAAIwsC,OAAO,IAAIzsC,KAAS,MACzB0K,KAAK,IAAIzK,MA7DjCxO,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwyS,sBAAwBxyS,EAAQgxS,YAAchxS,EAAQqhB,QAAUrhB,EAAQu3J,aAAU,EAS1Fv3J,EAAQu3J,QANR,SAAiB7nF,EAAM1oE,EAAS4yF,GAI5B,OADY,IAAI9+C,OAAO9zC,EAAS4yF,GACrB7gF,KAAK22D,IAapB1vE,EAAQqhB,QARR,SAAiByqE,EAAK9kF,EAAS84I,EAAalmD,GACxC,IAAIu8M,EAAM,IAAIr7P,OAAO9zC,EAAS4yF,GAK9B,OAJKu8M,EAAInhN,SAELmhN,EAAM,IAAIr7P,OAAO9zC,EAAS,GADX4yF,GAAS,QAGrB9N,EAAIzqE,QAAQ80R,EAAKr2J,IAoC5B9/I,EAAQgxS,YA7BR,SAAqBztR,EAAK4vE,GACtB,MAAMijN,EAAW7yR,EAAI7B,MAAM,KACrB20R,EAAYljN,EAAMzxE,MAAM,KAC9B,IAAKw0R,EAAcG,EAAU,GAAID,EAAS,MACrCH,EAAYG,EAAS,IACtB,OAAO,EAEX,IAAIE,EAAK,EACLC,EAAK,EACT,KAAOA,EAAKF,EAAU1vS,QAClB,GAAIsvS,EAAYI,EAAUE,IACtBA,QADJ,CAIA,GAAID,IAAOF,EAASzvS,OAChB,OAAO,EAEX,GAAIuvS,EAAcG,EAAUE,GAAKH,EAASE,IACtCA,IACAC,QAFJ,CAKA,GAA4B,IAAxBH,EAASE,GAAI3vS,OACb,OAAO,EAEX2vS,KAEJ,OAAO,GAuCXt2S,EAAQwyS,sBAtBR,SAA+BF,GAC3B,IAAKA,EACD,OAEJ,GAAIA,EAASpqR,WAAW,KACpB,MAAO,OAGX,MAAOlE,EAAMwyR,EAAOC,EAAO96Q,EAAG+6Q,EAAOC,GAASrE,EAExC/kD,EAAe,MAAVipD,EAAgBA,EAAQ,GAC7BhpD,EAAKD,GAAgB,MAAVkpD,EAAgBA,EAAQ,GAGnCG,EAAe,MAAVF,EAAgBA,EAAQ,GAC7BG,EAAKD,GAAgB,MAAVD,EAAgBA,EAAQ,GAKzC,MAAO,GADqB,MAAT3yR,EAAe,IAAM,OAP1BupO,EAAKC,EAAK,GAAGD,EAAKC,KAAQ,KAIxBopD,EAAKC,EAAK,GAAGD,EAAKC,KAAQ,0CCtF9C,IAAIz0S,EAAmBxB,MAAQA,KAAKwB,kBAAqBtC,OAAOuC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAO7C,OAAO8C,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,MAExD1C,OAAOC,eAAeuC,EAAGG,EAAIE,IAC5B,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,KAEVU,EAAgBtC,MAAQA,KAAKsC,cAAiB,SAASX,EAAGvC,GAC1D,IAAK,IAAImD,KAAKZ,EAAa,YAANY,GAAoBrD,OAAOsD,UAAUC,eAAeC,KAAKtD,EAASmD,IAAIf,EAAgBpC,EAASuC,EAAGY,IAE3HrD,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQknS,aAAelnS,EAAQ82S,eAAiB92S,EAAQg1S,iBAAmBh1S,EAAQu9R,sBAAmB,EACtG,MAAMwZ,EAAS,EAAQ,OACjBC,EAAmB,EAAQ,OAC3BC,EAAqB,EAAQ,OAC7BC,EAAqB,EAAQ,OACnCh0S,EAAa,EAAQ,OAAWlD,GAChCA,EAAQu9R,iBAAmBz9R,OAAOwM,YAAYxM,OAAO+B,QAAQo1S,EAAmB7sE,aAAaxjO,KAAI,EAAE7E,EAAK4rF,KAAS,CAAC5rF,EAAK,IAAIg1S,EAAOjR,gBAAgB/jS,EAAK4rF,OACvJ3tF,EAAQg1S,iBAAmBl1S,OAAOwM,YAAYxM,OAAO+B,QAAQq1S,EAAmBtD,oBAAoBhtS,KAAI,EAAE7E,EAAK4rF,KAAS,CAAC5rF,EAAK,IAAIg1S,EAAOnR,gBAAgB7jS,EAAK4rF,OAC9J3tF,EAAQ82S,eAAiBh3S,OAAOwM,YAAYxM,OAAO+B,QAAQm1S,EAAiBlM,kBAAkBlkS,KAAI,EAAE7E,EAAK4rF,KAAS,CAAC5rF,EAAK,IAAIg1S,EAAOlR,cAAc9jS,EAAK4rF,OACtJ,IAAIo5M,EAAiB,EAAQ,MAC7BjnS,OAAOC,eAAeC,EAAS,eAAgB,CAAEgD,YAAY,EAAMC,IAAK,WAAc,OAAO8jS,EAAeG,8CCzB5GpnS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQihS,wBAAqB,EAC7B,MAAMnvR,EAAoB,EAAQ,MAC5BoqB,EAAI,EAAQ,OACZghQ,EAAc,EAAQ,OACtBzgQ,EAAI,EAAQ,OACZ1S,EAAM,EAAQ,OACd+yQ,EAAW,EAAQ,OACnBmB,EAAoB,EAAQ,MAClC,MAAMgD,UAA2BhD,EAAkBI,gBAC/Ch+R,YAAY82S,GACR52S,MAAM42S,EAAc7Y,kBAAmB6Y,EAAc5Y,wBACrD39R,KAAKu2S,cAAgBA,EACrBv2S,KAAKw2S,cAAgB,CAAErwS,KAAMowS,EAAcpwS,KAAM+5R,QAASqW,EAAcrW,SAE5EI,iBAAiBvwR,GACb,IAAKA,EACD,MAAM,IAAIoZ,EAAIstR,kBAAkB1mS,GAEpC,MAAMsS,EAAQnR,EAAkBy+H,QAAQK,gBACxC,OAAQjgI,EAAKiD,gBACT,KAAKqP,EAAM4yH,KACP,OAAOj1I,KAAK02S,cAAc3mS,GAC9B,KAAKsS,EAAM2yH,SACP,OAAOh1I,KAAK22S,kBAAkB5mS,GAClC,KAAKsS,EAAMwyH,MACP,OAAO70I,KAAK42S,eAAe7mS,GAC/B,KAAKsS,EAAMsyH,UACP,OAAO0rJ,EAAmBwW,mBAAmB9mS,GACjD,KAAKsS,EAAMoyH,UACP,OAAO4rJ,EAAmByW,mBAAmB/mS,GACjD,KAAKsS,EAAM8yH,SACP,OAAOkrJ,EAAmB0W,kBAAkBhnS,GAChD,QACI,MAAM,IAAIoZ,EAAI64Q,sBAAsBjyR,IAGhD3F,yBAAyBgH,GACrB,IAAKA,EAAKgkI,SACN,MAAM,IAAIjsH,EAAIstR,kBAAkBrlS,GAEpC,OAAO,IAAIkqB,EAAEy4F,UAAU3iH,EAAKgkI,SAAS/1I,OAEzCs3S,kBAAkB5mS,GACd,GAAI8rB,EAAEm7Q,iBAAiB9uS,IAAI6H,EAAKglI,UAAW,CACvC,MAAMkiK,EAAYlnS,EAAKglI,SACjBmiK,EAAcnnS,EAAKrQ,KAAKsG,KAAIklF,GAAOlrF,KAAKsgS,iBAAiBp1M,KACzDisN,EAAc7a,EAAY8X,iBAAiB6C,GACjD,IAAKE,EAAYvR,WAAWsR,GACxB,MAAM,IAAI/tR,EAAIiuR,aAAaF,EAAaD,GAE5C,OAAO,IAAI37Q,EAAEgmQ,gBAAgB4V,EAAaC,EAAYhV,WAAYgV,EAAYrU,WAElF,IAAKjnQ,EAAEw7Q,UAAUnvS,IAAI6H,EAAKglI,UACtB,MAAM,IAAI5rH,EAAImuR,gBAAgBvnS,EAAKglI,UAEvC,MAAMwiK,EAAYxnS,EAAKglI,SACjByiK,EAAcznS,EAAKrQ,KAAKsG,KAAIklF,GAAOlrF,KAAKsgS,iBAAiBp1M,KACzDusN,EAAcnb,EAAYK,iBAAiB4a,GACjD,IAAKlX,EAAmBqX,gBAAgBF,EAAaC,EAAYlS,OAC7D,MAAM,IAAIp8Q,EAAIiuR,aAAaI,EAAaD,GAE5C,OAAO,IAAIj8Q,EAAE8lQ,SAASoW,GAAa93S,GAAQ+3S,EAAYp3R,MAAM3gB,EAAMM,KAAKu2S,iBAE5EoB,iBAAiBzjN,EAAMhxF,GACnB,OAAOxD,IACH,IACI,MAAMwmB,EAAMguE,EAAKx0F,EAAKsG,KAAIklF,GAAOA,EAAI8xM,WACrC,OAAOh9R,KAAKuiS,uBAAuBr8Q,GAEvC,MAAOna,GACH,MAAM,IAAImwR,EAAS0b,uBAAuB10S,EAAM6I,KAI5D8rS,kBAAkB3jN,EAAMhxF,GACpB,OAAOtD,MAAOF,IACV,IACI,MAAMwmB,QAAYguE,EAAKx0F,EAAKsG,KAAIklF,GAAOA,EAAI8xM,WAC3C,OAAOh9R,KAAKuiS,uBAAuBr8Q,GAEvC,MAAOna,GACH,MAAM,IAAImwR,EAAS0b,uBAAuB10S,EAAM6I,KAK5D6qS,eAAe7mS,GACX,MAAM+nS,EAAW/nS,EAAK7M,KAAK7D,MACrB04S,EAAYhoS,EAAKrQ,KAAKsG,KAAIklF,GAAOlrF,KAAKsgS,iBAAiBp1M,KAC7D,GAAIrvD,EAAEm8Q,eAAe9vS,IAAI4vS,GAAW,CAEhC,MAAMnmS,EAAK5B,EAAK7M,KAAK7D,MACf44S,EAAY3b,EAAY4Z,eAAevkS,GAC7C,OAAO,IAAI2pB,EAAEkmQ,MAAMzxR,EAAK7M,KAAM60S,GAAWr4S,GAAQu4S,EAAU53R,MAAM3gB,EAAMM,KAAKu2S,iBAEhF,GAAgC,SAA5Bv2S,KAAKw2S,cAAcrwS,KAAiB,CAEpC,MAAM+xS,EAAoBl4S,KAAKw2S,cAActW,QAAQnwR,EAAK7M,MAC1D,GAAIg1S,EAAmB,CACnB,MAAMC,EAAan4S,KAAK23S,iBAAiBO,EAAmBnoS,EAAK7M,KAAK7D,OACtE,OAAO,IAAIi8B,EAAEsnQ,cAAc7yR,EAAK7M,KAAM60S,EAAWI,QAGpD,CAED,MAAMC,EAAqBp4S,KAAKw2S,cAActW,QAAQnwR,EAAK7M,MAC3D,GAAIk1S,EAAoB,CACpB,MAAMC,EAAYr4S,KAAK63S,kBAAkBO,EAAoBroS,EAAK7M,KAAK7D,OACvE,OAAO,IAAIi8B,EAAEwmQ,eAAe/xR,EAAK7M,KAAM60S,EAAWM,IAG1D,MAAM,IAAIlvR,EAAImvR,qBAAqBvoS,EAAK7M,KAAK7D,OAEjD+K,uBAAuB1K,EAAM6lS,GAEzB,OAAIA,IAAUliS,OAAOC,oBAIjBwY,MAAMC,QAAQwpR,GACPA,EAAMzsR,SAASpZ,EAAKqG,QAExBrG,EAAKqG,SAAWw/R,GAE3Bn7R,0BAA0B2F,GACtB,MAAM7M,EAAO6M,EAAKmD,WAClB,OAAO,IAAIooB,EAAEsmQ,UAAU1+R,EAAM6M,GAEjC3F,0BAA0B2F,GACtB,OAAO,IAAIurB,EAAEomQ,UAAU3xR,IAG/B3Q,EAAQihS,mBAAqBA,+BCrI7BnhS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQq+R,qBAAkB,EAC1B,MAAM8a,EAAY,EAAQ,MACpBrnS,EAAoB,EAAQ,MAC5BoqB,EAAI,EAAQ,OACZgiQ,EAAW,EAAQ,OACnBn0Q,EAAM,EAAQ,OACdwS,EAAI,EAAQ,MACZ4hQ,EAAiB,EAAQ,OA6L/Bn+R,EAAQq+R,gBA5LR,MACIh+R,YAAYi+R,EAAmB8a,GAC3Bx4S,KAAK09R,kBAAoBA,EACzB19R,KAAKw4S,uBAAyBA,EAQlCjW,uBAAuBnxR,GACnB,OAAOpR,KAAK02S,cAAc,CACtBtlS,KAAAA,EACAjL,KAAM+K,EAAkBy+H,QAAQttH,MAAMmyH,WACtCxhI,eAAgB9B,EAAkBy+H,QAAQK,gBAAgBiF,OAGlEyhK,cAActlS,GACV,IAAKA,EAAKA,KACN,MAAM,IAAI+X,EAAIstR,kBAAkBrlS,GAEpC,OAAQA,EAAKA,KAAKtK,UACd,IAAK,WACD,OAAO,IAAIw0B,EAAE84F,SAASmkL,EAAU9xS,aAAa2K,EAAKA,OACtD,IAAK,UACD,OAAOpR,KAAK+9R,iBAAiB3sR,EAAKA,MACtC,IAAK,YACD,OAAO,IAAIkqB,EAAEy4F,UAAU3iH,EAAKA,KAAK/R,OACrC,IAAK,YACD,OAAO,IAAIi8B,EAAE83F,UAAUhiH,EAAKA,KAAK/R,OACrC,QACI,MAAM,IAAI8pB,EAAIsvR,gBAAgBrnS,IAG1CsnS,uBAAuB3T,GAGnB,IAAKA,EAAIpwK,SACL,OAAOowK,EAAI/8R,SACP,IAAIszB,EAAE+nQ,kBAAkB0B,EAAI1lS,MAAO0lS,EAAI/8R,UACvC,IAAIszB,EAAE8nQ,cAAc2B,EAAI1lS,OAEhC,MAAM6+R,EAAW6G,EAAIpwK,SAASt1H,MAC9B,OAAQ6+R,GACJ,KAAK,KACL,UAAKp8R,EACL,IAAK,GACD,OAAOijS,EAAI/8R,SACP,IAAIszB,EAAE+nQ,kBAAkB0B,EAAI1lS,MAAO0lS,EAAI/8R,UACvC,IAAIszB,EAAE8nQ,cAAc2B,EAAI1lS,OAEhC,KAAKi+R,EAAS8G,QAAQ0H,YACtB,KAAKxO,EAAS8G,QAAQuU,sBACtB,KAAKrb,EAAS8G,QAAQwU,UACtB,KAAKtb,EAAS8G,QAAQyU,aACtB,KAAKvb,EAAS8G,QAAQ0U,aACtB,KAAKxb,EAAS8G,QAAQ2U,SACtB,KAAKzb,EAAS8G,QAAQ4U,WACtB,KAAK1b,EAAS8G,QAAQ6U,OACtB,KAAK3b,EAAS8G,QAAQ8U,WACtB,KAAK5b,EAAS8G,QAAQxvK,WAAY,OAAO,IAAIt5F,EAAE8nQ,cAAc2B,EAAI1lS,MAAO6+R,GACxE,KAAKZ,EAAS8G,QAAQO,gBAAiB,OAAO,IAAIrpQ,EAAE+nQ,kBAAkB0B,EAAI1lS,MAAO0lS,EAAI/8R,UACrF,KAAKs1R,EAAS8G,QAAQ+U,oBACtB,KAAK7b,EAAS8G,QAAQM,cAAe,CACjC,MAAM0U,EAAU,IAAI5wS,KAAKu8R,EAAI1lS,OAC7B,OAAIgE,OAAOu9D,MAAMw4O,EAAQjmR,WACd,IAAImI,EAAE6nQ,uBAAkBrhS,EAAWo8R,EAAUl+R,KAAK09R,kBAAmBqH,EAAI1lS,OAE7E,IAAIi8B,EAAEgoQ,gBAAgB,IAAI96R,KAAKu8R,EAAI1lS,OAAQ0lS,EAAI1lS,MAAO6+R,GAEjE,KAAKZ,EAAS8G,QAAQlyI,YAClB,MAAkB,SAAd6yI,EAAI1lS,OAAkC,UAAd0lS,EAAI1lS,OAAmC,MAAd0lS,EAAI1lS,OAA+B,MAAd0lS,EAAI1lS,MACnE,IAAIi8B,EAAE6nQ,uBAAkBrhS,EAAWo8R,EAAUl+R,KAAK09R,kBAAmBqH,EAAI1lS,OAE7E,IAAIi8B,EAAEgnQ,eAA6B,SAAdyC,EAAI1lS,OAAkC,MAAd0lS,EAAI1lS,MAAe0lS,EAAI1lS,MAAO6+R,GAEtF,KAAKZ,EAAS8G,QAAQpyI,YAAa,CAC/B,MAAMqnJ,EAAa19Q,EAAE+uQ,gBAAgB3F,EAAI1lS,OACzC,YAAmByC,IAAfu3S,EACO,IAAI/9Q,EAAE6nQ,uBAAkBrhS,EAAWo8R,EAAUl+R,KAAK09R,kBAAmBqH,EAAI1lS,OAE7E,IAAIi8B,EAAEmoQ,eAAe4V,EAAYnb,EAAU6G,EAAI1lS,OAE1D,KAAKi+R,EAAS8G,QAAQC,UAAW,CAC7B,MAAMiV,EAAW39Q,EAAE2uQ,cAAcvF,EAAI1lS,OACrC,YAAiByC,IAAbw3S,EACO,IAAIh+Q,EAAE6nQ,uBAAkBrhS,EAAWo8R,EAAUl+R,KAAK09R,kBAAmBqH,EAAI1lS,OAE7E,IAAIi8B,EAAEkoQ,aAAa8V,EAAUpb,EAAU6G,EAAI1lS,OAEtD,KAAKi+R,EAAS8G,QAAQnyI,WAAY,CAC9B,MAAMsnJ,EAAY59Q,EAAE2uQ,cAAcvF,EAAI1lS,OACtC,YAAkByC,IAAdy3S,EACO,IAAIj+Q,EAAE6nQ,uBAAkBrhS,EAAWo8R,EAAUl+R,KAAK09R,kBAAmBqH,EAAI1lS,OAE7E,IAAIi8B,EAAEioQ,cAAcgW,EAAWrb,EAAU6G,EAAI1lS,OAExD,KAAKi+R,EAAS8G,QAAQoV,yBACtB,KAAKlc,EAAS8G,QAAQqV,qBACtB,KAAKnc,EAAS8G,QAAQsV,SACtB,KAAKpc,EAAS8G,QAAQuV,QACtB,KAAKrc,EAAS8G,QAAQwV,UACtB,KAAKtc,EAAS8G,QAAQyV,SACtB,KAAKvc,EAAS8G,QAAQ0V,yBACtB,KAAKxc,EAAS8G,QAAQ2V,qBACtB,KAAKzc,EAAS8G,QAAQ4V,kBACtB,KAAK1c,EAAS8G,QAAQ6V,iBACtB,KAAK3c,EAAS8G,QAAQ8V,mBACtB,KAAK5c,EAAS8G,QAAQ+V,kBACtB,KAAK7c,EAAS8G,QAAQryI,YAAa,CAC/B,MAAMpgC,EAASh2F,EAAE+uQ,gBAAgB3F,EAAI1lS,OACrC,YAAeyC,IAAX6vH,EACO,IAAIr2F,EAAE6nQ,uBAAkBrhS,EAAWo8R,EAAUl+R,KAAK09R,kBAAmBqH,EAAI1lS,OAE7E,IAAIi8B,EAAE8hQ,eAAezrK,EAAQusK,EAAU6G,EAAI1lS,OAEtD,QAAS,OAAO,IAAIi8B,EAAE64F,QAAQ4wK,EAAI1lS,MAAO6+R,EAAU6G,EAAI1lS,QAG/D0+R,iBAAiBgH,GACb,OAAO/kS,KAAKw4S,uBAAyBx4S,KAAKo6S,6BAA6BrV,GAAO/kS,KAAK04S,uBAAuB3T,GAK9GqV,6BAA6BrV,GAIzB,IAAKA,EAAIpwK,UAAY,CAAC,UAAM7yH,EAAW,IAAIgX,SAASisR,EAAIpwK,SAASt1H,OAC7D,OAAO0lS,EAAI/8R,SACP,IAAIszB,EAAE+nQ,kBAAkB0B,EAAI1lS,MAAO0lS,EAAI/8R,UACvC,IAAIszB,EAAE8nQ,cAAc2B,EAAI1lS,OAEhC,MAAM6+R,EAAW6G,EAAIpwK,SAASt1H,MACxBg7S,GAAgB,EAAI9c,EAAe+c,kBAAkBpc,EAAUl+R,KAAK09R,mBAC1E,GAAIJ,EAAS8G,QAAQxvK,cAAcylL,EAC/B,OAAO,IAAI/+Q,EAAE8nQ,cAAc2B,EAAI1lS,MAAO6+R,GAE1C,GAAIZ,EAAS8G,QAAQO,mBAAmB0V,EACpC,OAAO,IAAI/+Q,EAAE+nQ,kBAAkB0B,EAAI1lS,MAAO0lS,EAAI/8R,UAElD,GAAIs1R,EAAS8G,QAAQM,iBAAiB2V,EAAe,CAOjD,MAAMjB,EAAU,IAAI5wS,KAAKu8R,EAAI1lS,OAC7B,OAAIgE,OAAOu9D,MAAMw4O,EAAQjmR,WACd,IAAImI,EAAE6nQ,uBAAkBrhS,EAAWo8R,EAAUl+R,KAAK09R,kBAAmBqH,EAAI1lS,OAE7E,IAAIi8B,EAAEgoQ,gBAAgB,IAAI96R,KAAKu8R,EAAI1lS,OAAQ0lS,EAAI1lS,MAAO6+R,GAEjE,GAAIZ,EAAS8G,QAAQlyI,eAAemoJ,EAChC,MAAkB,SAAdtV,EAAI1lS,OAAkC,UAAd0lS,EAAI1lS,OAAmC,MAAd0lS,EAAI1lS,OAA+B,MAAd0lS,EAAI1lS,MACnE,IAAIi8B,EAAE6nQ,uBAAkBrhS,EAAWo8R,EAAUl+R,KAAK09R,kBAAmBqH,EAAI1lS,OAE7E,IAAIi8B,EAAEgnQ,eAA6B,SAAdyC,EAAI1lS,OAAkC,MAAd0lS,EAAI1lS,MAAe0lS,EAAI1lS,OAE/E,GAAIi+R,EAAS8G,QAAQpyI,eAAeqoJ,EAAe,CAC/C,MAAM1oL,EAASh2F,EAAE+uQ,gBAAgB3F,EAAI1lS,OACrC,YAAeyC,IAAX6vH,EACO,IAAIr2F,EAAE6nQ,uBAAkBrhS,EAAWo8R,EAAUl+R,KAAK09R,kBAAmBqH,EAAI1lS,OAEhFi+R,EAAS8G,QAAQryI,eAAesoJ,EACzB,IAAI/+Q,EAAE8hQ,eAAezrK,EAAQusK,EAAU6G,EAAI1lS,OAG/C,IAAIi8B,EAAEmoQ,eAAe9xK,EAAQusK,EAAU6G,EAAI1lS,OAEtD,MAAMi+O,EAAUggD,EAAS8G,QAAQC,aAAagW,EACxCE,EAAWjd,EAAS8G,QAAQnyI,cAAcooJ,EAChD,GAAI/8D,GAAWi9D,EAAU,CACrB,MAAMhB,EAAY59Q,EAAE2uQ,cAAcvF,EAAI1lS,OACtC,YAAkByC,IAAdy3S,EACO,IAAIj+Q,EAAE6nQ,uBAAkBrhS,EAAWo8R,EAAUl+R,KAAK09R,kBAAmBqH,EAAI1lS,OAEhFi+O,EACO,IAAIhiN,EAAEkoQ,aAAa+V,EAAWrb,EAAU6G,EAAI1lS,OAEhD,IAAIi8B,EAAEioQ,cAAcgW,EAAWrb,EAAU6G,EAAI1lS,OAExD,OAAO,IAAIi8B,EAAE64F,QAAQ4wK,EAAI1lS,MAAO6+R,EAAU6G,EAAI1lS,qCChMtD,IAaI+kS,EA2CAxH,EAmFA0E,EAsBAkZ,EAhKO3c,EAHX3+R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ44S,eAAiB54S,EAAQq7S,aAAer7S,EAAQo7S,YAAcp7S,EAAQi4S,UAAYj4S,EAAQ43S,iBAAmB53S,EAAQs7S,iBAAmBt7S,EAAQkiS,gBAAkBliS,EAAQw9R,gBAAkBx9R,EAAQglS,QAAUhlS,EAAQy+R,eAAY,GAE/NA,EAWIz+R,EAAQy+R,YAAcz+R,EAAQy+R,UAAY,KAT3B,eAAI,iBAO9BA,EAA2B,gBAAI,kBAC/BA,EAA8B,mBAAI,qBAGtC,SAAWuG,GACPA,EAAqB,YAAI,0CACzBA,EAAoB,WAAI,0CACxBA,EAAyB,gBAAI,wDAC7BA,EAAqB,YAAI,2CACzBA,EAAuB,cAAI,4CAC3BA,EAA6B,oBAAI,iDACjCA,EAAkB,SAAI,wCAEtBA,EAAqB,YAAI,2CACzBA,EAAmB,UAAI,yCACvBA,EAAoB,WAAI,0CAExBA,EAAqB,YAAI,2CACzBA,EAAkC,yBAAI,sDACtCA,EAA8B,qBAAI,mDAClCA,EAAkB,SAAI,wCACtBA,EAAiB,QAAI,uCACrBA,EAAmB,UAAI,yCACvBA,EAAkB,SAAI,wCACtBA,EAAkC,yBAAI,sDACtCA,EAA8B,qBAAI,mDAClCA,EAA2B,kBAAI,gDAC/BA,EAA0B,iBAAI,+CAC9BA,EAA4B,mBAAI,iDAChCA,EAA2B,kBAAI,gDAE/BA,EAA+B,sBAAI,oDACnCA,EAAmB,UAAI,yCACvBA,EAAsB,aAAI,4CAC1BA,EAAsB,aAAI,2CAC1BA,EAAkB,SAAI,wCACtBA,EAAqB,YAAI,0CACzBA,EAAoB,WAAI,0CACxBA,EAAgB,OAAI,sCACpBA,EAAoB,WAAI,yCAExBA,EAAsB,aAAI,4CAC1BA,EAAiC,wBAAI,qDACrCA,EAA8B,qBAAI,mDAvCtC,CAwCGA,EAAUhlS,EAAQglS,UAAYhlS,EAAQglS,QAAU,KAGnD,SAAWxH,GAGPA,EAAqB,IAAI,IACzBA,EAAwB,OAAI,SAC5BA,EAAuB,MAAI,QAG3BA,EAAuB,MAAI,IAC3BA,EAA2B,UAAI,KAC/BA,EAAoB,GAAI,IACxBA,EAAoB,GAAI,IACxBA,EAAqB,IAAI,KACzBA,EAAqB,IAAI,KACzBA,EAAgC,eAAI,IACpCA,EAA0B,SAAI,IAC9BA,EAA0B,SAAI,IAC9BA,EAA6B,YAAI,IAMjCA,EAAwB,OAAI,QAC5BA,EAA0B,SAAI,UAC9BA,EAA4B,WAAI,YAChCA,EAA4B,WAAI,YAChCA,EAAqB,IAAI,MACzBA,EAAsB,KAAI,OAC1BA,EAA0B,SAAI,WAC9BA,EAAqB,IAAI,MACzBA,EAAqB,IAAI,MAEzBA,EAAuB,MAAI,QAC3BA,EAAyB,QAAI,UAC7BA,EAAsB,KAAI,OAC1BA,EAAyB,QAAI,UAG7BA,EAAwB,OAAI,SAC5BA,EAAwB,OAAI,SAC5BA,EAAuB,MAAI,QAC3BA,EAAuB,MAAI,QAC3BA,EAA2B,UAAI,YAC/BA,EAAyB,QAAI,UAC7BA,EAA0B,SAAI,WAC9BA,EAA2B,UAAI,YAC/BA,EAA0B,SAAI,WAC9BA,EAAgC,eAAI,iBAEpCA,EAA8B,aAAI,cAClCA,EAAuB,MAAI,QAC3BA,EAAyB,QAAI,UAG7BA,EAAqB,IAAI,MACzBA,EAAuB,MAAI,QAC3BA,EAAsB,KAAI,OAC1BA,EAAuB,MAAI,QAC3BA,EAAsB,KAAI,OAG1BA,EAAqB,IAAI,MACzBA,EAAsB,KAAI,OAC1BA,EAAuB,MAAI,QAC3BA,EAAqB,IAAI,MACzBA,EAAuB,MAAI,QAC3BA,EAAyB,QAAI,UAC7BA,EAAyB,QAAI,UAC7BA,EAA0B,SAAI,WAC9BA,EAAoB,GAAI,KAGxBA,EAAqB,IAAI,MACzBA,EAAsB,KAAI,OAC1BA,EAAwB,OAAI,SAC5BA,EAAwB,OAAI,SAC5BA,EAAwB,OAAI,SA7EhC,CAiFGA,EAAkBx9R,EAAQw9R,kBAAoBx9R,EAAQw9R,gBAAkB,KAE3E,SAAW0E,GAGPA,EAAuB,MAAI,QAC3BA,EAAoB,GAAI,KACxBA,EAA0B,SAAI,WAE9BA,EAA4B,WAAI,KAChCA,EAA6B,YAAI,KAEjCA,EAA2B,UAAI,WAC/BA,EAAoB,GAAI,KACxBA,EAAwB,OAAI,QAE5BA,EAAwB,OAAI,SAE5BA,EAAuB,MAAI,QAhB/B,CAiBGA,EAAkBliS,EAAQkiS,kBAAoBliS,EAAQkiS,gBAAkB,KAC3EliS,EAAQs7S,iBAAmB,IAAIltS,IAAItO,OAAO6N,OAAO6vR,IACjDx9R,EAAQ43S,iBAAmB,IAAIxpS,IAAItO,OAAO6N,OAAOu0R,IACjDliS,EAAQi4S,UAAY,IAAI7pS,IAAI,IAAIpO,EAAQs7S,oBAAqBt7S,EAAQ43S,mBAErE,SAAWwD,GACPA,EAAmB,MAAI,QACvBA,EAAiB,IAAI,MACrBA,EAAiB,IAAI,MACrBA,EAAiB,IAAI,MACrBA,EAAiB,IAAI,MACrBA,EAA0B,aAAI,eAC9BA,EAAoB,OAAI,SAP5B,CAQGA,EAAcp7S,EAAQo7S,cAAgBp7S,EAAQo7S,YAAc,KAC/Dp7S,EAAQq7S,aAAe,IAAIjtS,IAAItO,OAAO6N,OAAOytS,IAC7Cp7S,EAAQ44S,eAAiB,IAAIxqS,IAAI,CAC7B42R,EAAQxvK,WACRwvK,EAAQC,UACRD,EAAQnyI,WACRmyI,EAAQpyI,YACRoyI,EAAQryI,YACRqyI,EAAQM,cACRN,EAAQ2G,SACR3G,EAAQlyI,0CCtLZhzJ,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQijS,gBAAkBjjS,EAAQ2jS,aAAe3jS,EAAQw4S,uBAAyBx4S,EAAQk5S,qBAAuBl5S,EAAQk4S,gBAAkBl4S,EAAQq5S,gBAAkBr5S,EAAQ4iS,sBAAwB5iS,EAAQq3S,kBAAoBr3S,EAAQg4S,aAAeh4S,EAAQu7S,mBAAqBv7S,EAAQ6nS,gBAAkB7nS,EAAQqjS,oBAAsBrjS,EAAQwwS,8BAAgCxwS,EAAQyyS,oBAAsBzyS,EAAQmrS,UAAYnrS,EAAQwkS,qBAAuBxkS,EAAQ40S,QAAU50S,EAAQm0S,cAAgBn0S,EAAQ2uS,kBAAoB3uS,EAAQ0kS,iBAAmB1kS,EAAQujS,qBAAuBvjS,EAAQ+pS,mBAAqB/pS,EAAQwlL,kBAAoBxlL,EAAQw8R,qBAAkB,EAezpB,MAAMA,UAAwBp7R,OAE9BpB,EAAQw8R,gBAAkBA,EAU1Bx8R,EAAQwlL,kBAHR,SAA2B74K,GACvB,OAAOA,aAAiB6vR,GAc5Bx8R,EAAQ+pS,mBANR,cAAiCvN,EAC7Bn8R,YAAYyrF,GACRvrF,MAAM,yBAAyBi7S,EAAG1vN,OAClClrF,KAAKkrF,IAAMA,IAcnB9rF,EAAQujS,qBAPR,cAAmC/G,EAC/Bn8R,YAAY8G,EAAUkF,GAClB9L,MAAM,qBAAqBi7S,EAAGr0S,OAC9BvG,KAAKuG,SAAWA,EAChBvG,KAAKyL,SAAWA,IAgBxBrM,EAAQ0kS,iBANR,cAA+BlI,EAC3Bn8R,YAAYyrF,GACRvrF,MAAM,8BAA8Bi7S,EAAG1vN,OACvClrF,KAAKkrF,IAAMA,IAenB9rF,EAAQ2uS,kBANR,cAAgCnS,EAC5Bn8R,YAAYC,GACRC,MAAM,yDACNK,KAAKN,KAAOA,IAapBN,EAAQm0S,cANR,cAA4B3X,EACxBn8R,YAAY0yF,GACRxyF,MAAM,uCACNK,KAAKmyF,OAASA,IAetB/yF,EAAQ40S,QARR,cAAsBpY,EAClBn8R,YAAY0yF,GACRxyF,MAAM,sDAENwyF,EAAOnsF,KAAIklB,GAAO,IAAIA,EAAIrd,iBAAgB2S,KAAK,WAC/CxgB,KAAKmyF,OAASA,IActB/yF,EAAQwkS,qBAPR,cAAmChI,EAC/Bn8R,YAAYC,EAAMiS,GACdhS,MAAM,2CAA2Ci7S,EAAGjpS,aAAcipS,EAAGl7S,MACrEM,KAAKN,KAAOA,EACZM,KAAK2R,GAAKA,IAalBvS,EAAQmrS,UANR,cAAwB3O,EACpBn8R,YAAYyrF,EAAK2vN,GACbl7S,MAAM,kBAAkBi7S,EAAG1vN,WAAa0vN,EAAGC,OAC3C76S,KAAKkrF,IAAMA,IAUnB9rF,EAAQyyS,oBANR,cAAkCjW,EAC9Bn8R,YAAYq7S,GACRn7S,MAAM,oBAAoBm7S,2BAC1B96S,KAAK86S,WAAaA,IAW1B17S,EAAQwwS,8BAPR,cAA4ChU,EACxCn8R,YAAY4/H,EAAMC,GACd3/H,MAAM,gDAAgDi7S,EAAGv7K,YAAeu7K,EAAGt7K,OAC3Et/H,KAAKq/H,KAAOA,EACZr/H,KAAKs/H,KAAOA,IASpBlgI,EAAQqjS,oBALR,cAAkC7G,EAC9Bn8R,cACIE,MAAM,gCAUd,MAAMsnS,UAAwBzmS,MAC1Bf,YAAYiX,EAAS+a,GACjB9xB,MAAM,qBAAqB+W,MAC3B1W,KAAKyxB,QAAUA,GAGvBryB,EAAQ6nS,gBAAkBA,EAI1B,MAAM0T,UAA2Bn6S,MAC7Bf,YAAYs7S,GACRp7S,MAAM,0BAA0Bo7S,QAGxC37S,EAAQu7S,mBAAqBA,EAC7B,MAAMvD,UAAqB52S,MACvBf,YAAYC,EAAMiS,GACdhS,MAAM,gEAAgEi7S,EAAGjpS,QACzE3R,KAAKN,KAAOA,EACZM,KAAK2R,GAAKA,GAGlBvS,EAAQg4S,aAAeA,EACvB,MAAMX,UAA0Bj2S,MAC5Bf,YAAYsQ,GACRpQ,MAAM,8BAA8Bi7S,EAAG7qS,QAG/C3Q,EAAQq3S,kBAAoBA,EAC5B,MAAMzU,UAA8BxhS,MAChCf,YAAYsQ,GACRpQ,MAAM,kDAAkDi7S,EAAG7qS,OAC3D/P,KAAK+P,KAAOA,GAGpB3Q,EAAQ4iS,sBAAwBA,EAChC,MAAMyW,UAAwBj4S,MAC1Bf,YAAY2R,GACRzR,MAAM,+BAA+Bi7S,EAAGxpS,OACxCpR,KAAKoR,KAAOA,GAGpBhS,EAAQq5S,gBAAkBA,EAC1B,MAAMnB,UAAwB92S,MAC1Bf,YAAYyD,GACRvD,MAAM,sBAAsBi7S,EAAG13S,OAGvC9D,EAAQk4S,gBAAkBA,EAC1B,MAAMgB,UAA6B93S,MAC/Bf,YAAYyD,GACRvD,MAAM,4BAA4Bi7S,EAAG13S,QAG7C9D,EAAQk5S,qBAAuBA,EAC/B,MAAMV,UAA+Bp3S,MACjCf,YAAYyD,EAAM83S,GACVA,aAAyBx6S,MACzBb,MAAM,mBAAmBuD,MAAS83S,EAActkS,UAAUskS,EAAcj0N,MAAQ,KAAKi0N,EAAcj0N,QAAU,MAG7GpnF,MAAM,mBAAmBuD,MAIrC9D,EAAQw4S,uBAAyBA,EACjC,MAAM7U,UAAqBviS,MACvBf,YAAYyD,GACRvD,MAAM,wBAAwBi7S,EAAG13S,8CAGzC9D,EAAQ2jS,aAAeA,EACvB,MAAMV,UAAwB7hS,MAC1Bf,cACIE,MAAM,kDAId,SAASi7S,EAAGh0S,GACR,OAAOwF,KAAKC,UAAUzF,GAF1BxH,EAAQijS,gBAAkBA,gCCjO1BnjS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQg4I,MAAQh4I,EAAQqpL,gBAAa,EACrC,MAAMosB,EAAW,EAAQ,OACnBwoF,EAAoB,EAAQ,MAiBlC,SAASjmJ,EAAM6jK,EAAQC,EAAQ7yH,GAC3B,OAAI4yH,EAAO9c,aAAe+c,EAAO/c,WACtB,EAEJ8c,EAAO9c,WAAa+c,EAAO/c,aAAe91G,EAAc,GAAK,EANxEjpL,EAAQqpL,WAbR,SAAoB0yH,EAAMC,EAAM/yH,EAAagzH,EAAuB5a,EAAW+X,GAC3E,MAAM3T,EAAgB,CAClBnE,WAAY2a,GAAyB,KAAO,QAC5CpuM,MAAOwzL,GAAa,IAAI5rF,GAEtB2oF,EAAkB,IAAIH,EAAkBI,gBAAgBoH,EAAe2T,IAA0B,GACvG,OAAI2C,GAA0B,YAAlBA,EAAKr0S,UAA0Bs0S,GAA0B,YAAlBA,EAAKt0S,SAG7CswI,EAFQomJ,EAAgBO,iBAAiBod,GACjC3d,EAAgBO,iBAAiBqd,GACnB/yH,GAE1B,GAUXjpL,EAAQg4I,MAAQA,6BCzBhBl4I,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQyxS,iBAAmBzxS,EAAQwrS,gBAAkBxrS,EAAQsrS,gBAAkBtrS,EAAQkrS,mBAAgB,EAyBvGlrS,EAAQkrS,cAhBR,SAAuBjrS,GACnB,MAAMi8S,EAAOj4S,OAAOhE,GACpB,OAAIgE,OAAOu9D,MAAM06O,GACC,QAAVj8S,EACOgE,OAAOkhE,IAEJ,QAAVllE,EACOgE,OAAOC,kBAEJ,SAAVjE,EACOgE,OAAOy/M,uBAElB,EAEGw4F,GAeXl8S,EAAQsrS,gBAJR,SAAyBrrS,GACrB,MAAMi8S,EAAOj4S,OAAOhE,GACpB,OAAOgE,OAAOu9D,MAAM06O,QAAQx5S,EAAYw5S,GAe5Cl8S,EAAQwrS,gBAJR,SAAyBvrS,GACrB,MAAMi8S,EAAOj4S,OAAO2e,SAAS3iB,EAAO,IACpC,OAAOgE,OAAOu9D,MAAM06O,QAAQx5S,EAAYw5S,GAuC5Cl8S,EAAQyxS,iBAvBR,SAA0BxxS,GACtB,MAAMk8S,EAAOl8S,EAAMyY,QAAQ,KACrBob,EAAOqoR,GAAQ,EAAIl8S,EAAMgkB,MAAM,EAAG9D,KAAK2vB,IAAI,EAAGqsQ,IAASl8S,GACtD0xS,EAAME,EAAOn9Q,GAAOZ,EAAKpS,MAAM,KACtC,IAAIswR,EAAQ,GACRE,EAAU,GACVE,EAAU,GACVE,EAAW,GACf,GAAI6J,GAAQ,EAAG,CACX,MAAMC,EAAkBn8S,EAAMgkB,MAAMk4R,EAAO,IACpCn4S,EAAMq4S,GAAoBD,EAAgB16R,MAAM,WACtDswR,EAAOE,EAASE,GAAWpuS,EAAK0d,MAAM,KACvC,MAAM46R,EAAiB,aAAaloR,KAAKgoR,GACzC9J,EAAWgK,EAAiBA,EAAe,GAAK,QAGhDtK,EAAQ,KACRE,EAAU,KACVE,EAAU,KACVE,EAAW,GAEf,MAAO,CAAEX,KAAAA,EAAME,MAAAA,EAAOn9Q,IAAAA,EAAKs9Q,MAAAA,EAAOE,QAAAA,EAASE,QAAAA,EAASE,SAAAA,kCCxFxDxyS,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQw+R,YAAcx+R,EAAQk7S,iBAAmBl7S,EAAQgqS,kBAAoBhqS,EAAQksS,cAAgBlsS,EAAQwsS,eAAiBxsS,EAAQ+sS,mBAAqB/sS,EAAQu8S,YAAcv8S,EAAQw8S,eAAiBx8S,EAAQy8S,mBAAqBz8S,EAAQktS,cAAgBltS,EAAQitS,mBAAqBjtS,EAAQ08S,oBAAsB18S,EAAQ8kS,oBAAiB,EACnV,MAAM+B,EAAgB,EAAQ,OACxB3I,EAAW,EAAQ,OA0IzB,SAASgP,EAAcnmS,EAAM0+R,GACzB,MAAM50Q,EAAS40Q,EAAc53L,MAAM5qG,IAAI8D,GACvC,GAAI8pB,EACA,OAAOA,EAEX,MAAM5wB,EAAQwlS,EAAcnE,WAAWv6R,GACvC,GAAc,SAAV9G,EAAkB,CAClB,MAAM6mB,EAAMhnB,OAAOuC,OAAO,MAI1B,OAHAykB,EAAI61R,QAAU,EACd71R,EAAI/f,GAAQ,EACZ0+R,EAAc53L,MAAM1nG,IAAIY,EAAM+f,GACvBA,EAEX,IAAI81R,EACJ,MAAMC,EAAa9P,EAAmB9sS,GAUtC,OARI28S,EADAC,EACe/8S,OAAO4W,OAAO,GAAI1W,EAAQitS,mBAAmB4P,IAG7C/8S,OAAO4W,OAAO,GAAIw2R,EAAcjtS,EAAOwlS,IAE1DmX,EAAaD,UACbC,EAAa71S,GAAQ61S,EAAaD,QAClClX,EAAc53L,MAAM1nG,IAAIY,EAAM61S,GACvBA,EAIX,SAASH,IACL,MAAM31R,EAAMhnB,OAAOuC,OAAO,MAC1B,IAAK,MAAOisI,EAAMruI,KAAUH,OAAO+B,QAAQ7B,EAAQ08S,qBAAsB,CACrE,MAAM36S,EAAMusI,EACRxnH,EAAI/kB,IAGR+6S,EAA6B/6S,EAAK9B,EAAO6mB,GAE7C9mB,EAAQitS,mBAAqBnmR,EAIjC,SAASg2R,EAA6B/6S,EAAK9B,EAAO6mB,GAC9C,GAAc,SAAV7mB,QAA8ByC,IAAVzC,EAAqB,CACzC,MAAM88S,EAAUj9S,OAAOuC,OAAO,MAI9B,OAHA06S,EAAQJ,QAAU,EAClBI,EAAQh7S,GAAO,OACf+kB,EAAI/kB,GAAOg7S,GAGVj2R,EAAI7mB,IACL68S,EAA6B78S,EAAOD,EAAQ08S,oBAAoBz8S,GAAQ6mB,GAE5EA,EAAI/kB,GAAOjC,OAAO4W,OAAO5W,OAAO4W,OAAO,GAAIoQ,EAAI7mB,IAAS,CAAE,CAAC8B,GAAM+kB,EAAI7mB,GAAO08S,QAAU,EAAGA,QAAS71R,EAAI7mB,GAAO08S,QAAU,IAgB3H,SAAS5P,EAAmBhmS,GACxB,GAAIA,KAAQ/G,EAAQitS,mBAChB,OAAOlmS,EAkCf,SAASm0S,EAAiB8B,EAAU1e,GAChC,MAAMwO,EAAeC,EAAmBiQ,GACxC,OAAIlQ,EAEO9sS,EAAQitS,mBAAmBH,GAG/BI,EAAc8P,EAAU1e,GA9KnCt+R,EAAQ8kS,eApER,SAAwBU,GAGpB,OAAQA,GACJ,IAAK,OAAQ,MAAO,CAAEviR,MAAO,CAAC,QAAS2nR,KAAM,GAC7C,IAAK,YAAa,MAAO,CAAE3nR,MAAO,CAAC,aAAc2nR,KAAM,GACvD,IAAK,UAAW,MAAO,CAAE3nR,MAAO,CAAC,WAAY2nR,KAAM,GACnD,IAAK,YAAa,MAAO,CAAE3nR,MAAO,CAAC,aAAc2nR,KAAM,GACvD,KAAK1M,EAASO,UAAUiH,mBAAoB,MAAO,CAAEziR,MAAO,CAAC,cAAe2nR,KAAM,GAClF,KAAK,KACL,UAAKloS,EACL,IAAK,GACL,KAAKw7R,EAAS8G,QAAQ0H,YACtB,KAAKxO,EAAS8G,QAAQuU,sBACtB,KAAKrb,EAAS8G,QAAQwU,UACtB,KAAKtb,EAAS8G,QAAQyU,aACtB,KAAKvb,EAAS8G,QAAQ0U,aACtB,KAAKxb,EAAS8G,QAAQ2U,SACtB,KAAKzb,EAAS8G,QAAQ4U,WACtB,KAAK1b,EAAS8G,QAAQ6U,OACtB,KAAK3b,EAAS8G,QAAQ8U,WACtB,KAAK5b,EAAS8G,QAAQxvK,WAAY,MAAO,CAAEvyG,MAAO,CAAC,UAAW2nR,KAAM5qS,EAAQitS,mBAAmB/O,EAAS8G,QAAQxvK,YAAYmnL,QAAU,GACtI,KAAKze,EAAS8G,QAAQO,gBAAiB,MAAO,CAC1CtiR,MAAO,CAAC,cACR2nR,KAAM5qS,EAAQitS,mBAAmB/O,EAAS8G,QAAQO,iBAAiBoX,QAAU,GAEjF,KAAKze,EAAS8G,QAAQ+U,oBACtB,KAAK7b,EAAS8G,QAAQM,cAAe,MAAO,CACxCriR,MAAO,CAAC,YACR2nR,KAAM5qS,EAAQitS,mBAAmB/O,EAAS8G,QAAQM,eAAeqX,QAAU,GAE/E,KAAKze,EAAS8G,QAAQlyI,YAAa,MAAO,CACtC7vI,MAAO,CAAC,WACR2nR,KAAM5qS,EAAQitS,mBAAmB/O,EAAS8G,QAAQlyI,aAAa6pJ,QAAU,GAE7E,KAAKze,EAAS8G,QAAQpyI,YAAa,MAAO,CACtC3vI,MAAO,CAAC,UAAW,WACnB2nR,KAAM5qS,EAAQitS,mBAAmB/O,EAAS8G,QAAQpyI,aAAa+pJ,QAAU,GAE7E,KAAKze,EAAS8G,QAAQC,UAAW,MAAO,CAAEhiR,MAAO,CAAC,SAAU2nR,KAAM5qS,EAAQitS,mBAAmB/O,EAAS8G,QAAQC,WAAW0X,QAAU,GACnI,KAAKze,EAAS8G,QAAQnyI,WAAY,MAAO,CAAE5vI,MAAO,CAAC,UAAW2nR,KAAM5qS,EAAQitS,mBAAmB/O,EAAS8G,QAAQnyI,YAAY8pJ,QAAU,GACtI,KAAKze,EAAS8G,QAAQoV,yBACtB,KAAKlc,EAAS8G,QAAQqV,qBACtB,KAAKnc,EAAS8G,QAAQsV,SACtB,KAAKpc,EAAS8G,QAAQuV,QACtB,KAAKrc,EAAS8G,QAAQwV,UACtB,KAAKtc,EAAS8G,QAAQyV,SACtB,KAAKvc,EAAS8G,QAAQ0V,yBACtB,KAAKxc,EAAS8G,QAAQ2V,qBACtB,KAAKzc,EAAS8G,QAAQ4V,kBACtB,KAAK1c,EAAS8G,QAAQ6V,iBACtB,KAAK3c,EAAS8G,QAAQ8V,mBACtB,KAAK5c,EAAS8G,QAAQ+V,kBACtB,KAAK7c,EAAS8G,QAAQryI,YAAa,MAAO,CACtC1vI,MAAO,CAAC,WACR2nR,KAAM5qS,EAAQitS,mBAAmB/O,EAAS8G,QAAQryI,aAAagqJ,QAAU,GAE7E,KAAKze,EAASO,UAAUwK,gBAAiB,MAAO,CAC5ChmR,MAAO,CAAC,SAAU,cAClB2nR,KAAM5qS,EAAQitS,mBAAmB/O,EAASO,UAAUwK,iBAAiB0T,QAAU,GAEnF,KAAKze,EAASO,UAAUC,eAAgB,MAAO,CAC3Cz7Q,MAAO,CAAC,UAAW,QAAS,UAAW,UACvC2nR,KAAM5qS,EAAQitS,mBAAmB/O,EAASO,UAAUC,gBAAgBie,QAAU,GAElF,QAAS,MAAO,CAAE15R,MAAO,CAAC,SAAU2nR,KAAM,KAalD5qS,EAAQ08S,oBAAsB,CAE1B,CAACxe,EAAS8G,QAAQ+U,qBAAsB7b,EAAS8G,QAAQM,cAEzD,CAACpH,EAAS8G,QAAQ0N,sBAAuBxU,EAAS8G,QAAQiY,aAC1D,CAAC/e,EAAS8G,QAAQkY,yBAA0Bhf,EAAS8G,QAAQiY,aAE7D,CAAC/e,EAAS8G,QAAQO,iBAAkBrH,EAASO,UAAUwK,gBACvD,CAAC/K,EAAS8G,QAAQxvK,YAAa0oK,EAASO,UAAUwK,gBAElD,CAAC/K,EAAS8G,QAAQuU,uBAAwBrb,EAAS8G,QAAQxvK,WAC3D,CAAC0oK,EAAS8G,QAAQwU,WAAYtb,EAAS8G,QAAQuU,sBAC/C,CAACrb,EAAS8G,QAAQyU,cAAevb,EAAS8G,QAAQwU,UAClD,CAACtb,EAAS8G,QAAQ0U,cAAexb,EAAS8G,QAAQwU,UAClD,CAACtb,EAAS8G,QAAQ2U,UAAWzb,EAAS8G,QAAQwU,UAC9C,CAACtb,EAAS8G,QAAQmY,aAAcjf,EAAS8G,QAAQ2U,SACjD,CAACzb,EAAS8G,QAAQ4U,YAAa1b,EAAS8G,QAAQmY,YAChD,CAACjf,EAAS8G,QAAQ6U,QAAS3b,EAAS8G,QAAQmY,YAC5C,CAACjf,EAAS8G,QAAQ8U,YAAa5b,EAAS8G,QAAQmY,YAIhD,CAACjf,EAAS8G,QAAQnyI,YAAaqrI,EAASO,UAAUC,eAClD,CAACR,EAAS8G,QAAQC,WAAY/G,EAASO,UAAUC,eACjD,CAACR,EAAS8G,QAAQpyI,aAAcsrI,EAASO,UAAUC,eAEnD,CAACR,EAAS8G,QAAQryI,aAAcurI,EAAS8G,QAAQpyI,YACjD,CAACsrI,EAAS8G,QAAQoV,0BAA2Blc,EAAS8G,QAAQryI,YAC9D,CAACurI,EAAS8G,QAAQqV,sBAAuBnc,EAAS8G,QAAQoV,yBAC1D,CAAClc,EAAS8G,QAAQsV,UAAWpc,EAAS8G,QAAQryI,YAC9C,CAACurI,EAAS8G,QAAQuV,SAAUrc,EAAS8G,QAAQsV,SAC7C,CAACpc,EAAS8G,QAAQwV,WAAYtc,EAAS8G,QAAQuV,QAC/C,CAACrc,EAAS8G,QAAQyV,UAAWvc,EAAS8G,QAAQwV,UAC9C,CAACtc,EAAS8G,QAAQ0V,0BAA2Bxc,EAAS8G,QAAQryI,YAC9D,CAACurI,EAAS8G,QAAQ2V,sBAAuBzc,EAAS8G,QAAQ0V,yBAC1D,CAACxc,EAAS8G,QAAQ4V,mBAAoB1c,EAAS8G,QAAQ0V,yBACvD,CAACxc,EAAS8G,QAAQ6V,kBAAmB3c,EAAS8G,QAAQ4V,kBACtD,CAAC1c,EAAS8G,QAAQ8V,oBAAqB5c,EAAS8G,QAAQ6V,iBACxD,CAAC3c,EAAS8G,QAAQ+V,mBAAoB7c,EAAS8G,QAAQ8V,mBACvD,CAAC5c,EAAS8G,QAAQM,eAAgB,OAClC,CAACpH,EAAS8G,QAAQlyI,aAAc,OAChC,CAACorI,EAAS8G,QAAQ2G,UAAW,OAC7B,CAACzN,EAAS8G,QAAQiY,cAAe,OACjC,CAAC/e,EAASO,UAAUC,gBAAiB,OACrC,CAACR,EAASO,UAAUwK,iBAAkB,OACtC,CAAC/K,EAASO,UAAUiH,oBAAqB,OACzC,CAACxH,EAAS8G,QAAQ0H,aAAc,QAiCpC1sS,EAAQktS,cAAgBA,EAaxBltS,EAAQy8S,mBAAqBA,EAC7BA,IAcA,WACIz8S,EAAQw8S,eAAiB18S,OAAOuC,OAAO,MACvC,IAAK,MAAMsrF,KAAO7tF,OAAO6N,OAAOuwR,EAASO,WACrCz+R,EAAQw8S,eAAe7uN,IAAO,EAGtCyvN,GAOAp9S,EAAQu8S,YANR,SAAqBx1S,GACjB,GAAIA,KAAQ/G,EAAQw8S,eAChB,OAAOz1S,GAWf/G,EAAQ+sS,mBAAqBA,EAO7B/sS,EAAQwsS,eANR,SAAwBzlS,GACpB,GAAIgmS,EAAmBhmS,IAAkB,SAATA,EAC5B,OAAOA,GAWf/G,EAAQksS,cANR,SAAuBnlS,GACnB,GAAa,SAATA,IAAmB,EAAI8/R,EAAchD,YAAY98R,GACjD,OAAOA,GAYf/G,EAAQgqS,kBAJR,SAA2BgT,EAAUvS,GACjC,MAAoB,SAAbuS,GACFh9S,EAAQitS,mBAAmB+P,SAAoEt6S,IAAvD1C,EAAQitS,mBAAmB+P,GAAUvS,IAmBtFzqS,EAAQk7S,iBAAmBA,EAe3Bl7S,EAAQw+R,YANR,SAAqBwe,EAAUvS,EAAcnM,GACzC,MAAiB,SAAb0e,QAGmEt6S,IAAhEw4S,EAAiB8B,EAAU1e,GAAmBmM,iCCzQzD,IAAItjR,yHACJ,IAAIm8I,EAAQ,IAAI9jJ,WAAW,IACZ,SAAS+jJ,IAEtB,IAAKp8I,KAGHA,EAAoC,oBAAX7E,QAA0BA,OAAO6E,iBAAmB7E,OAAO6E,gBAAgBC,KAAK9E,SAA+B,oBAAbgkB,UAAgE,mBAA7BA,SAASnf,iBAAkCmf,SAASnf,gBAAgBC,KAAKkf,WAGrO,MAAM,IAAIllC,MAAM,4GAIpB,OAAO+lB,EAAgBm8I,GCjBzB,8HCMA,EAJA,SAAkBE,GAChB,MAAuB,iBAATA,GAAqB,OAAWA,ICKhD,IAFA,IAAIC,EAAY,GAEPjqJ,EAAI,EAAGA,EAAI,MAAOA,EACzBiqJ,EAAUp9J,MAAMmT,EAAI,KAAO/K,SAAS,IAAIoU,OAAO,IAoBjD,QAjBA,SAAmB/B,GACjB,IAAIf,EAASpC,UAAUhX,OAAS,QAAsBjE,IAAjBib,UAAU,GAAmBA,UAAU,GAAK,EAG7E6lJ,GAAQC,EAAU3iJ,EAAIf,EAAS,IAAM0jJ,EAAU3iJ,EAAIf,EAAS,IAAM0jJ,EAAU3iJ,EAAIf,EAAS,IAAM0jJ,EAAU3iJ,EAAIf,EAAS,IAAM,IAAM0jJ,EAAU3iJ,EAAIf,EAAS,IAAM0jJ,EAAU3iJ,EAAIf,EAAS,IAAM,IAAM0jJ,EAAU3iJ,EAAIf,EAAS,IAAM0jJ,EAAU3iJ,EAAIf,EAAS,IAAM,IAAM0jJ,EAAU3iJ,EAAIf,EAAS,IAAM0jJ,EAAU3iJ,EAAIf,EAAS,IAAM,IAAM0jJ,EAAU3iJ,EAAIf,EAAS,KAAO0jJ,EAAU3iJ,EAAIf,EAAS,KAAO0jJ,EAAU3iJ,EAAIf,EAAS,KAAO0jJ,EAAU3iJ,EAAIf,EAAS,KAAO0jJ,EAAU3iJ,EAAIf,EAAS,KAAO0jJ,EAAU3iJ,EAAIf,EAAS,MAAMuU,cAMzf,IAAK,EAASkvI,GACZ,MAAM1hJ,UAAU,+BAGlB,OAAO0hJ,GCpBT,IAAIE,EAEAC,EAGAC,EAAa,EACbC,EAAa,EAkFjB,QAhFA,SAAY5xJ,EAASsN,EAAKQ,GACxB,IAAIvG,EAAI+F,GAAOQ,GAAU,EACrBsE,EAAI9E,GAAO,IAAI7C,MAAM,IAErB7W,GADJoM,EAAUA,GAAW,IACFpM,MAAQ69J,EACvBI,OAAgCphK,IAArBuP,EAAQ6xJ,SAAyB7xJ,EAAQ6xJ,SAAWH,EAInE,GAAY,MAAR99J,GAA4B,MAAZi+J,EAAkB,CACpC,IAAIC,EAAY9xJ,EAAQgQ,SAAWhQ,EAAQsxJ,KAAOA,KAEtC,MAAR19J,IAEFA,EAAO69J,EAAU,CAAgB,EAAfK,EAAU,GAAWA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,KAG3F,MAAZD,IAEFA,EAAWH,EAAiD,OAApCI,EAAU,IAAM,EAAIA,EAAU,KAQ1D,IAAIC,OAA0BthK,IAAlBuP,EAAQ+xJ,MAAsB/xJ,EAAQ+xJ,MAAQ56J,KAAK6G,MAG3Dg0J,OAA0BvhK,IAAlBuP,EAAQgyJ,MAAsBhyJ,EAAQgyJ,MAAQJ,EAAa,EAEnEK,EAAKF,EAAQJ,GAAcK,EAAQJ,GAAc,IAarD,GAXIK,EAAK,QAA0BxhK,IAArBuP,EAAQ6xJ,WACpBA,EAAWA,EAAW,EAAI,QAKvBI,EAAK,GAAKF,EAAQJ,SAAiClhK,IAAlBuP,EAAQgyJ,QAC5CA,EAAQ,GAINA,GAAS,IACX,MAAM,IAAI7iK,MAAM,mDAGlBwiK,EAAaI,EACbH,EAAaI,EACbN,EAAYG,EAIZ,IAAIK,GAA4B,KAAb,WAFnBH,GAAS,cAE+BC,GAAS,WACjD5/I,EAAE7K,KAAO2qJ,IAAO,GAAK,IACrB9/I,EAAE7K,KAAO2qJ,IAAO,GAAK,IACrB9/I,EAAE7K,KAAO2qJ,IAAO,EAAI,IACpB9/I,EAAE7K,KAAY,IAAL2qJ,EAET,IAAIC,EAAMJ,EAAQ,WAAc,IAAQ,UACxC3/I,EAAE7K,KAAO4qJ,IAAQ,EAAI,IACrB//I,EAAE7K,KAAa,IAAN4qJ,EAET//I,EAAE7K,KAAO4qJ,IAAQ,GAAK,GAAM,GAE5B//I,EAAE7K,KAAO4qJ,IAAQ,GAAK,IAEtB//I,EAAE7K,KAAOsqJ,IAAa,EAAI,IAE1Bz/I,EAAE7K,KAAkB,IAAXsqJ,EAET,IAAK,IAAIx0I,EAAI,EAAGA,EAAI,IAAKA,EACvBjL,EAAE7K,EAAI8V,GAAKzpB,EAAKypB,GAGlB,OAAO/P,GAAO,EAAU8E,ICzD1B,EAhCA,SAAem/I,GACb,IAAK,EAASA,GACZ,MAAM1hJ,UAAU,gBAGlB,IAAIyZ,EACAza,EAAM,IAAItB,WAAW,IAuBzB,OArBAsB,EAAI,IAAMya,EAAI3Y,SAAS4gJ,EAAKv/I,MAAM,EAAG,GAAI,OAAS,GAClDnD,EAAI,GAAKya,IAAM,GAAK,IACpBza,EAAI,GAAKya,IAAM,EAAI,IACnBza,EAAI,GAAS,IAAJya,EAETza,EAAI,IAAMya,EAAI3Y,SAAS4gJ,EAAKv/I,MAAM,EAAG,IAAK,OAAS,EACnDnD,EAAI,GAAS,IAAJya,EAETza,EAAI,IAAMya,EAAI3Y,SAAS4gJ,EAAKv/I,MAAM,GAAI,IAAK,OAAS,EACpDnD,EAAI,GAAS,IAAJya,EAETza,EAAI,IAAMya,EAAI3Y,SAAS4gJ,EAAKv/I,MAAM,GAAI,IAAK,OAAS,EACpDnD,EAAI,GAAS,IAAJya,EAGTza,EAAI,KAAOya,EAAI3Y,SAAS4gJ,EAAKv/I,MAAM,GAAI,IAAK,KAAO,cAAgB,IACnEnD,EAAI,IAAMya,EAAI,WAAc,IAC5Bza,EAAI,IAAMya,IAAM,GAAK,IACrBza,EAAI,IAAMya,IAAM,GAAK,IACrBza,EAAI,IAAMya,IAAM,EAAI,IACpBza,EAAI,IAAU,IAAJya,EACHza,GCdM,SAAS,EAAChd,EAAM+E,EAASw7J,GACtC,SAASC,EAAarkK,EAAOskK,EAAWhlJ,EAAKQ,GAS3C,GARqB,iBAAV9f,IACTA,EAjBN,SAAuBi0B,GACrBA,EAAMsb,SAAShV,mBAAmBtG,IAIlC,IAFA,IAAIo8D,EAAQ,GAEH92E,EAAI,EAAGA,EAAI0a,EAAIvtB,SAAU6S,EAChC82E,EAAMjqF,KAAK6tB,EAAItS,WAAWpI,IAG5B,OAAO82E,EAQKk0E,CAAcvkK,IAGC,iBAAdskK,IACTA,EAAY,EAAMA,IAGK,KAArBA,EAAU59J,OACZ,MAAMmb,UAAU,oEAMlB,IAAIwuE,EAAQ,IAAI9wE,WAAW,GAAKvf,EAAM0G,QAOtC,GANA2pF,EAAMnqF,IAAIo+J,GACVj0E,EAAMnqF,IAAIlG,EAAOskK,EAAU59J,SAC3B2pF,EAAQ+zE,EAAS/zE,IACX,GAAgB,GAAXA,EAAM,GAAYznF,EAC7BynF,EAAM,GAAgB,GAAXA,EAAM,GAAY,IAEzB/wE,EAAK,CACPQ,EAASA,GAAU,EAEnB,IAAK,IAAIvG,EAAI,EAAGA,EAAI,KAAMA,EACxB+F,EAAIQ,EAASvG,GAAK82E,EAAM92E,GAG1B,OAAO+F,EAGT,OAAO,EAAU+wE,GAInB,IACEg0E,EAAaxgK,KAAOA,EACpB,MAAOgoB,IAKT,OAFAw4I,EAAaG,IA7CE,uCA8CfH,EAAa30I,IA7CE,uCA8CR20I,ECNT,SAASI,EAAgBC,GACvB,OAAwC,IAAhCA,EAAe,KAAO,GAAK,GAAU,EAuH/C,SAASC,EAAQ/1J,EAAGqf,GAClB,IAAI22I,GAAW,MAAJh2J,IAAmB,MAAJqf,GAE1B,OADWrf,GAAK,KAAOqf,GAAK,KAAO22I,GAAO,KAC5B,GAAW,MAANA,EAerB,SAASC,EAAO3mI,EAAG/Z,EAAGC,EAAGxV,EAAG4b,EAAGuN,GAC7B,OAAO4sI,GATchvG,EASQgvG,EAAQA,EAAQxgJ,EAAG+Z,GAAIymI,EAAQ/1J,EAAGmpB,OATrC+sI,EAS0Ct6I,GARhDmrC,IAAQ,GAAKmvG,EAQuC1gJ,GAT1E,IAAuBuxC,EAAKmvG,EAY5B,SAASC,EAAM5gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAG4b,EAAGuN,GAC/B,OAAO8sI,EAAOzgJ,EAAI1C,GAAK0C,EAAI0E,EAAG3E,EAAGC,EAAGxV,EAAG4b,EAAGuN,GAG5C,SAASitI,EAAM7gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAG4b,EAAGuN,GAC/B,OAAO8sI,EAAOzgJ,EAAI0E,EAAIpH,GAAKoH,EAAG3E,EAAGC,EAAGxV,EAAG4b,EAAGuN,GAG5C,SAASktI,EAAM9gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAG4b,EAAGuN,GAC/B,OAAO8sI,EAAOzgJ,EAAI1C,EAAIoH,EAAG3E,EAAGC,EAAGxV,EAAG4b,EAAGuN,GAGvC,SAASmtI,EAAM/gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAG4b,EAAGuN,GAC/B,OAAO8sI,EAAOnjJ,GAAK0C,GAAK0E,GAAI3E,EAAGC,EAAGxV,EAAG4b,EAAGuN,GAG1C,MCnNA,EADSotI,EAAI,KAAM,IDkBnB,SAAa90E,GACX,GAAqB,iBAAVA,EAAoB,CAC7B,IAAIptE,EAAMssB,SAAShV,mBAAmB81D,IAEtCA,EAAQ,IAAI9wE,WAAW0D,EAAIvc,QAE3B,IAAK,IAAI6S,EAAI,EAAGA,EAAI0J,EAAIvc,SAAU6S,EAChC82E,EAAM92E,GAAK0J,EAAItB,WAAWpI,GAI9B,OAOF,SAA8BpV,GAK5B,IAJA,IAAIE,EAAS,GACT+gK,EAA0B,GAAfjhK,EAAMuC,OACjB2+J,EAAS,mBAEJ9rJ,EAAI,EAAGA,EAAI6rJ,EAAU7rJ,GAAK,EAAG,CACpC,IAAI3K,EAAIzK,EAAMoV,GAAK,KAAOA,EAAI,GAAK,IAC/B4kC,EAAMx7B,SAAS0iJ,EAAOr0H,OAAOpiC,IAAM,EAAI,IAAQy2J,EAAOr0H,OAAW,GAAJpiC,GAAW,IAC5EvK,EAAO+B,KAAK+3C,GAGd,OAAO95C,EAlBAihK,CAiCT,SAAoB12J,EAAGyV,GAErBzV,EAAEyV,GAAO,IAAM,KAAQA,EAAM,GAC7BzV,EAAE61J,EAAgBpgJ,GAAO,GAAKA,EAM9B,IALA,IAAIF,EAAI,WACJC,GAAK,UACL1C,GAAK,WACLoH,EAAI,UAECvP,EAAI,EAAGA,EAAI3K,EAAElI,OAAQ6S,GAAK,GAAI,CACrC,IAAIgsJ,EAAOphJ,EACPqhJ,EAAOphJ,EACPqhJ,EAAO/jJ,EACPgkJ,EAAO58I,EACX3E,EAAI4gJ,EAAM5gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,GAAI,GAAI,WAChCuP,EAAIi8I,EAAMj8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,GAAI,IAAK,WACrCmI,EAAIqjJ,EAAMrjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,GAAI,GAAI,WACpC6K,EAAI2gJ,EAAM3gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,GAAI,IAAK,YACrC4K,EAAI4gJ,EAAM5gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,GAAI,GAAI,WACpCuP,EAAIi8I,EAAMj8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,GAAI,GAAI,YACpCmI,EAAIqjJ,EAAMrjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,GAAI,IAAK,YACrC6K,EAAI2gJ,EAAM3gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,GAAI,IAAK,UACrC4K,EAAI4gJ,EAAM5gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,GAAI,EAAG,YACnCuP,EAAIi8I,EAAMj8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,GAAI,IAAK,YACrCmI,EAAIqjJ,EAAMrjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,IAAK,IAAK,OACtC6K,EAAI2gJ,EAAM3gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,IAAK,IAAK,YACtC4K,EAAI4gJ,EAAM5gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,IAAK,EAAG,YACpCuP,EAAIi8I,EAAMj8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,IAAK,IAAK,UACtCmI,EAAIqjJ,EAAMrjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,IAAK,IAAK,YAEtC4K,EAAI6gJ,EAAM7gJ,EADVC,EAAI2gJ,EAAM3gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,IAAK,GAAI,YACrBmI,EAAGoH,EAAGla,EAAE2K,EAAI,GAAI,GAAI,WACpCuP,EAAIk8I,EAAMl8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,GAAI,GAAI,YACpCmI,EAAIsjJ,EAAMtjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,IAAK,GAAI,WACrC6K,EAAI4gJ,EAAM5gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,GAAI,IAAK,WACjC4K,EAAI6gJ,EAAM7gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,GAAI,GAAI,WACpCuP,EAAIk8I,EAAMl8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,IAAK,EAAG,UACpCmI,EAAIsjJ,EAAMtjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,IAAK,IAAK,WACtC6K,EAAI4gJ,EAAM5gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,GAAI,IAAK,WACrC4K,EAAI6gJ,EAAM7gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,GAAI,EAAG,WACnCuP,EAAIk8I,EAAMl8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,IAAK,GAAI,YACrCmI,EAAIsjJ,EAAMtjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,GAAI,IAAK,WACrC6K,EAAI4gJ,EAAM5gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,GAAI,GAAI,YACpC4K,EAAI6gJ,EAAM7gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,IAAK,GAAI,YACrCuP,EAAIk8I,EAAMl8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,GAAI,GAAI,UACpCmI,EAAIsjJ,EAAMtjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,GAAI,GAAI,YAEpC4K,EAAI8gJ,EAAM9gJ,EADVC,EAAI4gJ,EAAM5gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,IAAK,IAAK,YACtBmI,EAAGoH,EAAGla,EAAE2K,EAAI,GAAI,GAAI,QACpCuP,EAAIm8I,EAAMn8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,GAAI,IAAK,YACrCmI,EAAIujJ,EAAMvjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,IAAK,GAAI,YACrC6K,EAAI6gJ,EAAM7gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,IAAK,IAAK,UACtC4K,EAAI8gJ,EAAM9gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,GAAI,GAAI,YACpCuP,EAAIm8I,EAAMn8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,GAAI,GAAI,YACpCmI,EAAIujJ,EAAMvjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,GAAI,IAAK,WACrC6K,EAAI6gJ,EAAM7gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,IAAK,IAAK,YACtC4K,EAAI8gJ,EAAM9gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,IAAK,EAAG,WACpCuP,EAAIm8I,EAAMn8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,GAAI,IAAK,WACjCmI,EAAIujJ,EAAMvjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,GAAI,IAAK,WACrC6K,EAAI6gJ,EAAM7gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,GAAI,GAAI,UACpC4K,EAAI8gJ,EAAM9gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,GAAI,GAAI,WACpCuP,EAAIm8I,EAAMn8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,IAAK,IAAK,WACtCmI,EAAIujJ,EAAMvjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,IAAK,GAAI,WAErC4K,EAAI+gJ,EAAM/gJ,EADVC,EAAI6gJ,EAAM7gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,GAAI,IAAK,WACrBmI,EAAGoH,EAAGla,EAAE2K,GAAI,GAAI,WAChCuP,EAAIo8I,EAAMp8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,GAAI,GAAI,YACpCmI,EAAIwjJ,EAAMxjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,IAAK,IAAK,YACtC6K,EAAI8gJ,EAAM9gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,GAAI,IAAK,UACrC4K,EAAI+gJ,EAAM/gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,IAAK,EAAG,YACpCuP,EAAIo8I,EAAMp8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,GAAI,IAAK,YACrCmI,EAAIwjJ,EAAMxjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,IAAK,IAAK,SACtC6K,EAAI8gJ,EAAM9gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,GAAI,IAAK,YACrC4K,EAAI+gJ,EAAM/gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,GAAI,EAAG,YACnCuP,EAAIo8I,EAAMp8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,IAAK,IAAK,UACtCmI,EAAIwjJ,EAAMxjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,GAAI,IAAK,YACrC6K,EAAI8gJ,EAAM9gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,IAAK,GAAI,YACrC4K,EAAI+gJ,EAAM/gJ,EAAGC,EAAG1C,EAAGoH,EAAGla,EAAE2K,EAAI,GAAI,GAAI,WACpCuP,EAAIo8I,EAAMp8I,EAAG3E,EAAGC,EAAG1C,EAAG9S,EAAE2K,EAAI,IAAK,IAAK,YACtCmI,EAAIwjJ,EAAMxjJ,EAAGoH,EAAG3E,EAAGC,EAAGxV,EAAE2K,EAAI,GAAI,GAAI,WACpC6K,EAAI8gJ,EAAM9gJ,EAAG1C,EAAGoH,EAAG3E,EAAGvV,EAAE2K,EAAI,GAAI,IAAK,WACrC4K,EAAIwgJ,EAAQxgJ,EAAGohJ,GACfnhJ,EAAIugJ,EAAQvgJ,EAAGohJ,GACf9jJ,EAAIijJ,EAAQjjJ,EAAG+jJ,GACf38I,EAAI67I,EAAQ77I,EAAG48I,GAGjB,MAAO,CAACvhJ,EAAGC,EAAG1C,EAAGoH,GArHW68I,CA6H9B,SAAsBxhK,GACpB,GAAqB,IAAjBA,EAAMuC,OACR,MAAO,GAMT,IAHA,IAAIk/J,EAAyB,EAAfzhK,EAAMuC,OAChBrC,EAAS,IAAIw6F,YAAY4lE,EAAgBmB,IAEpCrsJ,EAAI,EAAGA,EAAIqsJ,EAASrsJ,GAAK,EAChClV,EAAOkV,GAAK,KAAsB,IAAfpV,EAAMoV,EAAI,KAAcA,EAAI,GAGjD,OAAOlV,EAzIgCwhK,CAAax1E,GAAuB,EAAfA,EAAM3pF,YERpE,EApBA,SAAYsL,EAASsN,EAAKQ,GAExB,IAAIgmJ,GADJ9zJ,EAAUA,GAAW,IACFgQ,SAAWhQ,EAAQsxJ,KAAOA,KAK7C,GAHAwC,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBxmJ,EAAK,CACPQ,EAASA,GAAU,EAEnB,IAAK,IAAIvG,EAAI,EAAGA,EAAI,KAAMA,EACxB+F,EAAIQ,EAASvG,GAAKusJ,EAAKvsJ,GAGzB,OAAO+F,EAGT,OAAO,EAAUwmJ,IClBnB,SAAS1qI,EAAE5Q,EAAG5b,EAAGqf,EAAGqQ,GAClB,OAAQ9T,GACN,KAAK,EACH,OAAO5b,EAAIqf,GAAKrf,EAAI0vB,EAEtB,KAAK,EAML,KAAK,EACH,OAAO1vB,EAAIqf,EAAIqQ,EAJjB,KAAK,EACH,OAAO1vB,EAAIqf,EAAIrf,EAAI0vB,EAAIrQ,EAAIqQ,GAOjC,SAASynI,EAAKn3J,EAAGygB,GACf,OAAOzgB,GAAKygB,EAAIzgB,IAAM,GAAKygB,EA4E7B,MC5FA,EADS81I,EAAI,KAAM,IDoBnB,SAAc90E,GACZ,IAAIryD,EAAI,CAAC,WAAY,WAAY,WAAY,YACzCJ,EAAI,CAAC,WAAY,WAAY,WAAY,UAAY,YAEzD,GAAqB,iBAAVyyD,EAAoB,CAC7B,IAAIptE,EAAMssB,SAAShV,mBAAmB81D,IAEtCA,EAAQ,GAER,IAAK,IAAI92E,EAAI,EAAGA,EAAI0J,EAAIvc,SAAU6S,EAChC82E,EAAMjqF,KAAK6c,EAAItB,WAAWpI,SAElBkD,MAAMC,QAAQ2zE,KAExBA,EAAQ5zE,MAAMtZ,UAAU6gB,MAAM3gB,KAAKgtF,IAGrCA,EAAMjqF,KAAK,KAKX,IAJA,IAAI4xB,EAAIq4D,EAAM3pF,OAAS,EAAI,EACvBy2B,EAAIjd,KAAKsG,KAAKwR,EAAI,IAClB2F,EAAI,IAAIlhB,MAAM0gB,GAET6oI,EAAK,EAAGA,EAAK7oI,IAAK6oI,EAAI,CAG7B,IAFA,IAAInlJ,EAAM,IAAIg+E,YAAY,IAEjBphE,EAAI,EAAGA,EAAI,KAAMA,EACxB5c,EAAI4c,GAAK4yD,EAAW,GAAL21E,EAAc,EAAJvoI,IAAU,GAAK4yD,EAAW,GAAL21E,EAAc,EAAJvoI,EAAQ,IAAM,GAAK4yD,EAAW,GAAL21E,EAAc,EAAJvoI,EAAQ,IAAM,EAAI4yD,EAAW,GAAL21E,EAAc,EAAJvoI,EAAQ,GAGvIE,EAAEqoI,GAAMnlJ,EAGV8c,EAAER,EAAI,GAAG,IAA2B,GAApBkzD,EAAM3pF,OAAS,GAASwZ,KAAKgxB,IAAI,EAAG,IACpDvT,EAAER,EAAI,GAAG,IAAMjd,KAAKC,MAAMwd,EAAER,EAAI,GAAG,KACnCQ,EAAER,EAAI,GAAG,IAA2B,GAApBkzD,EAAM3pF,OAAS,GAAS,WAExC,IAAK,IAAIu/J,EAAM,EAAGA,EAAM9oI,IAAK8oI,EAAK,CAGhC,IAFA,IAAI5nI,EAAI,IAAIwgE,YAAY,IAEf9mE,EAAI,EAAGA,EAAI,KAAMA,EACxBsG,EAAEtG,GAAK4F,EAAEsoI,GAAKluI,GAGhB,IAAK,IAAImuI,EAAK,GAAIA,EAAK,KAAMA,EAC3B7nI,EAAE6nI,GAAMH,EAAK1nI,EAAE6nI,EAAK,GAAK7nI,EAAE6nI,EAAK,GAAK7nI,EAAE6nI,EAAK,IAAM7nI,EAAE6nI,EAAK,IAAK,GAShE,IANA,IAAI/hJ,EAAIyZ,EAAE,GACNxZ,EAAIwZ,EAAE,GACNlc,EAAIkc,EAAE,GACN9U,EAAI8U,EAAE,GACNxO,EAAIwO,EAAE,GAEDuoI,EAAM,EAAGA,EAAM,KAAMA,EAAK,CACjC,IAAI37I,EAAItK,KAAKC,MAAMgmJ,EAAM,IACrBzpI,EAAIqpI,EAAK5hJ,EAAG,GAAKiX,EAAE5Q,EAAGpG,EAAG1C,EAAGoH,GAAKsG,EAAI4O,EAAExT,GAAK6T,EAAE8nI,KAAS,EAC3D/2I,EAAItG,EACJA,EAAIpH,EACJA,EAAIqkJ,EAAK3hJ,EAAG,MAAQ,EACpBA,EAAID,EACJA,EAAIuY,EAGNkB,EAAE,GAAKA,EAAE,GAAKzZ,IAAM,EACpByZ,EAAE,GAAKA,EAAE,GAAKxZ,IAAM,EACpBwZ,EAAE,GAAKA,EAAE,GAAKlc,IAAM,EACpBkc,EAAE,GAAKA,EAAE,GAAK9U,IAAM,EACpB8U,EAAE,GAAKA,EAAE,GAAKxO,IAAM,EAGtB,MAAO,CAACwO,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,OE5FxV,yCCUA,EARA,SAAiB2lI,GACf,IAAK,EAASA,GACZ,MAAM1hJ,UAAU,gBAGlB,OAAOc,SAAS4gJ,EAAK3gJ,OAAO,GAAI,GAAI,gBCJtC,SAASq6H,EAAUjrI,GACjBrR,KAAKkvB,SAAW7d,EAAUA,GAAW,GAErC,IAAIqmI,EAAWrmI,EAAQqmI,UAAY,GACnC13I,KAAK+gJ,aAAe,GACpB,IAAIC,EAAa,GACjB,IAAK,IAAIrgH,KAAU+2G,EAAU,CAC3B,IAAI3yD,EAAM2yD,EAAS/2G,GACfsgH,EAASl8D,KACX/kF,KAAK+gJ,aAAah8D,GAAOpkD,EACzBqgH,EAAWv7I,KAAKs/E,IAGpB,IAAIm8D,EAAUF,EAAWxgI,KAAK,KAAKC,QAAQ,0BAA2B,QACtEzgB,KAAKmhJ,aAAe,IAAIjnG,OAAO,KAAOgnG,EAAU,gCAChDlhJ,KAAKohJ,cAAgB,GACrBphJ,KAAKqhJ,YAAchwI,EAAQiwI,WAC3BthJ,KAAKuhJ,QAAWN,EAAS5vI,EAAQo4E,QAAWp4E,EAAQo4E,OAAU,KAC9DzpF,KAAKwhJ,SAAWP,EAAS5vI,EAAQowI,SAAWpwI,EAAQowI,QAAU,KAC9DzhJ,KAAK0hJ,kBAAoBlvI,QAAQnB,EAAQswI,kBAI3CrF,EAAU95I,UAAUo/I,QAAU,SAAUrkH,GACtC,IAAIp2B,EAAQ,GAmDZ,OAjDIo2B,EAAE7hB,YACJvU,GAASo2B,EAAE7hB,UAAUf,cAAgB,KACnC4iB,EAAEo7G,UACJxxI,GAAS,YACPo2B,EAAEozG,WACJxpI,GAAS,aAEPo2B,EAAEj3B,UACJa,GAAS06I,EAAQtkH,EAAEj3B,eAAWxE,GAAW,SAAUyE,GACjD,OAAOq3I,EAAOr3I,GAAYvG,KAAK8hJ,SAASv7I,GACjC,IAAMvG,KAAK+hJ,aAAax7I,EAASwM,YAAc,OAASivI,EAAiBz7I,EAASA,UAAY,MACpGvG,MAAQ,IAEJu9B,EAAE0zG,WACT9pI,GAASnH,KAAKiS,MAAMsrB,EAAE0zG,UAAU,GAAQjxI,KAAKwhJ,UAE3CjkH,EAAE7F,OACJvwB,GAASnH,KAAKq5I,OAAO,QAAS97G,EAAE7F,KAAKH,SAAWv3B,KAAKq5I,OAAO,cAAe97G,EAAE7F,KAAKi6G,QAChFp0G,EAAEq4G,QACJzuI,GAAS,SAAWnH,KAAKiS,MAAMsrB,EAAEq4G,OAAO,GAAQ51I,KAAKwhJ,UAEnDjkH,EAAEg4G,UACJpuI,GAAS06I,EAAQtkH,EAAEg4G,QAAS,IAAMv1I,KAAKwhJ,SAAUxhJ,KAAKiiJ,SAAUjiJ,OAE9Du9B,EAAEtrB,QACJ9K,GAAS,YAAc06I,EAAQtkH,EAAEtrB,WAAOnQ,GAAW,SAAUogJ,GAC3D,IAAI56I,EAASs2I,EAAOsE,EAAGnvI,YACnB/S,KAAK8hJ,SAASI,EAAGnvI,YACjB,IAAM/S,KAAK+hJ,aAAaG,EAAGnvI,YAAc,IAC7C,OAAOmvI,EAAG37I,SAAW,IAAMe,EAAS,OAAS06I,EAAiBE,EAAG37I,UAAY,IAAMe,IAClFtH,MAAQA,KAAKwhJ,UACdjkH,EAAEu+G,SACJ30I,GAAS,WAAa06I,EAAQtkH,EAAEu+G,YAAQh6I,EAAW9B,KAAK+hJ,aAAc/hJ,MAAQ,IAAMA,KAAKwhJ,UACvFjkH,EAAE65G,QACJjwI,GAAS,YAAc06I,EAAQtkH,EAAE65G,WAAOt1I,GAAW,SAAUogJ,GAC3D,IAAInyI,EAAO,IAAM/P,KAAK+hJ,aAAaG,EAAGnvI,YAAc,IACpD,OAAQmvI,EAAGtG,WAAoB,QAAU7rI,EAAjBA,IACvB/P,MAAQA,KAAKwhJ,UAEdjkH,EAAEpe,SACJhY,GAAS,UAAYo2B,EAAEpe,OAASnf,KAAKwhJ,UACnCjkH,EAAEjhB,QACJnV,GAAS,SAAWo2B,EAAEjhB,MAAQtc,KAAKwhJ,UAEjCjkH,EAAExwB,SACJ5F,GAASnH,KAAK+M,OAAOwwB,KAGvBp2B,EAAQnH,KAAKmiJ,gBAAgB5kH,GAAKp2B,GACrBk9D,QAGfi4E,EAAU95I,UAAU2/I,gBAAkB,SAAU5kH,GAC9C,IAAI6kH,EAAO7kH,EAAE6kH,KAAQ,SAAW7kH,EAAE6kH,KAAO,IAAMpiJ,KAAKwhJ,SAAY,GAC5D9J,EAAW,GACf,IAAK,IAAIv2I,KAAOo8B,EAAEm6G,UACZ13I,KAAKkvB,SAASmzH,aAAeriJ,KAAKohJ,cAAcjgJ,MAClDu2I,GAAY,UAAYv2I,EAAM,MAAQo8B,EAAEm6G,SAASv2I,GAAO,IAAMnB,KAAKwhJ,UAEvE,OAAOY,EAAO1K,GAIhB4E,EAAU95I,UAAU8/I,UAAY,SAAUl8I,GACxC,IAAID,EAAOC,EAAQD,MAASC,aAAmB0V,OAAU,UAC7C1V,EAAQM,SAAWN,EAAQO,WAAaP,EAAQQ,OAAS,SAAW,IAChF,KAAMT,KAAQnG,MACZ,MAAM,IAAIQ,MAAM,uBAAyB2F,GAC3C,OAAOnG,KAAKmG,GAAMC,IAGpBk2I,EAAU95I,UAAUs7I,OAAS,SAAU1mH,GACrC,OAAOp3B,KAAK8hJ,SAAS1qH,EAAE1wB,SAAW,IAAM1G,KAAK8hJ,SAAS1qH,EAAEzwB,WAAa,IAAM3G,KAAK8hJ,SAAS1qH,EAAExwB,QAAU,KAGvG01I,EAAU95I,UAAUw5C,MAAQ,SAAU84C,GACpC,OAAO+sD,EAAQ/sD,EAAO90F,KAAKwhJ,SAAUxhJ,KAAKsiJ,UAAWtiJ,OAGvDs8I,EAAU95I,UAAU65I,IAAM,SAAUA,GAClC,OAAOr8I,KAAKuiJ,cAAclG,EAAI7E,UAGhC8E,EAAU95I,UAAU+/I,cAAgB,SAAU/K,GAC5C,IAAKA,EAAQzxI,OACX,MAAO,GAGT,IADA,IAAI4wB,EAAQ,GAAIjwB,OAAU5E,EAAW6E,OAAY7E,EACxC8W,EAAI,EAAGA,EAAI4+H,EAAQzxI,OAAQ6S,IAAK,CACvC,IAAIklI,EAAStG,EAAQ5+H,GAEhB4pI,EAAW1E,EAAOp3I,QAASA,GAStB87I,EAAW1E,EAAOn3I,UAAWA,GAMrCgwB,EAAMlxB,KAAK,MALXkB,EAAYm3I,EAAOn3I,UACnBgwB,EAAMlxB,KAAK,IAAMzF,KAAKwhJ,SAAUxhJ,KAAKuhJ,QAASvhJ,KAAK8hJ,SAASn7I,MATxDD,GACFiwB,EAAMlxB,KAAK,IAAMzF,KAAKwhJ,UACxB96I,EAAUo3I,EAAOp3I,QACjBC,EAAYm3I,EAAOn3I,UACnBgwB,EAAMlxB,KAAKzF,KAAK8hJ,SAASp7I,GAAU,IAAK1G,KAAK8hJ,SAASn7I,KAWxDgwB,EAAMlxB,KAAK,IAAKzF,KAAK8hJ,SAAShE,EAAOl3I,SAIvC,OAFA+vB,EAAMlxB,KAAK,KAEJkxB,EAAMnW,KAAK,KAGpB87H,EAAU95I,UAAUqE,MAAQ,SAAUA,GACpC,MAAO,SAAW7G,KAAK8hJ,SAASj7I,EAAM3D,MAAQ,IAAMlD,KAAKiS,MAAMpL,IAGjEy1I,EAAU95I,UAAU62I,OAAS,SAAUoJ,EAASpJ,GAC9C,OAAQA,GAA4B,IAAlBA,EAAOtzI,OACvB87I,EAAQxI,EAAQ,IAAI,SAAU3+G,GAAK,OAAO+nH,EAAUziJ,KAAK8hJ,SAASpnH,GAAK16B,KAAKwhJ,WAAaxhJ,MADnD,IAI1Cs8I,EAAU95I,UAAUyP,MAAQ,SAAUA,EAAOywI,GAG3C,OAAyC,KAFzCzwI,GAAmB,IAAXywI,EAAkB1iJ,KAAKg8C,MAAM/pC,EAAM6+H,UAAY7+H,EAAMulI,SACnCx3I,KAAKsiJ,UAAyB,UAAfrwI,EAAM9L,KAAmB8L,EAAQA,EAAM6+H,WACnEh5H,QAAQ9X,KAAKwhJ,UAAmB,KAAOvvI,EAAQ,KAAO,IAAMjS,KAAKwhJ,SAAWxhJ,KAAKypF,OAAOx3E,GAASjS,KAAKwhJ,SAAW,KAGhIlF,EAAU95I,UAAU2E,MAAQ,SAAUA,GACpC,OAAOnH,KAAK4hJ,QAAQz6I,IAGtBm1I,EAAU95I,UAAU8K,OAAS,SAAUA,GACrC,MAAO,UAAYtN,KAAK+hJ,aAAaz0I,EAAOyF,YAAc,KAG5DupI,EAAU95I,UAAUgkB,KAAO,SAAUA,GACnC,MAAO,QAAUxmB,KAAK+hJ,aAAav7H,EAAKzT,YAAc,OAASivI,EAAiBx7H,EAAKjgB,UAAY,KAGnG+1I,EAAU95I,UAAUmgJ,SAAW,SAAUA,GACvC,MAAO,YAAc3iJ,KAAKiS,MAAM0wI,IAGlCrG,EAAU95I,UAAU6gH,MAAQ,SAAUA,GACpC,OAAOw+B,EAAQx+B,EAAMytB,SAAU9wI,KAAKwhJ,SAAW,QAAUxhJ,KAAKwhJ,UAAU,SAAUj/I,GAAK,OAAOvC,KAAKiS,MAAM1P,GAAG,KAAUvC,OAGxHs8I,EAAU95I,UAAUogJ,MAAQ,SAAUA,GACpC,MAAO,SAAW5iJ,KAAKiS,MAAM2wI,IAG/BtG,EAAU95I,UAAUuK,OAAS,SAAU81I,GAErC,IAKIC,EAAQC,EALRn2I,EAAO1N,OAAO0N,KAAKi2I,EAAW91I,OAAOwM,QAAO,SAAUmgG,EAAS3sG,GACjE,IAAK,IAAI5L,KAAO4L,EAAQ2sG,EAAQv4G,IAAO,EACvC,OAAOu4G,IACN,KAUH,OAPoB,IAAhB9sG,EAAK7G,OACP+8I,EAASC,EAAS,IAElBD,EAAS,IACTC,EAAS,KAGJ,UAAYD,EAASl2I,EAAK4T,KAAK,KAAOuiI,EAAS,KAAO/iJ,KAAKwhJ,SAChEK,EAAQgB,EAAW91I,OAAQ/M,KAAKwhJ,UAAU,SAAUz0I,GAClD,MAAO,KAAO+1I,EAASjB,EAAQj1I,OAAM9K,GAAW,SAAUX,GACxD,OAAO4L,EAAO5L,GAAOnB,KAAK8hJ,SAAS/0I,EAAO5L,IAAQ,UACjDnB,MAAQ+iJ,IACV/iJ,MAAQA,KAAKwhJ,SAAW,KAG/BlF,EAAU95I,UAAUwgJ,QAAU,SAAUA,GACtC,MAAO,YAAcA,EAAQlP,OAAS,UAAY,IAAM9zI,KAAK8hJ,SAASkB,EAAQ9/I,MAAQ,IAC/ElD,KAAKiS,MAAM+wI,IAIpB1G,EAAU95I,UAAUu/I,aAAe,SAAUhyI,GAC3C,GAAI6tI,EAAO7tI,GACT,OAAO/P,KAAK8hJ,SAAS/xI,GAEvB,OAAQA,EAAK5J,KAAKutB,eAChB,IAAK,YACH,OAAO3jB,EAAKmqI,YAAYv/H,cACjB,KAAO5K,EAAK4gI,SAAW,YAAc,IAAM3wI,KAAK+hJ,aAAahyI,EAAKgD,aACjEhD,EAAKw1G,UAAY,kBAAyBx1G,EAAKw1G,UAAU9kG,QAAQkuB,EAAQs0G,GAAkB,IAAM,IAAM,IACjH,IAAK,eACH,OAAOjjJ,KAAK8hJ,SAAS/xI,EAAKsqI,UAAY,IAAMwH,EAAQ9xI,EAAKrQ,KAAM,KAAMM,KAAK+hJ,aAAc/hJ,MAAQ,IAClG,IAAK,YACH,IAAI+0I,EAAWhlI,EAAKglI,SAASp6H,cAAejb,EAAOqQ,EAAKrQ,MAAQ,GAChE,OAAQqQ,EAAKglI,SAASrhH,eAEtB,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAQkqH,EAAOl+I,EAAK,IAAMM,KAAK8hJ,SAASpiJ,EAAK,IAAM,IAAMM,KAAK+hJ,aAAariJ,EAAK,IAAM,KAC/E,IAAMq1I,EAAW,KAChB6I,EAAOl+I,EAAK,IAAMM,KAAK8hJ,SAASpiJ,EAAK,IAAM,IAAMM,KAAK+hJ,aAAariJ,EAAK,IAAM,KAE1F,IAAK,IACH,MAAO,KAAOM,KAAK+hJ,aAAariJ,EAAK,IAAM,IAC7C,IAAK,SACH,MAAO,KAAOM,KAAK+hJ,aAAariJ,EAAK,IAAM,IAE7C,IAAK,QACHq1I,EAAW,SACb,IAAK,KACH,OAAO/0I,KAAK+hJ,aAAariJ,EAAK,IAAM,IAAMq1I,EACnC,KAAOkM,EAASvhJ,EAAK,IAAMA,EAAK,GAAKmiJ,EAAQniJ,EAAK,GAAI,KAAMM,KAAK+hJ,aAAc/hJ,OAAS,IAEjG,IAAK,YACH+0I,EAAW,aACb,IAAK,SACH,OAAOA,EAAW,IAAM/0I,KAAKiS,MAAMvS,EAAK,IAAI,GAE9C,QACE,OAAOq1I,EAAW,IAAM8M,EAAQniJ,EAAM,KAAMM,KAAK+hJ,aAAc/hJ,MAAQ,IAE3E,QACE,MAAM,IAAIQ,MAAM,4BAA8BuP,EAAK5J,QAKzDm2I,EAAU95I,UAAUs/I,SAAW,SAAUziJ,GACvC,GAAIu+I,EAAOv+I,GACT,OAAQA,EAAMyH,UAEd,IAAK,WACH,MAAO,IACT,IAAK,WACH,OAAOk7I,EAAiB3iJ,GAC1B,IAAK,YACH,MAAO,KAAOA,EAAMA,MAEtB,IAAK,UACH,IAAI6jJ,EAAU7jJ,EAAMA,OAAS,GAAI2I,EAAW3I,EAAM2I,UAAY,GAAI2sH,EAAWt1H,EAAMs1H,SAEnF,GADAt1H,EAAQ,IAAM6jJ,EAAQziI,QAAQkuB,EAAQs0G,GAAkB,IACpDj7I,EACF3I,GAAS,IAAM2I,OACV,GAAI2sH,EAAU,CAEnB,IAAK30H,KAAK0hJ,kBACR,OAAQ/sB,EAASt1H,OACjB,IA/RO,0CAgSL,OAAOA,EACT,IAlSQ,2CAmSN,GAAI,QAAQ8Y,KAAK+qI,GAEf,OAAOA,EAAU,IAGvB7jJ,GAAS,KAAOW,KAAKmjJ,UAAUxuB,EAASt1H,OAE1C,OAAOA,EACT,IAAK,OACH,IAAKW,KAAKqhJ,YACN,MAAM,IAAI7gJ,MAAM,kCAEpB,OAAInB,EAAMwH,OAAkC,iBAAzBxH,EAAMwH,MAAMC,SACtB,YACL9G,KAAK8hJ,SAASziJ,EAAMwH,OACpB,MACA7G,KAAK8hJ,SAASziJ,EAAMqH,SAAW,IAC/B1G,KAAK8hJ,SAASziJ,EAAMsH,WAAa,IACjC3G,KAAK8hJ,SAASziJ,EAAMuH,QALf,SAWL,MACA5G,KAAK8hJ,SAASziJ,EAAMqH,SAAW,IAC/B1G,KAAK8hJ,SAASziJ,EAAMsH,WAAa,IACjC3G,KAAK8hJ,SAASziJ,EAAMuH,QACpB,MAIN,QACE,OAAO5G,KAAKmjJ,UAAU9jJ,EAAMA,WAI3B,CACH,IAAIy1F,EAAQz1F,EAAMy1F,MAAM9uF,IAAIhG,KAAK8hJ,SAAU9hJ,MAAO0R,EAAOrS,EAAMq7I,SAC/D,OAAQhpI,GAER,IAAK,IACL,IAAK,IACH,OAAOA,EAAOojF,EAAM,GAEtB,IAAK,IACL,IAAK,IACL,IAAK,IACH,MAAO,IAAMA,EAAM,GAAKpjF,EAAO,IAEjC,QACE,MAAO,IAAMojF,EAAMt0E,KAAK9O,GAAQ,OAItC,IAAIi9B,EAAS,mBACTs0G,EAAiB,SAAUliI,GAAK,OAAOqiI,EAAmBriI,IAC1DqiI,EAAqB,CAAE,KAAM,OAAQ,IAAK,MAAO,KAAM,MAChC,KAAM,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,OAsDxE,SAASpB,EAAiBz7I,GACxB,MAAO,IAAMA,EAASlH,MAIxB,SAAS4hJ,EAASr6I,GAAU,MAAyB,iBAAXA,EAG1C,SAASg3I,EAAOh3I,GACd,MAAkC,iBAApBA,EAAOE,SAIvB,SAAS07I,EAAWa,EAAOC,GACzB,IAAKD,IAAUzF,EAAOyF,GAAU,OAAO,EACvC,IAAKC,IAAU1F,EAAO0F,GAAU,OAAO,EACvC,GAAID,EAAMv8I,WAAaw8I,EAAMx8I,SAAY,OAAO,EAChD,OAAQu8I,EAAMv8I,UACZ,IAAK,UACH,OAAOu8I,EAAMhkJ,QAAUikJ,EAAMjkJ,OACtBgkJ,EAAMr7I,WAAas7I,EAAMt7I,UACzBw6I,EAAWa,EAAM1uB,SAAU2uB,EAAM3uB,UAC1C,IAAK,OACH,OAAO6tB,EAAWa,EAAM38I,QAAS48I,EAAM58I,UAChC87I,EAAWa,EAAM18I,UAAW28I,EAAM38I,YAClC67I,EAAWa,EAAMz8I,OAAQ08I,EAAM18I,SAC/B47I,EAAWa,EAAMx8I,MAAOy8I,EAAMz8I,OACvC,QACE,OAAOw8I,EAAMhkJ,QAAUikJ,EAAMjkJ,OAKnC,SAASwiJ,EAAQ7lG,EAAOutC,EAAK2K,EAAM/4E,GACjC,OAAO6gC,EAAMh2C,IAAIkuF,EAAM/4E,GAAMqF,KAAKygI,EAAS13D,GAAOA,EAAM,KArF1D+yD,EAAU95I,UAAU2gJ,UAAY,SAAUp+D,GACxC,IAAIw+D,EAAcvjJ,KAAKmhJ,aAAa3tH,KAAKuxD,GACzC,GAAIw+D,EAAa,CACf,IAAI5iH,EAAS3gC,KAAK+gJ,aAAawC,EAAY,IAE3C,OADAvjJ,KAAKohJ,cAAczgH,IAAU,EACtBA,EAAS,IAAM4iH,EAAY,GAEpC,MAAO,IAAMx+D,EAAM,KAIrBu3D,EAAU95I,UAAUy/I,SAAW,SAAUxyG,GACvC,OAAQA,EAAOtpC,MAAQspC,EAAO0pG,YAC9B,IAAK,OACH,MAAO,QAAU1pG,EAAOv6B,OAAS,IAAMlV,KAAK8hJ,SAASryG,EAAOv6B,QAAU,KAC9Du6B,EAAOt6B,YAAc,eAAiBnV,KAAK8hJ,SAASryG,EAAOt6B,aAAe,IACpF,IAAK,SACH,MAAO,eAAkBnV,KAAKiS,MAAMw9B,EAAO2uE,QAAQ,GACrD,IAAK,SACH,MAAO,eAAkBp+G,KAAKiS,MAAMw9B,EAAO5rC,QAAQ,GACrD,IAAK,cACH,MAAO,gBAAkB7D,KAAKiS,MAAMw9B,EAAO5rC,QAAQ,GACrD,IAAK,eACH,OAAQ4rC,EAAO5oC,MAAQ,QAAU7G,KAAK8hJ,SAASryG,EAAO5oC,OAAS7G,KAAKwhJ,SAAW,KACvE/xG,EAAO5rC,OAAOkC,OAAS,UAAY/F,KAAKiS,MAAMw9B,EAAO5rC,QAAQ,GAAQ7D,KAAKwhJ,SAAW,KACrF/xG,EAAO2uE,OAAOr4G,OAAS,UAAY/F,KAAKiS,MAAMw9B,EAAO2uE,QAAQ,GAAQp+G,KAAKwhJ,SAAW,KACrF/xG,EAAOypG,MAAQl5I,KAAKq5I,OAAO,SAAU5pG,EAAOypG,MAAM3hH,SAAW,KAC7DkY,EAAOypG,MAAQl5I,KAAKq5I,OAAO,eAAgB5pG,EAAOypG,MAAMvH,OAAS,IAClE,SAAW3xI,KAAKiS,MAAMw9B,EAAOmmG,OAAO,GAC7C,IAAK,MACL,IAAK,OACL,IAAK,OACH,OAAOnmG,EAAOtpC,KAAKwU,eAAiB80B,EAAOv6B,OAAOqiB,QAAU,YAAc,KACnE,MAAQv3B,KAAK8hJ,SAASryG,EAAOt6B,YAAYjS,MAClD,IAAK,SACL,IAAK,QACL,IAAK,OACH,OAAOusC,EAAOtpC,KAAKwU,eAAiB80B,EAAOqkG,OAAS,WAAa,MAC/DrkG,EAAO5oC,MAAM0wB,QAAU,UACvBkY,EAAO5oC,MAAM8qI,MAAQ,QACrBliG,EAAO5oC,MAAM+rB,IAAM,MAClB,SAAW5yB,KAAK8hJ,SAASryG,EAAO5oC,MAAM3D,OAE3C,QACE,MAAM,IAAI1C,MAAM,8BAAgCivC,EAAOtpC,QAK3Dm2I,EAAU95I,UAAUinF,OAAS,SAAS3a,GAAQ,OAAOA,EAAKruD,QAAQ,MAAOzgB,KAAKuhJ,UA8C9Ev1E,EAAO5sE,QAAU,SAAyBiS,EAAU,IAClD,MAAO,CACLhF,UAAW,SAAUlF,GACnB,IAAIq8I,EAAiBtkJ,OAAOuC,OAAO4P,GAEnC,OADAmyI,EAAe9L,SAAWvwI,EAAMuwI,SACzB,IAAI4E,EAAUkH,GAAgB5B,QAAQz6I,IAE/Cs8I,gBAAiB,WAAa,OAAO,IAAInH,EAAUjrI,iDC7XnDqyI,EAAe,WACnB,IAAIhiJ,EAAE,SAASE,EAAE+4B,EAAEj5B,EAAE21B,GAAG,IAAI31B,EAAEA,GAAG,GAAG21B,EAAEz1B,EAAEmE,OAAOsxB,IAAI31B,EAAEE,EAAEy1B,IAAIsD,GAAG,OAAOj5B,GAAGiiJ,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,IAAIC,EAAI,CAAC,GAAG,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,IAAIC,EAAI,CAAC,GAAG,GAAG,KAAKC,EAAI,CAAC,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,GAAG,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,IAAI,KAAKC,GAAK,CAAC,GAAG,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,IAAIC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,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AC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CA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AAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,GAAG,OAAO,IAEf,KAAK,G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","sources":["webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-abstract-mediatyped/lib/ActorAbstractMediaTyped.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-abstract-mediatyped/lib/ActorAbstractMediaTypedFixed.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-abstract-mediatyped/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-http-proxy/lib/ActorHttpProxy.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-http-proxy/lib/ProxyHandlerStatic.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-http-proxy/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-init-query/lib/ActorInitQuery-browser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-init-query/lib/ActorInitQueryBase.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-init-query/lib/MemoryPhysicalQueryPlanLogger.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-init-query/lib/QueryEngineBase.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-init-query/lib/index-browser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-query-result-serialize-tree/lib/ActorQueryResultSerializeTree.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/actor-query-result-serialize-tree/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bindings-factory/lib/Bindings.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bindings-factory/lib/BindingsFactory.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bindings-factory/lib/bindingsToString.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bindings-factory/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-http/lib/ActorHttp.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-http/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-init/lib/ActorInit.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-init/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-query-operation/lib/ActorQueryOperation.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-query-operation/lib/ActorQueryOperationTyped.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-query-operation/lib/ActorQueryOperationTypedMediated.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-query-operation/lib/Bindings.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-query-operation/lib/BusQueryOperation.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-query-operation/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-query-result-serialize/lib/ActorQueryResultSerialize.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-query-result-serialize/lib/ActorQueryResultSerializeFixedMediaTypes.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/bus-query-result-serialize/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/context-entries/lib/Keys.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/context-entries/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/core/lib/ActionContext.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/core/lib/ActionObserver.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/core/lib/Actor.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/core/lib/Bus.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/core/lib/BusIndexed.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/core/lib/ContextEntries.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/core/lib/Logger.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/core/lib/Mediator.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/core/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/data-factory/lib/BlankNodeBindingsScoped.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/data-factory/lib/BlankNodeScoped.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/data-factory/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/logger-pretty/lib/LoggerPretty.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/logger-pretty/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@comunica/web-client-generator/src/ldf-client-worker.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@inrupt/jose-legacy-modules/dist/index.es.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@inrupt/oidc-client/lib/oidc-client.min.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/form-urlencoded/form-urlencoded.mjs","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/oidc-client-ext/dist/index.es.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/ClientAuthentication.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/Session.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/constant.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/defaultSession.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/dependencies.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/iframe.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/login/oidc/ClientRegistrar.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/login/oidc/IssuerConfigFetcher.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/login/oidc/OidcLoginHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/login/oidc/Redirector.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/login/oidc/oidcHandlers/AuthorizationCodeWithPkceOidcHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/login/oidc/redirectHandler/AggregateRedirectHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/login/oidc/redirectHandler/AuthCodeRedirectHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/login/oidc/redirectHandler/ErrorOidcHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/login/oidc/redirectHandler/FallbackRedirectHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/login/oidc/refresh/TokenRefresher.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/logout/GeneralLogoutHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/sessionInfo/SessionInfoManager.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/storage/BrowserStorage.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/storage/StorageUtility.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/util/urlPath.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/util/worker/WindowToWorkerHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-browser/dist/util/worker/WorkerToWindowHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/authenticatedFetch/dpopUtils.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/authenticatedFetch/fetchFactory.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/constant.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/errors/ConfigurationError.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/errors/InruptError.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/errors/InvalidResponseError.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/errors/NotImplementedError.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/errors/OidcProviderError.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/login/oidc/IClientRegistrar.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/login/oidc/redirectHandler/IRedirectHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/sessionInfo/ISessionInfo.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/sessionInfo/ISessionInfoManager.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/storage/InMemoryStorage.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/storage/StorageUtility.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/storage/__mocks__/StorageUtility.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/@rubensworks/solid-client-authn-core/dist/util/handlerPattern/AggregateHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/JSONStream/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/base64-js/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/buffer/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/call-bind/callBound.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/call-bind/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/events/events.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/fast-deep-equal/es6/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/foreach/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/function-bind/implementation.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/function-bind/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/get-intrinsic/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/has-symbols/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/has-symbols/shams.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/has-tostringtag/shams.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/has/src/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash/common.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash/hmac.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash/ripemd.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash/sha.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash/sha/1.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash/sha/224.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash/sha/256.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash/sha/384.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash/sha/512.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash/sha/common.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/hash.js/lib/hash/utils.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/ieee754/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/immutable/dist/immutable.es.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/inherits/inherits_browser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/is-arguments/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/is-generator-function/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/is-stream/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/is-typed-array/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/jsonparse/jsonparse.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/minimalistic-assert/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/process/browser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-data-factory/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-data-factory/lib/BlankNode.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-data-factory/lib/DataFactory.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-data-factory/lib/DefaultGraph.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-data-factory/lib/Literal.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-data-factory/lib/NamedNode.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-data-factory/lib/Quad.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-data-factory/lib/Variable.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-isomorphic/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-isomorphic/lib/RdfIsomorphic.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-literal/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-literal/lib/ITypeHandler.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-literal/lib/Translator.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-literal/lib/handler/TypeHandlerBoolean.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-literal/lib/handler/TypeHandlerDate.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-literal/lib/handler/TypeHandlerNumberDouble.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-literal/lib/handler/TypeHandlerNumberInteger.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-literal/lib/handler/TypeHandlerString.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-literal/lib/handler/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-string/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-string/lib/TermUtil.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-terms/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-terms/lib/QuadTermUtil.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/rdf-terms/lib/TermUtil.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream-node-to-web/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/errors-browser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/_stream_duplex.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/_stream_readable.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/_stream_transform.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/_stream_writable.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/internal/streams/state.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-stream/readable-browser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/readable-web-to-node-stream/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/safe-buffer/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqlalgebrajs/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqlalgebrajs/lib/algebra.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqlalgebrajs/lib/factory.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqlalgebrajs/lib/sparql.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqlalgebrajs/lib/util.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqljs/lib/SparqlGenerator.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqljs/lib/SparqlParser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqljs/lib/Wildcard.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqljs/sparql.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqljson-parse/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqljson-parse/lib/SparqlJsonBindingsTransformer.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqljson-parse/lib/SparqlJsonParser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqljson-to-tree/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/sparqljson-to-tree/lib/Converter.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/stream-browserify/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/string_decoder/lib/string_decoder.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/through/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/util-deprecate/browser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/util/support/isBufferBrowser.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/util/support/types.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/util/util.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/rng.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/regex.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/validate.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/stringify.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/v1.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/parse.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/v35.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/md5.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/v3.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/v4.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/sha1.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/v5.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/nil.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/uuid/dist/esm-browser/version.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/web-streams-node/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/web-streams-node/lib/conversions.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/web-streams-node/node_modules/is-stream/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/web-streams-ponyfill/dist/polyfill-ie11.min.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/which-typed-array/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-abstract-mediatyped/lib/ActorAbstractMediaTyped.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-abstract-mediatyped/lib/ActorAbstractMediaTypedFixed.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-abstract-mediatyped/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-abstract-path/lib/ActorAbstractPath.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-abstract-path/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-context-preprocess-source-to-destination/lib/ActorContextPreprocessSourceToDestination.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-context-preprocess-source-to-destination/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-dereference-fallback/lib/ActorDereferenceFallback.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-dereference-fallback/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-dereference-http/lib/ActorDereferenceHttp-browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-dereference-http/lib/ActorDereferenceHttpBase.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-dereference-http/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-dereference-rdf-parse/lib/ActorDereferenceRdfParse.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-dereference-rdf-parse/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-hash-bindings-sha1/lib/ActorHashBindingsSha1.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-hash-bindings-sha1/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-http-fetch/lib/ActorHttpFetch.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-http-fetch/lib/FetchInitPreprocessor-browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-http-fetch/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-http-proxy/lib/ActorHttpProxy.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-http-proxy/lib/ProxyHandlerStatic.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-http-proxy/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-init-query/lib/ActorInitQuery-browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-init-query/lib/ActorInitQueryBase.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-init-query/lib/MemoryPhysicalQueryPlanLogger.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-init-query/lib/QueryEngineBase.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-init-query/lib/index-browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-optimize-query-operation-bgp-to-join/lib/ActorOptimizeQueryOperationBgpToJoin.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-optimize-query-operation-bgp-to-join/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-optimize-query-operation-join-bgp/lib/ActorOptimizeQueryOperationJoinBgp.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-optimize-query-operation-join-bgp/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-optimize-query-operation-join-connected/lib/ActorOptimizeQueryOperationJoinConnected.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-optimize-query-operation-join-connected/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-ask/lib/ActorQueryOperationAsk.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-ask/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-bgp-join/lib/ActorQueryOperationBgpJoin.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-bgp-join/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-construct/lib/ActorQueryOperationConstruct.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-construct/lib/BindingsToQuadsIterator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-construct/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-describe-subject/lib/ActorQueryOperationDescribeSubject.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-describe-subject/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-distinct-hash/lib/ActorQueryOperationDistinctHash.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-distinct-hash/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-extend/lib/ActorQueryOperationExtend.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-extend/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-filter-sparqlee/lib/ActorQueryOperationFilterSparqlee.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-filter-sparqlee/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-from-quad/lib/ActorQueryOperationFromQuad.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-from-quad/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-group/lib/ActorQueryOperationGroup.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-group/lib/GroupsState.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-group/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-join/lib/ActorQueryOperationJoin.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-join/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-leftjoin/lib/ActorQueryOperationLeftJoin.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-leftjoin/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-minus/lib/ActorQueryOperationMinus.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-minus/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-nop/lib/ActorQueryOperationNop.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-nop/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-orderby-sparqlee/lib/ActorQueryOperationOrderBySparqlee.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-orderby-sparqlee/lib/SortIterator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-orderby-sparqlee/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-alt/lib/ActorQueryOperationPathAlt.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-alt/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-inv/lib/ActorQueryOperationPathInv.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-inv/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-link/lib/ActorQueryOperationPathLink.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-link/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-nps/lib/ActorQueryOperationPathNps.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-nps/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-one-or-more/lib/ActorQueryOperationPathOneOrMore.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-one-or-more/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-seq/lib/ActorQueryOperationPathSeq.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-seq/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-zero-or-more/lib/ActorQueryOperationPathZeroOrMore.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-zero-or-more/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-zero-or-one/lib/ActorQueryOperationPathZeroOrOne.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-path-zero-or-one/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-project/lib/ActorQueryOperationProject.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-project/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-quadpattern/lib/ActorQueryOperationQuadpattern.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-quadpattern/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-reduced-hash/lib/ActorQueryOperationReducedHash.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-reduced-hash/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-service/lib/ActorQueryOperationService.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-service/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-slice/lib/ActorQueryOperationSlice.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-slice/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-sparql-endpoint/lib/ActorQueryOperationSparqlEndpoint.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-sparql-endpoint/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-union/lib/ActorQueryOperationUnion.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-union/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-add-rewrite/lib/ActorQueryOperationAddRewrite.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-add-rewrite/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-clear/lib/ActorQueryOperationClear.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-clear/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-compositeupdate/lib/ActorQueryOperationUpdateCompositeUpdate.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-compositeupdate/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-copy-rewrite/lib/ActorQueryOperationCopyRewrite.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-copy-rewrite/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-create/lib/ActorQueryOperationCreate.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-create/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-deleteinsert/lib/ActorQueryOperationUpdateDeleteInsert.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-deleteinsert/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-drop/lib/ActorQueryOperationDrop.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-drop/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-load/lib/ActorQueryOperationLoad.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-load/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-move-rewrite/lib/ActorQueryOperationMoveRewrite.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-update-move-rewrite/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-values/lib/ActorQueryOperationValues.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-operation-values/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-parse-graphql/lib/ActorQueryParseGraphql.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-parse-graphql/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-parse-sparql/lib/ActorQueryParseSparql.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-parse-sparql/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-json/lib/ActorQueryResultSerializeJson.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-json/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-rdf/lib/ActorQueryResultSerializeRdf.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-rdf/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-simple/lib/ActorQueryResultSerializeSimple.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-simple/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-sparql-csv/lib/ActorQueryResultSerializeSparqlCsv.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-sparql-csv/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-sparql-json/lib/ActorQueryResultSerializeSparqlJson.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-sparql-json/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-sparql-tsv/lib/ActorQueryResultSerializeSparqlTsv.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-sparql-tsv/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-sparql-xml/lib/ActorQueryResultSerializeSparqlXml.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-sparql-xml/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-stats/lib/ActionObserverHttp.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-stats/lib/ActorQueryResultSerializeStats.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-stats/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-table/lib/ActorQueryResultSerializeTable.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-table/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-tree/lib/ActorQueryResultSerializeTree.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-query-result-serialize-tree/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-entries-sort-cardinality/lib/ActorRdfJoinEntriesSortCardinality.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-entries-sort-cardinality/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-hash/lib/ActorRdfJoinHash.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-hash/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-multi-bind/lib/ActorRdfJoinMultiBind.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-multi-bind/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-multi-empty/lib/ActorRdfJoinMultiEmpty.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-multi-empty/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-multi-smallest/lib/ActorRdfJoinMultiSmallest.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-multi-smallest/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-nestedloop/lib/ActorRdfJoinNestedLoop.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-nestedloop/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-none/lib/ActorRdfJoinNone.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-none/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-single/lib/ActorRdfJoinSingle.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-single/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-symmetrichash/lib/ActorRdfJoinSymmetricHash.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-inner-symmetrichash/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-minus-hash-undef/lib/ActorRdfJoinMinusHashUndef.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-minus-hash-undef/lib/BindingsIndex.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-minus-hash-undef/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-minus-hash/lib/ActorRdfJoinMinusHash.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-minus-hash/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-optional-bind/lib/ActorRdfJoinOptionalBind.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-optional-bind/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-optional-nestedloop/lib/ActorRdfJoinOptionalNestedLoop.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-optional-nestedloop/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-selectivity-variable-counting/lib/ActorRdfJoinSelectivityVariableCounting.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-join-selectivity-variable-counting/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-all/lib/ActorRdfMetadataAll.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-all/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-allow-http-methods/lib/ActorRdfMetadataExtractAllowHttpMethods.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-allow-http-methods/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-hydra-controls/lib/ActorRdfMetadataExtractHydraControls.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-hydra-controls/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-hydra-count/lib/ActorRdfMetadataExtractHydraCount.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-hydra-count/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-hydra-pagesize/lib/ActorRdfMetadataExtractHydraPagesize.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-hydra-pagesize/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-patch-sparql-update/lib/ActorRdfMetadataExtractPatchSparqlUpdate.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-patch-sparql-update/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-put-accepted/lib/ActorRdfMetadataExtractPutAccepted.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-put-accepted/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-request-time/lib/ActorRdfMetadataExtractRequestTime.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-request-time/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-sparql-service/lib/ActorRdfMetadataExtractSparqlService.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-extract-sparql-service/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-primary-topic/lib/ActorRdfMetadataPrimaryTopic.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-metadata-primary-topic/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html-microdata/lib/ActorRdfParseHtmlMicrodata.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html-microdata/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html-rdfa/lib/ActorRdfParseHtmlRdfa.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html-rdfa/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html-script/lib/ActorRdfParseHtmlScript.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html-script/lib/HtmlScriptListener.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html-script/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html/lib/ActorRdfParseHtml.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html/node_modules/entities/lib/decode.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html/node_modules/entities/lib/decode_codepoint.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html/node_modules/entities/lib/generated/decode-data-html.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html/node_modules/entities/lib/generated/decode-data-xml.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html/node_modules/htmlparser2/lib/Parser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html/node_modules/htmlparser2/lib/Tokenizer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-html/node_modules/htmlparser2/lib/WritableStream.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-jsonld/lib/ActorRdfParseJsonLd.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-jsonld/lib/DocumentLoaderMediated.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-jsonld/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-n3/lib/ActorRdfParseN3.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-n3/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-rdfxml/lib/ActorRdfParseRdfXml.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-rdfxml/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-xml-rdfa/lib/ActorRdfParseXmlRdfa.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-parse-xml-rdfa/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-links-next/lib/ActorRdfResolveHypermediaLinksNext.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-links-next/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-links-queue-fifo/lib/ActorRdfResolveHypermediaLinksQueueFifo.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-links-queue-fifo/lib/LinkQueueFifo.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-links-queue-fifo/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-none/lib/ActorRdfResolveHypermediaNone.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-none/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-qpf/lib/ActorRdfResolveHypermediaQpf.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-qpf/lib/RdfSourceQpf.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-qpf/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-sparql/lib/ActorRdfResolveHypermediaSparql.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-sparql/lib/RdfSourceSparql.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-hypermedia-sparql/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-federated/lib/ActorRdfResolveQuadPatternFederated.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-federated/lib/FederatedQuadSource.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-federated/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-hypermedia/lib/ActorRdfResolveQuadPatternHypermedia.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-hypermedia/lib/LinkedRdfSourcesAsyncRdfIterator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-hypermedia/lib/MediatedLinkedRdfSourcesAsyncRdfIterator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-hypermedia/lib/MediatedQuadSource.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-hypermedia/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source/lib/ActorRdfResolveQuadPatternRdfJsSource.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source/lib/IRdfJsSourceExtended.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source/lib/RdfJsQuadSource.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-serialize-jsonld/lib/ActorRdfSerializeJsonLd.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-serialize-jsonld/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-serialize-n3/lib/ActorRdfSerializeN3.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-serialize-n3/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-hypermedia-patch-sparql-update/lib/ActorRdfUpdateHypermediaPatchSparqlUpdate.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-hypermedia-patch-sparql-update/lib/QuadDestinationPatchSparqlUpdate.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-hypermedia-patch-sparql-update/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-hypermedia-put-ldp/lib/ActorRdfUpdateHypermediaPutLdp.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-hypermedia-put-ldp/lib/QuadDestinationPutLdp.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-hypermedia-put-ldp/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-hypermedia-sparql/lib/ActorRdfUpdateHypermediaSparql.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-hypermedia-sparql/lib/QuadDestinationSparql.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-hypermedia-sparql/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-quads-hypermedia/lib/ActorRdfUpdateQuadsHypermedia.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-quads-hypermedia/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-quads-rdfjs-store/lib/ActorRdfUpdateQuadsRdfJsStore.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-quads-rdfjs-store/lib/RdfJsQuadDestination.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/actor-rdf-update-quads-rdfjs-store/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bindings-factory/lib/Bindings.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bindings-factory/lib/BindingsFactory.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bindings-factory/lib/bindingsToString.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bindings-factory/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bindings-factory/node_modules/immutable/dist/immutable.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-context-preprocess/lib/ActorContextPreprocess.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-context-preprocess/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-dereference-rdf/lib/ActorDereferenceRdf.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-dereference-rdf/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-dereference/lib/ActorDereference.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-dereference/lib/ActorDereferenceBase.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-dereference/lib/ActorDereferenceParse.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-dereference/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-hash-bindings/lib/ActorHashBindings.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-hash-bindings/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-http-invalidate/lib/ActorHttpInvalidate.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-http-invalidate/lib/ActorHttpInvalidateListenable.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-http-invalidate/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-http/lib/ActorHttp.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-http/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-init/lib/ActorInit.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-init/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-optimize-query-operation/lib/ActorOptimizeQueryOperation.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-optimize-query-operation/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-query-operation/lib/ActorQueryOperation.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-query-operation/lib/ActorQueryOperationTyped.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-query-operation/lib/ActorQueryOperationTypedMediated.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-query-operation/lib/Bindings.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-query-operation/lib/BusQueryOperation.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-query-operation/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-query-parse/lib/ActorQueryParse.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-query-parse/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-query-result-serialize/lib/ActorQueryResultSerialize.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-query-result-serialize/lib/ActorQueryResultSerializeFixedMediaTypes.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-query-result-serialize/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-join-entries-sort/lib/ActorRdfJoinEntriesSort.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-join-entries-sort/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-join-selectivity/lib/ActorRdfJoinSelectivity.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-join-selectivity/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-join/lib/ActorRdfJoin.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-join/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-metadata-extract/lib/ActorRdfMetadataExtract.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-metadata-extract/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-metadata/lib/ActorRdfMetadata.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-metadata/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-parse-html/lib/ActorRdfParseHtml.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-parse-html/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-parse/lib/ActorRdfParse.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-parse/lib/ActorRdfParseFixedMediaTypes.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-parse/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-hypermedia-links-queue/lib/ActorRdfResolveHypermediaLinksQueue.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-hypermedia-links-queue/lib/ILinkQueue.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-hypermedia-links-queue/lib/LinkQueueWrapper.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-hypermedia-links-queue/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-hypermedia-links/lib/ActorRdfResolveHypermediaLinks.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-hypermedia-links/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-hypermedia/lib/ActorRdfResolveHypermedia.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-hypermedia/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-quad-pattern/lib/ActorRdfResolveQuadPattern.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-quad-pattern/lib/ActorRdfResolveQuadPatternSource.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-quad-pattern/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-resolve-quad-pattern/lib/utils.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-serialize/lib/ActorRdfSerialize.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-serialize/lib/ActorRdfSerializeFixedMediaTypes.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-serialize/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-update-hypermedia/lib/ActorRdfUpdateHypermedia.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-update-hypermedia/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-update-quads/lib/ActorRdfUpdateQuads.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-update-quads/lib/ActorRdfUpdateQuadsDestination.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-update-quads/lib/IQuadDestination.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-update-quads/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/bus-rdf-update-quads/lib/utils.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/context-entries/lib/Keys.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/context-entries/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/core/lib/ActionContext.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/core/lib/ActionObserver.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/core/lib/Actor.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/core/lib/Bus.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/core/lib/BusIndexed.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/core/lib/ContextEntries.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/core/lib/Logger.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/core/lib/Mediator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/core/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/core/node_modules/immutable/dist/immutable.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/data-factory/lib/BlankNodeBindingsScoped.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/data-factory/lib/BlankNodeScoped.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/data-factory/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/logger-void/lib/LoggerVoid.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/logger-void/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-all/lib/MediatorAll.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-all/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-combine-pipeline/lib/MediatorCombinePipeline.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-combine-pipeline/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-combine-union/lib/MediatorCombineUnion.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-combine-union/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-join-coefficients-fixed/lib/MediatorJoinCoefficientsFixed.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-join-coefficients-fixed/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-number/lib/MediatorNumber.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-number/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-race/lib/MediatorRace.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/@comunica/mediator-race/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/JSONStream/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/abort-controller/browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/asyncjoin/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/asyncjoin/join/DynamicNestedLoopJoin.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/asyncjoin/join/HashJoin.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/asyncjoin/join/NestedLoopJoin.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/asyncjoin/join/SymmetricHashJoin.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/asyncjoin/util/MergeIterator.js","webpack://@comunica/query-sparql-reasoning/./.tmp-comunica-engine.js","webpack://@comunica/query-sparql-reasoning/ActorDereferenceConstantHylarOwl2rl.ts","webpack://@comunica/query-sparql-reasoning/index.ts","webpack://@comunica/query-sparql-reasoning/ActorDereferenceConstantHylarRdfs.ts","webpack://@comunica/query-sparql-reasoning/ActorDereferenceRuleParse.ts","webpack://@comunica/query-sparql-reasoning/ActorOptimizeRulePatternRestriction.ts","webpack://@comunica/query-sparql-reasoning/ActorOptimizeRuleRemoveFalseConclusion.ts","webpack://@comunica/query-sparql-reasoning/ActorRdfReasonRuleRestriction.ts","webpack://@comunica/query-sparql-reasoning/ActorRdfResolveQuadPatternInterceptReasoned.ts","webpack://@comunica/query-sparql-reasoning/ActorRdfUpdateQuadsInterceptReasoned.ts","webpack://@comunica/query-sparql-reasoning/ActorRuleParseHylar.ts","webpack://@comunica/query-sparql-reasoning/ActorRuleResolveHypermedia.ts","webpack://@comunica/query-sparql-reasoning/MediatedRuleSource.ts","webpack://@comunica/query-sparql-reasoning/ActorDereferenceRule.ts","webpack://@comunica/query-sparql-reasoning/ActorOptimizeRule.ts","webpack://@comunica/query-sparql-reasoning/ActorRdfReason.ts","webpack://@comunica/query-sparql-reasoning/ActorRdfReasonMediated.ts","webpack://@comunica/query-sparql-reasoning/ActorRdfResolveQuadPatternIntercept.ts","webpack://@comunica/query-sparql-reasoning/ActorRdfUpdateQuadsIntercept.ts","webpack://@comunica/query-sparql-reasoning/ActorRuleParse.ts","webpack://@comunica/query-sparql-reasoning/ActorRuleParseFixedMediaTypes.ts","webpack://@comunica/query-sparql-reasoning/ActorRuleResolve.ts","webpack://@comunica/query-sparql-reasoning/ActorRuleResolveSource.ts","webpack://@comunica/query-sparql-reasoning/../../node_modules/bignumber.js/bignumber.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/canonicalize/lib/canonicalize.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/cross-fetch/dist/browser-polyfill.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/dom-serializer/lib/foreignNames.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/dom-serializer/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/domelementtype/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/domhandler/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/domhandler/lib/node.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/domutils/lib/feeds.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/domutils/lib/helpers.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/domutils/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/domutils/lib/legacy.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/domutils/lib/manipulation.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/domutils/lib/querying.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/domutils/lib/stringify.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/domutils/lib/traversal.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/entities/lib/decode.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/entities/lib/decode_codepoint.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/entities/lib/encode.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/entities/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/event-emitter-promisify/dist/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/fast-deep-equal/es6/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/fetch-sparql-endpoint/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/fetch-sparql-endpoint/lib/SparqlEndpointFetcher.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/Converter.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/IConvertContext.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/IConvertSettings.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/Util.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerAdapter.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionAdapter.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionFragment.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDefinitionOperation.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerDocument.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionAdapter.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionField.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionFragmentSpread.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/NodeHandlerSelectionInlineFragment.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerAdapter.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerInclude.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerOptional.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerPlural.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerSingle.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/directivenode/DirectiveNodeHandlerSkip.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/directivenode/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerAdapter.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerBoolean.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerEnum.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerFloat.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerInt.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerList.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerNull.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerObject.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerString.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/valuenode/NodeValueHandlerVariable.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql-to-sparql/lib/handler/valuenode/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/error/GraphQLError.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/error/syntaxError.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/jsutils/defineInspect.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/jsutils/devAssert.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/jsutils/inspect.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/jsutils/instanceOf.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/jsutils/invariant.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/jsutils/isObjectLike.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/ast.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/blockString.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/directiveLocation.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/kinds.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/lexer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/location.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/parser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/predicates.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/printLocation.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/printer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/source.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/tokenKind.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/language/visitor.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/graphql/polyfills/symbols.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash/common.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash/hmac.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash/ripemd.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash/sha.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash/sha/1.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash/sha/224.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash/sha/256.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash/sha/384.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash/sha/512.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash/sha/common.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/hash.js/lib/hash/utils.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/htmlparser2/lib/FeedHandler.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/htmlparser2/lib/Parser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/htmlparser2/lib/Tokenizer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/htmlparser2/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/http-link-header/lib/link.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/inherits/inherits_browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/is-quad/dist/as.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/is-quad/dist/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/is-quad/dist/is.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/is-quad/dist/utils.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/is-stream/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-context-parser/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-context-parser/lib/ContextParser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-context-parser/lib/ErrorCoded.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-context-parser/lib/FetchDocumentLoader.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-context-parser/lib/IDocumentLoader.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-context-parser/lib/JsonLdContext.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-context-parser/lib/JsonLdContextNormalized.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-context-parser/lib/Util.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/ContextTree.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/JsonLdParser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/ParsingContext.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/Util.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/containerhandler/ContainerHandlerIdentifier.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/containerhandler/ContainerHandlerIndex.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/containerhandler/ContainerHandlerLanguage.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/containerhandler/ContainerHandlerType.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/EntryHandlerArrayValue.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/EntryHandlerContainer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/EntryHandlerInvalidFallback.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/EntryHandlerPredicate.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeyword.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordContext.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordGraph.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordId.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordIncluded.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordNest.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordType.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordUnknownFallback.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordValue.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-serializer/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-serializer/lib/JsonLdSerializer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-serializer/lib/SeparatorType.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonld-streaming-serializer/lib/Util.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/jsonparse/jsonparse.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/lru-cache/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/microdata-rdf-streaming-parser/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/microdata-rdf-streaming-parser/lib/IHtmlParseListener.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/microdata-rdf-streaming-parser/lib/IItemScope.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/microdata-rdf-streaming-parser/lib/IVocabRegistry.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/microdata-rdf-streaming-parser/lib/MicrodataRdfParser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/microdata-rdf-streaming-parser/lib/Util.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/microdata-rdf-streaming-parser/lib/propertyhandler/IItemPropertyHandler.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/microdata-rdf-streaming-parser/lib/propertyhandler/ItemPropertyHandlerContent.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/microdata-rdf-streaming-parser/lib/propertyhandler/ItemPropertyHandlerNumber.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/microdata-rdf-streaming-parser/lib/propertyhandler/ItemPropertyHandlerTime.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/microdata-rdf-streaming-parser/lib/propertyhandler/ItemPropertyHandlerUrl.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/minimalistic-assert/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/n3/src/IRIs.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/n3/src/N3Lexer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/n3/src/N3Util.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/n3/src/N3DataFactory.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/n3/src/N3Parser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/n3/src/N3Writer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/n3/src/N3Store.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/n3/src/N3StreamParser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/n3/src/N3StreamWriter.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/n3/src/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/promise-polyfill/Promise.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/queue-microtask/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-data-factory/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-data-factory/lib/BlankNode.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-data-factory/lib/DataFactory.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-data-factory/lib/DefaultGraph.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-data-factory/lib/Literal.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-data-factory/lib/NamedNode.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-data-factory/lib/Quad.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-data-factory/lib/Variable.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-isomorphic/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-isomorphic/lib/RdfIsomorphic.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-literal/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-literal/lib/ITypeHandler.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-literal/lib/Translator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-literal/lib/handler/TypeHandlerBoolean.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-literal/lib/handler/TypeHandlerDate.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-literal/lib/handler/TypeHandlerNumberDouble.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-literal/lib/handler/TypeHandlerNumberInteger.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-literal/lib/handler/TypeHandlerString.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-literal/lib/handler/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-store-stream/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-string-ttl/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-string-ttl/lib/TermUtil.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-string/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-string/lib/TermUtil.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-terms/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-terms/lib/QuadTermUtil.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdf-terms/lib/TermUtil.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdfa-streaming-parser/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdfa-streaming-parser/lib/IActiveTag.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdfa-streaming-parser/lib/IHtmlParseListener.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdfa-streaming-parser/lib/IRdfaPattern.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdfa-streaming-parser/lib/RdfaParser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdfa-streaming-parser/lib/RdfaProfile.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdfa-streaming-parser/lib/Util.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdfxml-streaming-parser/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdfxml-streaming-parser/lib/ParseError.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/rdfxml-streaming-parser/lib/RdfXmlParser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream-node-to-web/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/errors-browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/_stream_duplex.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/_stream_passthrough.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/_stream_readable.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/_stream_transform.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/_stream_writable.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/internal/streams/state.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-stream/readable-browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/readable-web-to-node-stream/lib/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/relative-to-absolute-iri/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/relative-to-absolute-iri/lib/Resolve.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/safe-buffer/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sax-stream/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sax-stream/lib/elem.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sax-stream/lib/xmlnode.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sax-stream/node_modules/debug/src/browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sax-stream/node_modules/debug/src/debug.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sax-stream/node_modules/ms/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sax/lib/sax.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/spark-md5/spark-md5.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlalgebrajs/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlalgebrajs/lib/algebra.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlalgebrajs/lib/factory.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlalgebrajs/lib/sparql.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlalgebrajs/lib/sparqlAlgebra.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlalgebrajs/lib/util.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/aggregators/Average.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/aggregators/BaseAggregator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/aggregators/Count.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/aggregators/GroupConcat.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/aggregators/Max.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/aggregators/Min.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/aggregators/Sample.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/aggregators/Sum.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/aggregators/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/evaluators/AggregateEvaluator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/evaluators/AsyncAggregateEvaluator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/evaluators/AsyncEvaluator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/evaluators/SyncEvaluator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/evaluators/evaluatorHelpers/AsyncRecursiveEvaluator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/evaluators/evaluatorHelpers/BaseAggregateEvaluator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/evaluators/evaluatorHelpers/BaseExpressionEvaluator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/evaluators/evaluatorHelpers/SyncRecursiveEvaluator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/expressions/Aggregate.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/expressions/AsyncExtension.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/expressions/Existence.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/expressions/Expressions.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/expressions/Named.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/expressions/Operator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/expressions/SpecialOperator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/expressions/SyncExtension.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/expressions/Term.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/expressions/Variable.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/expressions/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/functions/Core.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/functions/Helpers.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/functions/LegacyTree.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/functions/NamedFunctions.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/functions/OverloadTree.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/functions/RegularFunctions.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/functions/SpecialFunctions.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/functions/XPathFunctions.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/functions/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/transformers/AlgebraTransformer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/transformers/TermTransformer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/util/Consts.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/util/Errors.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/util/Ordering.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/util/Parsing.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/dist/lib/util/TypeHandling.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/rng.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/regex.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/validate.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/stringify.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/v1.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/parse.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/v35.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/md5.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/v3.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/v4.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/sha1.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/v5.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/nil.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlee/node_modules/uuid/dist/esm-browser/version.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqljs/lib/SparqlGenerator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqljs/lib/SparqlParser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqljs/lib/Wildcard.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqljs/sparql.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqljson-parse/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqljson-parse/lib/SparqlJsonBindingsTransformer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqljson-parse/lib/SparqlJsonParser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqljson-to-tree/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqljson-to-tree/lib/Converter.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlxml-parse/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlxml-parse/lib/SparqlXmlBindingsTransformer.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/sparqlxml-parse/lib/SparqlXmlParser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/stream-to-string/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/streamify-string/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/string_decoder/lib/string_decoder.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/through/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/uritemplate/bin/uritemplate.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/util-deprecate/browser.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/web-streams-node/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/web-streams-node/lib/conversions.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/web-streams-node/node_modules/is-stream/index.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/web-streams-ponyfill/dist/polyfill-ie11.min.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/xml/lib/escapeForXML.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/xml/lib/xml.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/yallist/iterator.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/yallist/yallist.js","webpack://@comunica/query-sparql-reasoning/../../packages/actor-rule-resolve-hypermedia/node_modules/lru-cache/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/available-typed-arrays/index.js","webpack://@comunica/query-sparql-reasoning/../../../../../.npm/_npx/7e910ea5e3b63978/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","webpack://@comunica/query-sparql-reasoning/../../node_modules/asynciterator/dist/asynciterator.cjs","webpack://@comunica/query-sparql-reasoning/../../node_modules/asynciterator/dist/linkedlist.cjs","webpack://@comunica/query-sparql-reasoning/../../node_modules/asynciterator/dist/taskscheduler.cjs","webpack://@comunica/query-sparql-reasoning/webpack/bootstrap","webpack://@comunica/query-sparql-reasoning/webpack/runtime/compat get default export","webpack://@comunica/query-sparql-reasoning/webpack/runtime/define property getters","webpack://@comunica/query-sparql-reasoning/webpack/runtime/global","webpack://@comunica/query-sparql-reasoning/webpack/runtime/hasOwnProperty shorthand","webpack://@comunica/query-sparql-reasoning/webpack/runtime/make namespace object","webpack://@comunica/query-sparql-reasoning/webpack/runtime/node module decorator","webpack://@comunica/query-sparql-reasoning/webpack/startup"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorAbstractMediaTyped = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * An abstract actor that handles media-typed actions.\n *\n * It splits up a action between a 'handle' and a 'mediaTypes' action.\n * A 'mediaTypes' action is used to retrieve the available media types from this actor.\n * A 'handle' action is abstract, and can be implemented to do anything,\n * such as parsing, serializing, etc.\n * @see IActionAbstractMediaTyped\n *\n * @see ActorAbstractMediaTypedFixed\n */\nclass ActorAbstractMediaTyped extends core_1.Actor {\n constructor(args) {\n super(args);\n }\n async run(action) {\n if ('handle' in action) {\n const typedAction = action;\n return { handle: await this.runHandle(typedAction.handle, typedAction.handleMediaType, action.context) };\n }\n if ('mediaTypes' in action) {\n return { mediaTypes: await this.getMediaTypes(action.context) };\n }\n if ('mediaTypeFormats' in action) {\n return { mediaTypeFormats: await this.getMediaTypeFormats(action.context) };\n }\n throw new Error('Either a handle, mediaTypes or mediaTypeFormats action needs to be provided');\n }\n async test(action) {\n if ('handle' in action) {\n const typedAction = action;\n return { handle: await this.testHandle(typedAction.handle, typedAction.handleMediaType, action.context) };\n }\n if ('mediaTypes' in action) {\n return { mediaTypes: await this.testMediaType(action.context) };\n }\n if ('mediaTypeFormats' in action) {\n return { mediaTypeFormats: await this.testMediaTypeFormats(action.context) };\n }\n throw new Error('Either a handle, mediaTypes or mediaTypeFormats action needs to be provided');\n }\n}\nexports.ActorAbstractMediaTyped = ActorAbstractMediaTyped;\n//# sourceMappingURL=ActorAbstractMediaTyped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorAbstractMediaTypedFixed = void 0;\nconst ActorAbstractMediaTyped_1 = require(\"./ActorAbstractMediaTyped\");\nclass ActorAbstractMediaTypedFixed extends ActorAbstractMediaTyped_1.ActorAbstractMediaTyped {\n constructor(args) {\n super(args);\n const scale = this.priorityScale || this.priorityScale === 0 ? this.priorityScale : 1;\n if (this.mediaTypePriorities) {\n Object.entries(this.mediaTypePriorities).forEach(([key, value], index) => {\n this.mediaTypePriorities[key] = scale * value;\n });\n }\n this.mediaTypePriorities = Object.freeze(this.mediaTypePriorities);\n this.mediaTypeFormats = Object.freeze(this.mediaTypeFormats);\n }\n async testHandle(action, mediaType, context) {\n if (!(mediaType in this.mediaTypePriorities)) {\n throw new Error(`Unrecognized media type: ${mediaType}`);\n }\n return await this.testHandleChecked(action, context);\n }\n async testMediaType(context) {\n return true;\n }\n async getMediaTypes(context) {\n return this.mediaTypePriorities;\n }\n async testMediaTypeFormats(context) {\n return true;\n }\n async getMediaTypeFormats(context) {\n return this.mediaTypeFormats;\n }\n}\nexports.ActorAbstractMediaTypedFixed = ActorAbstractMediaTypedFixed;\n//# sourceMappingURL=ActorAbstractMediaTypedFixed.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorAbstractMediaTyped\"), exports);\n__exportStar(require(\"./ActorAbstractMediaTypedFixed\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttpProxy = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * A comunica Proxy Http Actor.\n */\nclass ActorHttpProxy extends bus_http_1.ActorHttp {\n constructor(args) {\n super(args);\n }\n async test(action) {\n const proxyHandler = action.context.get(context_entries_1.KeysHttpProxy.httpProxyHandler);\n if (!proxyHandler) {\n throw new Error(`Actor ${this.name} could not find a proxy handler in the context.`);\n }\n if (!await proxyHandler.getProxy(action)) {\n throw new Error(`Actor ${this.name} could not determine a proxy for the given request.`);\n }\n return { time: Number.POSITIVE_INFINITY };\n }\n async run(action) {\n const requestedUrl = typeof action.input === 'string' ? action.input : action.input.url;\n const proxyHandler = action.context.get(context_entries_1.KeysHttpProxy.httpProxyHandler);\n // Send a request for the modified request\n const output = await this.mediatorHttp.mediate({\n ...await proxyHandler.getProxy(action),\n context: action.context.delete(context_entries_1.KeysHttpProxy.httpProxyHandler),\n });\n // Modify the response URL\n // use defineProperty to allow modification of unmodifiable objects\n Object.defineProperty(output, 'url', {\n configurable: true,\n enumerable: true,\n get: () => output.headers.get('x-final-url') ?? requestedUrl,\n });\n return output;\n }\n}\nexports.ActorHttpProxy = ActorHttpProxy;\n//# sourceMappingURL=ActorHttpProxy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyHandlerStatic = void 0;\n/**\n * A proxy handler that prefixes all URLs with a given string.\n */\nclass ProxyHandlerStatic {\n constructor(prefixUrl) {\n this.prefixUrl = prefixUrl;\n }\n async getProxy(request) {\n return {\n init: request.init,\n input: this.modifyInput(request.input),\n };\n }\n modifyInput(input) {\n if (typeof input === 'string') {\n return this.prefixUrl + input;\n }\n return new Request(this.prefixUrl + input.url, input);\n }\n}\nexports.ProxyHandlerStatic = ProxyHandlerStatic;\n//# sourceMappingURL=ProxyHandlerStatic.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttpProxy\"), exports);\n__exportStar(require(\"./ProxyHandlerStatic\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorInitQuery = void 0;\n/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nconst ActorInitQueryBase_1 = require(\"./ActorInitQueryBase\");\nclass ActorInitQuery extends ActorInitQueryBase_1.ActorInitQueryBase {\n}\nexports.ActorInitQuery = ActorInitQuery;\n//# sourceMappingURL=ActorInitQuery-browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorInitQueryBase = void 0;\nconst bus_init_1 = require(\"@comunica/bus-init\");\n/**\n * A browser-safe comunica Query Init Actor.\n */\nclass ActorInitQueryBase extends bus_init_1.ActorInit {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n throw new Error('ActorInitSparql#run is not supported in the browser.');\n }\n}\nexports.ActorInitQueryBase = ActorInitQueryBase;\n//# sourceMappingURL=ActorInitQueryBase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MemoryPhysicalQueryPlanLogger = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * A physical query plan logger that stores everything in memory.\n */\nclass MemoryPhysicalQueryPlanLogger {\n constructor() {\n this.children = new Map();\n }\n logOperation(logicalOperator, physicalOperator, node, parentNode, actor, metadata) {\n const planNode = {\n actor,\n logicalOperator,\n physicalOperator,\n rawNode: node,\n children: [],\n metadata,\n };\n this.children.set(node, planNode.children);\n if (!this.rootNode) {\n if (parentNode) {\n throw new Error(`No root node has been set yet, while a parent is being referenced`);\n }\n this.rootNode = planNode;\n }\n else {\n if (!parentNode) {\n throw new Error(`Detected more than one parent-less node`);\n }\n const children = this.children.get(parentNode);\n if (!children) {\n throw new Error(`Could not find parent node`);\n }\n children.push(planNode);\n }\n }\n toJson() {\n return this.rootNode ? this.planNodeToJson(this.rootNode) : {};\n }\n planNodeToJson(node) {\n return {\n logical: node.logicalOperator,\n physical: node.physicalOperator,\n ...this.getLogicalMetadata(node.rawNode),\n ...node.metadata,\n ...node.children.length > 0 ? { children: node.children.map(child => this.planNodeToJson(child)) } : {},\n };\n }\n getLogicalMetadata(rawNode) {\n if ('type' in rawNode) {\n const operation = rawNode;\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (operation.type) {\n case 'pattern':\n return {\n pattern: this.quadToString(operation),\n };\n case 'project':\n return {\n variables: operation.variables.map(variable => variable.value),\n };\n }\n }\n return {};\n }\n quadToString(quad) {\n return `${(0, rdf_string_1.termToString)(quad.subject)} ${(0, rdf_string_1.termToString)(quad.predicate)} ${(0, rdf_string_1.termToString)(quad.object)}${quad.graph.termType === 'DefaultGraph' ? '' : ` ${(0, rdf_string_1.termToString)(quad.graph)}`}`;\n }\n}\nexports.MemoryPhysicalQueryPlanLogger = MemoryPhysicalQueryPlanLogger;\n//# sourceMappingURL=MemoryPhysicalQueryPlanLogger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueryEngineBase = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst MemoryPhysicalQueryPlanLogger_1 = require(\"./MemoryPhysicalQueryPlanLogger\");\n/**\n * Base implementation of a Comunica query engine.\n */\nclass QueryEngineBase {\n constructor(actorInitQuery) {\n this.actorInitQuery = actorInitQuery;\n }\n async queryBindings(query, context) {\n return this.queryOfType(query, context, 'bindings');\n }\n async queryQuads(query, context) {\n return this.queryOfType(query, context, 'quads');\n }\n async queryBoolean(query, context) {\n return this.queryOfType(query, context, 'boolean');\n }\n async queryVoid(query, context) {\n return this.queryOfType(query, context, 'void');\n }\n async queryOfType(query, context, expectedType) {\n const result = await this.query(query, context);\n if (result.resultType === expectedType) {\n return result.execute();\n }\n throw new Error(`Query result type '${expectedType}' was expected, while '${result.resultType}' was found.`);\n }\n /**\n * Evaluate the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to the query output.\n */\n async query(query, context) {\n const output = await this.queryOrExplain(query, context);\n if ('explain' in output) {\n throw new Error(`Tried to explain a query when in query-only mode`);\n }\n return output;\n }\n /**\n * Explain the given query\n * @param {string | Algebra.Operation} query A query string or algebra.\n * @param context An optional query context.\n * @param explainMode The explain mode.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n async explain(query, context, explainMode) {\n context.explain = explainMode;\n const output = await this.queryOrExplain(query, context);\n return output;\n }\n /**\n * Evaluate or explain the given query\n * @param {string | Algebra.Operation} query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n async queryOrExplain(query, context) {\n context = context || {};\n // Expand shortcuts\n for (const key in context) {\n if (this.actorInitQuery.contextKeyShortcuts[key]) {\n context[this.actorInitQuery.contextKeyShortcuts[key]] = context[key];\n delete context[key];\n }\n }\n // Prepare context\n let actionContext = new core_1.ActionContext(context);\n let queryFormat = { language: 'sparql', version: '1.1' };\n if (actionContext.has(context_entries_1.KeysInitQuery.queryFormat)) {\n queryFormat = actionContext.get(context_entries_1.KeysInitQuery.queryFormat);\n actionContext = actionContext.delete(context_entries_1.KeysInitQuery.queryFormat);\n if (queryFormat.language === 'graphql') {\n actionContext = actionContext.setDefault(context_entries_1.KeysInitQuery.graphqlSingularizeVariables, {});\n }\n }\n const baseIRI = actionContext.get(context_entries_1.KeysInitQuery.baseIRI);\n actionContext = actionContext\n .setDefault(context_entries_1.KeysInitQuery.queryTimestamp, new Date())\n .setDefault(context_entries_1.KeysRdfResolveQuadPattern.sourceIds, new Map())\n // Set the default logger if none is provided\n .setDefault(context_entries_1.KeysCore.log, this.actorInitQuery.logger);\n // Pre-processing the context\n actionContext = (await this.actorInitQuery.mediatorContextPreprocess.mediate({ context: actionContext })).context;\n // Determine explain mode\n const explainMode = actionContext.get(context_entries_1.KeysInitQuery.explain);\n // Parse query\n let operation;\n if (typeof query === 'string') {\n // Save the original query string in the context\n actionContext = actionContext.set(context_entries_1.KeysInitQuery.queryString, query);\n const queryParseOutput = await this.actorInitQuery.mediatorQueryParse\n .mediate({ context: actionContext, query, queryFormat, baseIRI });\n operation = queryParseOutput.operation;\n // Update the baseIRI in the context if the query modified it.\n if (queryParseOutput.baseIRI) {\n actionContext = actionContext.set(context_entries_1.KeysInitQuery.baseIRI, queryParseOutput.baseIRI);\n }\n }\n else {\n operation = query;\n }\n // Print parsed query\n if (explainMode === 'parsed') {\n return {\n explain: true,\n type: explainMode,\n data: operation,\n };\n }\n // Apply initial bindings in context\n if (actionContext.has(context_entries_1.KeysInitQuery.initialBindings)) {\n operation = (0, bus_query_operation_1.materializeOperation)(operation, actionContext.get(context_entries_1.KeysInitQuery.initialBindings));\n // Delete the query string from the context, since our initial query might have changed\n actionContext = actionContext.delete(context_entries_1.KeysInitQuery.queryString);\n }\n // Optimize the query operation\n const mediatorResult = await this.actorInitQuery.mediatorOptimizeQueryOperation\n .mediate({ context: actionContext, operation });\n operation = mediatorResult.operation;\n actionContext = mediatorResult.context || actionContext;\n // Print logical query plan\n if (explainMode === 'logical') {\n return {\n explain: true,\n type: explainMode,\n data: operation,\n };\n }\n // Save original query in context\n actionContext = actionContext.set(context_entries_1.KeysInitQuery.query, operation);\n // If we need a physical query plan, store a physical query plan logger in the context, and collect it after exec\n let physicalQueryPlanLogger;\n if (explainMode === 'physical') {\n physicalQueryPlanLogger = new MemoryPhysicalQueryPlanLogger_1.MemoryPhysicalQueryPlanLogger();\n actionContext = actionContext.set(context_entries_1.KeysInitQuery.physicalQueryPlanLogger, physicalQueryPlanLogger);\n }\n // Execute query\n const output = await this.actorInitQuery.mediatorQueryOperation.mediate({\n context: actionContext,\n operation,\n });\n output.context = actionContext;\n const finalOutput = QueryEngineBase.internalToFinalResult(output);\n // Output physical query plan after query exec if needed\n if (physicalQueryPlanLogger) {\n // Make sure the whole result is produced\n switch (finalOutput.resultType) {\n case 'bindings':\n await (await finalOutput.execute()).toArray();\n break;\n case 'quads':\n await (await finalOutput.execute()).toArray();\n break;\n case 'boolean':\n await finalOutput.execute();\n break;\n case 'void':\n await finalOutput.execute();\n break;\n }\n return {\n explain: true,\n type: explainMode,\n data: physicalQueryPlanLogger.toJson(),\n };\n }\n return finalOutput;\n }\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL (weighted) result media types.\n */\n async getResultMediaTypes(context) {\n context = core_1.ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeCombiner\n .mediate({ context, mediaTypes: true })).mediaTypes;\n }\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL result media type formats.\n */\n async getResultMediaTypeFormats(context) {\n context = core_1.ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeFormatCombiner\n .mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n /**\n * Convert a query result to a string stream based on a certain media type.\n * @param {IQueryOperationResult} queryResult A query result.\n * @param {string} mediaType A media type.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A text stream.\n */\n async resultToString(queryResult, mediaType, context) {\n context = core_1.ActionContext.ensureActionContext(context);\n if (!mediaType) {\n switch (queryResult.resultType) {\n case 'bindings':\n mediaType = 'application/json';\n break;\n case 'quads':\n mediaType = 'application/trig';\n break;\n default:\n mediaType = 'simple';\n break;\n }\n }\n const handle = { ...await QueryEngineBase.finalToInternalResult(queryResult), context };\n return (await this.actorInitQuery.mediatorQueryResultSerialize\n .mediate({ context, handle, handleMediaType: mediaType })).handle;\n }\n /**\n * Invalidate all internal caches related to the given page URL.\n * If no page URL is given, then all pages will be invalidated.\n * @param {string} url The page URL to invalidate.\n * @param context An optional ActionContext to pass to the actors.\n * @return {Promise} A promise resolving when the caches have been invalidated.\n */\n invalidateHttpCache(url, context) {\n context = core_1.ActionContext.ensureActionContext(context);\n return this.actorInitQuery.mediatorHttpInvalidate.mediate({ url, context });\n }\n /**\n * Convert an internal query result to a final one.\n * @param internalResult An intermediary query result.\n */\n static internalToFinalResult(internalResult) {\n switch (internalResult.type) {\n case 'bindings':\n return {\n resultType: 'bindings',\n execute: async () => internalResult.bindingsStream,\n metadata: async () => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'quads':\n return {\n resultType: 'quads',\n execute: async () => internalResult.quadStream,\n metadata: async () => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'boolean':\n return {\n resultType: 'boolean',\n execute: async () => internalResult.execute(),\n context: internalResult.context,\n };\n case 'void':\n return {\n resultType: 'void',\n execute: async () => internalResult.execute(),\n context: internalResult.context,\n };\n }\n }\n /**\n * Convert a final query result to an internal one.\n * @param finalResult A final query result.\n */\n static async finalToInternalResult(finalResult) {\n switch (finalResult.resultType) {\n case 'bindings':\n return {\n type: 'bindings',\n bindingsStream: await finalResult.execute(),\n metadata: async () => await finalResult.metadata(),\n };\n case 'quads':\n return {\n type: 'quads',\n quadStream: await finalResult.execute(),\n metadata: async () => await finalResult.metadata(),\n };\n case 'boolean':\n return {\n type: 'boolean',\n execute: () => finalResult.execute(),\n };\n case 'void':\n return {\n type: 'void',\n execute: () => finalResult.execute(),\n };\n }\n }\n}\nexports.QueryEngineBase = QueryEngineBase;\n//# sourceMappingURL=QueryEngineBase.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueryEngineBase = void 0;\n/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\n__exportStar(require(\"./ActorInitQueryBase\"), exports);\n__exportStar(require(\"./ActorInitQuery-browser\"), exports);\nvar QueryEngineBase_1 = require(\"./QueryEngineBase\");\nObject.defineProperty(exports, \"QueryEngineBase\", { enumerable: true, get: function () { return QueryEngineBase_1.QueryEngineBase; } });\n//# sourceMappingURL=index-browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeTree = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_query_result_serialize_1 = require(\"@comunica/bus-query-result-serialize\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst sparqljson_to_tree_1 = require(\"sparqljson-to-tree\");\n/**\n * A comunica Tree Query Result Serialize Actor.\n */\nclass ActorQueryResultSerializeTree extends bus_query_result_serialize_1.ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{ \"tree\": 0.5 }} mediaTypePriorities\n * \\ @defaultNested {{ \"tree\": \"https://comunica.linkeddatafragments.org/#results_tree\" }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n /**\n *\n * @param {BindingsStream} bindingsStream\n * @param context\n * @param {IConverterSettings} converterSettings\n * @return {Promise}\n */\n static bindingsStreamToGraphQl(bindingsStream, context, converterSettings) {\n const actionContext = core_1.ActionContext.ensureActionContext(context);\n return new Promise((resolve, reject) => {\n const bindingsArray = [];\n const converter = new sparqljson_to_tree_1.Converter(converterSettings);\n const schema = {\n singularizeVariables: actionContext.get(context_entries_1.KeysInitQuery.graphqlSingularizeVariables) || {},\n };\n bindingsStream.on('error', reject);\n bindingsStream.on('data', (bindings) => {\n bindingsArray.push(Object.fromEntries([...bindings]\n .map(([key, value]) => [key.value, value])));\n });\n bindingsStream.on('end', () => {\n resolve(converter.bindingsToTree(bindingsArray, schema));\n });\n });\n }\n async testHandleChecked(action) {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n async runHandle(action, mediaType) {\n const data = new stream_1.Readable();\n data._read = () => {\n // Do nothing\n };\n const resultStream = action.bindingsStream;\n resultStream.on('error', error => data.emit('error', error));\n ActorQueryResultSerializeTree.bindingsStreamToGraphQl(resultStream, action.context, { materializeRdfJsTerms: true })\n .then((result) => {\n data.push(JSON.stringify(result, null, ' '));\n data.push(null);\n })\n .catch(error => data.emit('error', error));\n return { data };\n }\n}\nexports.ActorQueryResultSerializeTree = ActorQueryResultSerializeTree;\n//# sourceMappingURL=ActorQueryResultSerializeTree.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindingsStreamToGraphQl = void 0;\n__exportStar(require(\"./ActorQueryResultSerializeTree\"), exports);\nconst ActorQueryResultSerializeTree_1 = require(\"./ActorQueryResultSerializeTree\");\nconst { bindingsStreamToGraphQl } = ActorQueryResultSerializeTree_1.ActorQueryResultSerializeTree;\nexports.bindingsStreamToGraphQl = bindingsStreamToGraphQl;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bindings = void 0;\nconst immutable_1 = require(\"immutable\");\nconst bindingsToString_1 = require(\"./bindingsToString\");\n/**\n * An immutable.js-based Bindings object.\n */\nclass Bindings {\n constructor(dataFactory, entries) {\n this.type = 'bindings';\n this.dataFactory = dataFactory;\n this.entries = entries;\n }\n has(key) {\n return this.entries.has(typeof key === 'string' ? key : key.value);\n }\n get(key) {\n return this.entries.get(typeof key === 'string' ? key : key.value);\n }\n set(key, value) {\n return new Bindings(this.dataFactory, this.entries.set(typeof key === 'string' ? key : key.value, value));\n }\n delete(key) {\n return new Bindings(this.dataFactory, this.entries.delete(typeof key === 'string' ? key : key.value));\n }\n keys() {\n return this.mapIterable(this.iteratorToIterable(this.entries.keys()), key => this.dataFactory.variable(key));\n }\n values() {\n return this.iteratorToIterable(this.entries.values());\n }\n forEach(fn) {\n this.entries.forEach((value, key) => fn(value, this.dataFactory.variable(key)));\n }\n get size() {\n return this.entries.size;\n }\n [Symbol.iterator]() {\n return this.mapIterable(this.iteratorToIterable(this.entries.entries()), ([key, value]) => [this.dataFactory.variable(key), value])[Symbol.iterator]();\n }\n equals(other) {\n if (!other) {\n return false;\n }\n if (this === other) {\n return true;\n }\n // First check if size is equal\n if (this.size !== other.size) {\n return false;\n }\n // Then check if keys and values are equal\n for (const key of this.keys()) {\n if (!this.get(key)?.equals(other.get(key))) {\n return false;\n }\n }\n return true;\n }\n filter(fn) {\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(this.entries\n .filter((value, key) => fn(value, this.dataFactory.variable(key)))));\n }\n map(fn) {\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(this.entries\n .map((value, key) => fn(value, this.dataFactory.variable(key)))));\n }\n merge(other) {\n // Determine the union of keys\n const keys = new Set([\n ...this.iteratorToIterable(this.entries.keys()),\n ...[...other.keys()].map(key => key.value),\n ]);\n // Collect entries\n const entries = [];\n for (const key of keys) {\n const left = this.entries.get(key);\n const right = other.get(this.dataFactory.variable(key));\n if (left && right && !left.equals(right)) {\n return;\n }\n const value = left || right;\n entries.push([key, value]);\n }\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(entries));\n }\n mergeWith(merger, other) {\n // Determine the union of keys\n const keys = new Set([\n ...this.iteratorToIterable(this.entries.keys()),\n ...[...other.keys()].map(key => key.value),\n ]);\n // Collect entries\n const entries = [];\n for (const key of keys) {\n const variable = this.dataFactory.variable(key);\n const left = this.entries.get(key);\n const right = other.get(variable);\n let value;\n if (left && right && !left.equals(right)) {\n value = merger(left, right, variable);\n }\n else {\n value = left || right;\n }\n entries.push([key, value]);\n }\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(entries));\n }\n toString() {\n return (0, bindingsToString_1.bindingsToString)(this);\n }\n *mapIterable(iterable, callback) {\n for (const x of iterable) {\n // eslint-disable-next-line callback-return\n yield callback(x);\n }\n }\n iteratorToIterable(iterator) {\n return {\n [Symbol.iterator]: () => iterator,\n };\n }\n}\nexports.Bindings = Bindings;\n//# sourceMappingURL=Bindings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingsFactory = void 0;\nconst immutable_1 = require(\"immutable\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst Bindings_1 = require(\"./Bindings\");\n/**\n * A Bindings factory that provides Bindings backed by immutable.js.\n */\nclass BindingsFactory {\n constructor(dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.dataFactory = dataFactory;\n }\n bindings(entries = []) {\n return new Bindings_1.Bindings(this.dataFactory, (0, immutable_1.Map)(entries.map(([key, value]) => [key.value, value])));\n }\n fromBindings(bindings) {\n return this.bindings([...bindings]);\n }\n fromRecord(record) {\n return this.bindings(Object.entries(record).map(([key, value]) => [this.dataFactory.variable(key), value]));\n }\n}\nexports.BindingsFactory = BindingsFactory;\n//# sourceMappingURL=BindingsFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindingsToString = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * Stringify a bindings object.\n * @param bindings A bindings object.\n */\nfunction bindingsToString(bindings) {\n const raw = {};\n for (const key of bindings.keys()) {\n raw[key.value] = (0, rdf_string_1.termToString)(bindings.get(key));\n }\n return JSON.stringify(raw, null, ' ');\n}\nexports.bindingsToString = bindingsToString;\n//# sourceMappingURL=bindingsToString.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Bindings\"), exports);\n__exportStar(require(\"./BindingsFactory\"), exports);\n__exportStar(require(\"./bindingsToString\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttp = void 0;\nconst core_1 = require(\"@comunica/core\");\nconst readable_web_to_node_stream_1 = require(\"readable-web-to-node-stream\");\nconst isStream = require('is-stream');\nconst toWebReadableStream = require('web-streams-node').toWebReadableStream;\n/**\n * A base actor for listening to HTTP events.\n *\n * Actor types:\n * * Input: IActionHttp: The HTTP request.\n * * Test: IActorHttpTest: An estimate for the response time.\n * * Output: IActorHttpOutput: The HTTP response.\n *\n * @see IActionHttp\n * @see IActorHttpTest\n * @see IActorHttpOutput\n */\nclass ActorHttp extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Converts WhatWG streams to Node streams if required.\n * Returns the input in case the stream already is a Node stream.\n * @param {ReadableStream} body\n * @returns {NodeJS.ReadableStream}\n */\n static toNodeReadable(body) {\n return isStream(body) || body === null ?\n body :\n new readable_web_to_node_stream_1.ReadableWebToNodeStream(body);\n }\n /**\n * Converts Node streams to WhatWG streams.\n * @param {NodeJS.ReadableStream} body\n * @returns {ReadableStream}\n */\n static toWebReadableStream(body) {\n return toWebReadableStream(body);\n }\n /**\n * Convert the given headers object into a raw hash.\n * @param headers A headers object.\n */\n static headersToHash(headers) {\n const hash = {};\n headers.forEach((value, key) => {\n hash[key] = value;\n });\n return hash;\n }\n}\nexports.ActorHttp = ActorHttp;\n//# sourceMappingURL=ActorHttp.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttp\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorInit = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A base actor for listening to init events.\n *\n * Actor types:\n * * Input: IActionInit: Contains process information\n * such as the list of arguments,\n * environment variables and input stream.\n * * Test: \n * * Output: IActorOutputInit: Contains process output streams.\n *\n * @see IActionInit\n */\nclass ActorInit extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorInit = ActorInit;\n//# sourceMappingURL=ActorInit.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorInit\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperation = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst data_factory_1 = require(\"@comunica/data-factory\");\nconst Bindings_1 = require(\"./Bindings\");\n/**\n * A counter that keeps track blank node generated through BNODE() SPARQL\n * expressions.\n *\n * @type {number}\n */\nlet bnodeCounter = 0;\n/**\n * A comunica actor for query-operation events.\n *\n * Actor types:\n * * Input: IActionQueryOperation: A SPARQL Algebra operation.\n * * Test: \n * * Output: IActorQueryOperationOutput: A bindings stream.\n *\n * @see IActionQueryOperation\n * @see IQueryOperationResult\n */\nclass ActorQueryOperation extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Safely cast a query operation output to a bindings output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBindings} A bindings query operation output.\n */\n static getSafeBindings(output) {\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n return output;\n }\n /**\n * Safely cast a query operation output to a quads output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultQuads} A quads query operation output.\n */\n static getSafeQuads(output) {\n ActorQueryOperation.validateQueryOutput(output, 'quads');\n return output;\n }\n /**\n * Safely cast a query operation output to a boolean output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBoolean} A boolean query operation output.\n */\n static getSafeBoolean(output) {\n ActorQueryOperation.validateQueryOutput(output, 'boolean');\n return output;\n }\n /**\n * Safely cast a query operation output to a void output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultVoid} A void query operation output.\n */\n static getSafeVoid(output) {\n ActorQueryOperation.validateQueryOutput(output, 'void');\n return output;\n }\n /**\n * Convert a metadata callback to a lazy callback where the response value is cached.\n * @param {() => Promise} metadata A metadata callback\n * @return {() => Promise<{[p: string]: any}>} The callback where the response will be cached.\n */\n static cachifyMetadata(metadata) {\n let lastReturn;\n // eslint-disable-next-line no-return-assign,@typescript-eslint/no-misused-promises\n return () => (lastReturn || (lastReturn = metadata()));\n }\n /**\n * Throw an error if the output type does not match the expected type.\n * @param {IQueryOperationResult} output A query operation output.\n * @param {string} expectedType The expected output type.\n */\n static validateQueryOutput(output, expectedType) {\n if (output.type !== expectedType) {\n throw new Error(`Invalid query output type: Expected '${expectedType}' but got '${output.type}'`);\n }\n }\n static getBaseExpressionContext(context) {\n const now = context.get(context_entries_1.KeysInitQuery.queryTimestamp);\n const baseIRI = context.get(context_entries_1.KeysInitQuery.baseIRI);\n // Handle two variants of providing extension functions\n if (context.has(context_entries_1.KeysInitQuery.extensionFunctionCreator) && context.has(context_entries_1.KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n let extensionFunctionCreator = context\n .get(context_entries_1.KeysInitQuery.extensionFunctionCreator);\n // Convert dictionary-based variant to callback\n const extensionFunctions = context\n .get(context_entries_1.KeysInitQuery.extensionFunctions);\n if (extensionFunctions) {\n extensionFunctionCreator = functionNamedNode => extensionFunctions[functionNamedNode.value];\n }\n return { now, baseIRI, extensionFunctionCreator };\n }\n /**\n * Create an options object that can be used to construct a sparqlee synchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n static getExpressionContext(context, mediatorQueryOperation) {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input) => new data_factory_1.BlankNodeBindingsScoped(input || `BNODE_${bnodeCounter++}`),\n };\n }\n /**\n * Create an options object that can be used to construct a sparqlee asynchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n static getAsyncExpressionContext(context, mediatorQueryOperation) {\n const expressionContext = {\n ...this.getBaseExpressionContext(context),\n bnode: (input) => Promise.resolve(new data_factory_1.BlankNodeBindingsScoped(input || `BNODE_${bnodeCounter++}`)),\n };\n if (mediatorQueryOperation) {\n expressionContext.exists = ActorQueryOperation.createExistenceResolver(context, mediatorQueryOperation);\n }\n return expressionContext;\n }\n /**\n * Create an existence resolver for usage within an expression context.\n * @param context An action context.\n * @param mediatorQueryOperation A query operation mediator.\n */\n static createExistenceResolver(context, mediatorQueryOperation) {\n return async (expr, bindings) => {\n const operation = (0, Bindings_1.materializeOperation)(expr.input, bindings);\n const outputRaw = await mediatorQueryOperation.mediate({ operation, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n return new Promise((resolve, reject) => {\n output.bindingsStream.on('end', () => {\n resolve(false);\n });\n output.bindingsStream.on('error', reject);\n output.bindingsStream.on('data', () => {\n output.bindingsStream.close();\n resolve(true);\n });\n })\n .then((exists) => expr.not ? !exists : exists);\n };\n }\n /**\n * Throw an error if the context contains the readOnly flag.\n * @param context An action context.\n */\n static throwOnReadOnly(context) {\n if (context.get(context_entries_1.KeysQueryOperation.readOnly)) {\n throw new Error(`Attempted a write operation in read-only mode`);\n }\n }\n}\nexports.ActorQueryOperation = ActorQueryOperation;\n//# sourceMappingURL=ActorQueryOperation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationTyped = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst ActorQueryOperation_1 = require(\"./ActorQueryOperation\");\n/**\n * A base implementation for query operation actors for a specific operation type.\n */\nclass ActorQueryOperationTyped extends ActorQueryOperation_1.ActorQueryOperation {\n constructor(args, operationName) {\n super({ ...args, operationName });\n if (!this.operationName) {\n throw new Error('A valid \"operationName\" argument must be provided.');\n }\n }\n async test(action) {\n if (!action.operation) {\n throw new Error('Missing field \\'operation\\' in a query operation action.');\n }\n if (action.operation.type !== this.operationName) {\n throw new Error(`Actor ${this.name} only supports ${this.operationName} operations, but got ${action.operation.type}`);\n }\n const operation = action.operation;\n return this.testOperation(operation, action.context);\n }\n async run(action) {\n // Log to physical plan\n const physicalQueryPlanLogger = action.context\n .get(context_entries_1.KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(action.operation.type, undefined, action.operation, action.context.get(context_entries_1.KeysInitQuery.physicalQueryPlanNode), this.name, {});\n action.context = action.context.set(context_entries_1.KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n const operation = action.operation;\n const subContext = action.context.set(context_entries_1.KeysQueryOperation.operation, operation);\n const output = await this.runOperation(operation, subContext);\n if ('metadata' in output) {\n output.metadata = ActorQueryOperation_1.ActorQueryOperation\n .cachifyMetadata(output.metadata);\n }\n return output;\n }\n}\nexports.ActorQueryOperationTyped = ActorQueryOperationTyped;\n//# sourceMappingURL=ActorQueryOperationTyped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationTypedMediated = void 0;\nconst ActorQueryOperationTyped_1 = require(\"./ActorQueryOperationTyped\");\n/**\n * A base implementation for query operation actors for a specific operation type that have a query operation mediator.\n */\nclass ActorQueryOperationTypedMediated extends ActorQueryOperationTyped_1.ActorQueryOperationTyped {\n constructor(args, operationName) {\n super(args, operationName);\n }\n}\nexports.ActorQueryOperationTypedMediated = ActorQueryOperationTypedMediated;\n//# sourceMappingURL=ActorQueryOperationTypedMediated.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.materializeOperation = exports.materializeTerm = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * Materialize a term with the given binding.\n *\n * If the given term is a variable,\n * and that variable exist in the given bindings object,\n * the value of that binding is returned.\n * In all other cases, the term itself is returned.\n *\n * @param {RDF.Term} term A term.\n * @param {Bindings} bindings A bindings object.\n * @return {RDF.Term} The materialized term.\n */\nfunction materializeTerm(term, bindings) {\n if (term.termType === 'Variable') {\n const value = bindings.get(term);\n if (value) {\n return value;\n }\n }\n return term;\n}\nexports.materializeTerm = materializeTerm;\n/**\n * Materialize the given operation (recursively) with the given bindings.\n * Essentially, all variables in the given operation will be replaced\n * by the terms bound to the variables in the given bindings.\n * @param {Operation} operation SPARQL algebra operation.\n * @param {Bindings} bindings A bindings object.\n * @param options Options for materializations.\n * @return Algebra.Operation A new operation materialized with the given bindings.\n */\nfunction materializeOperation(operation, bindings, options = {}) {\n options = {\n strictTargetVariables: 'strictTargetVariables' in options ? options.strictTargetVariables : false,\n bindFilter: 'bindFilter' in options ? options.bindFilter : true,\n };\n return sparqlalgebrajs_1.Util.mapOperation(operation, {\n path(op, factory) {\n // Materialize variables in a path expression.\n // The predicate expression will be recursed.\n return {\n recurse: false,\n result: factory.createPath(materializeTerm(op.subject, bindings), op.predicate, materializeTerm(op.object, bindings), materializeTerm(op.graph, bindings)),\n };\n },\n pattern(op, factory) {\n // Materialize variables in the quad pattern.\n return {\n recurse: false,\n result: factory.createPattern(materializeTerm(op.subject, bindings), materializeTerm(op.predicate, bindings), materializeTerm(op.object, bindings), materializeTerm(op.graph, bindings)),\n };\n },\n extend(op) {\n // Materialize an extend operation.\n // If strictTargetVariables is true, we throw if the extension target variable is attempted to be bound.\n // Otherwise, we remove the extend operation.\n if (bindings.has(op.variable)) {\n if (options.strictTargetVariables) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(op.variable)} in a BIND operator.`);\n }\n else {\n return {\n recurse: true,\n result: materializeOperation(op.input, bindings, options),\n };\n }\n }\n return {\n recurse: true,\n result: op,\n };\n },\n group(op, factory) {\n // Materialize a group operation.\n // If strictTargetVariables is true, we throw if the group target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a GROUP BY operator.`);\n }\n }\n return {\n recurse: true,\n result: op,\n };\n }\n const variables = op.variables.filter(variable => !bindings.has(variable));\n return {\n recurse: true,\n result: factory.createGroup(op.input, variables, op.aggregates),\n };\n },\n project(op, factory) {\n // Materialize a project operation.\n // If strictTargetVariables is true, we throw if the project target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a SELECT operator.`);\n }\n }\n return {\n recurse: true,\n result: op,\n };\n }\n const variables = op.variables.filter(variable => !bindings.has(variable));\n // Only include projected variables in the sub-bindings that will be passed down recursively.\n // If we don't do this, we may be binding variables that may have the same label, but are not considered equal.\n const subBindings = BF.bindings(op.variables.map(variable => {\n const binding = bindings.get(variable);\n if (binding) {\n return [variable, binding];\n }\n // eslint-disable-next-line no-useless-return\n return;\n }).filter(entry => Boolean(entry)));\n return {\n recurse: false,\n result: factory.createProject(materializeOperation(op.input, subBindings, options), variables),\n };\n },\n values(op, factory) {\n // Materialize a values operation.\n // If strictTargetVariables is true, we throw if the values target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables and their bindings.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a VALUES operator.`);\n }\n }\n }\n else {\n const variables = op.variables.filter(variable => !bindings.has(variable));\n const valueBindings = op.bindings.map(binding => {\n const newBinding = { ...binding };\n let valid = true;\n bindings.forEach((value, key) => {\n const keyString = (0, rdf_string_1.termToString)(key);\n if (keyString in newBinding) {\n if (!value.equals(newBinding[keyString])) {\n // If the value of the binding is not equal, remove this binding completely from the VALUES clause\n valid = false;\n }\n delete newBinding[keyString];\n }\n });\n return valid ? newBinding : undefined;\n }).filter(Boolean);\n return {\n recurse: true,\n result: factory.createValues(variables, valueBindings),\n };\n }\n return {\n recurse: false,\n result: op,\n };\n },\n expression(op, factory) {\n if (!options.bindFilter) {\n return {\n recurse: false,\n result: op,\n };\n }\n if (op.expressionType === 'term') {\n // Materialize a term expression\n return {\n recurse: false,\n result: factory.createTermExpression(materializeTerm(op.term, bindings)),\n };\n }\n if (op.expressionType === 'aggregate' &&\n 'variable' in op &&\n bindings.has(op.variable)) {\n // Materialize a bound aggregate operation.\n // If strictTargetVariables is true, we throw if the expression target variable is attempted to be bound.\n // Otherwise, we ignore this operation.\n if (options.strictTargetVariables) {\n throw new Error(`Tried to bind ${(0, rdf_string_1.termToString)(op.variable)} in a ${op.aggregator} aggregate.`);\n }\n else {\n return {\n recurse: true,\n result: op,\n };\n }\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n}\nexports.materializeOperation = materializeOperation;\n//# sourceMappingURL=Bindings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BusQueryOperation = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * Indexed bus for query operations.\n */\nclass BusQueryOperation extends core_1.BusIndexed {\n constructor(args) {\n super({\n ...args,\n actorIdentifierFields: ['operationName'],\n actionIdentifierFields: ['operation', 'type'],\n });\n }\n}\nexports.BusQueryOperation = BusQueryOperation;\n//# sourceMappingURL=BusQueryOperation.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperation\"), exports);\n__exportStar(require(\"./ActorQueryOperationTyped\"), exports);\n__exportStar(require(\"./ActorQueryOperationTypedMediated\"), exports);\n__exportStar(require(\"./Bindings\"), exports);\n__exportStar(require(\"./BusQueryOperation\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerialize = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A comunica actor for query-result-serialize events.\n *\n * Actor types:\n * * Input: IActionSparqlSerialize: SPARQL bindings or a quad stream.\n * * Test: \n * * Output: IActorQueryResultSerializeOutput: A text stream.\n *\n * @see IActionSparqlSerialize\n * @see IActorQueryResultSerializeOutput\n */\nclass ActorQueryResultSerialize extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorQueryResultSerialize = ActorQueryResultSerialize;\n//# sourceMappingURL=ActorQueryResultSerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to SPARQL serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionSparqlSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorQueryResultSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nclass ActorQueryResultSerializeFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action, context) {\n return true;\n }\n}\nexports.ActorQueryResultSerializeFixedMediaTypes = ActorQueryResultSerializeFixedMediaTypes;\n//# sourceMappingURL=ActorQueryResultSerializeFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerialize\"), exports);\n__exportStar(require(\"./ActorQueryResultSerializeFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeysRdfUpdateQuads = exports.KeysRdfResolveQuadPattern = exports.KeysRdfParseHtmlScript = exports.KeysRdfParseJsonLd = exports.KeysQueryOperation = exports.KeysInitQuery = exports.KeysHttpProxy = exports.KeysHttpMemento = exports.KeysHttp = exports.KeysCore = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * When adding entries to this file, also add a shortcut for them in the contextKeyShortcuts TSDoc comment in\n * ActorIniQueryBase in @comunica/actor-init-query if it makes sense to use this entry externally.\n * Also, add this shortcut to IQueryContextCommon in @comunica/types.\n */\nexports.KeysCore = {\n // We create the core context keys in @comunica/core to avoid a cyclic dependency\n /**\n * A logger instance.\n */\n log: core_1.CONTEXT_KEY_LOGGER,\n};\nexports.KeysHttp = {\n /**\n * Include credentials flags.\n */\n includeCredentials: new core_1.ActionContextKey('@comunica/bus-http:include-credentials'),\n /**\n * Authentication for a source as a \"username:password\"-pair.\n */\n auth: new core_1.ActionContextKey('@comunica/bus-http:auth'),\n /**\n * Fetch function implementation.\n */\n fetch: new core_1.ActionContextKey('@comunica/bus-http:fetch'),\n};\nexports.KeysHttpMemento = {\n /**\n * The desired datetime for Memento datetime-negotiation.\n */\n datetime: new core_1.ActionContextKey('@comunica/actor-http-memento:datetime'),\n};\nexports.KeysHttpProxy = {\n /**\n * Interface.\n */\n httpProxyHandler: new core_1.ActionContextKey('@comunica/actor-http-proxy:httpProxyHandler'),\n};\nexports.KeysInitQuery = {\n /**\n * Variables that have to be pre-bound to values in the query.\n */\n initialBindings: new core_1.ActionContextKey('@comunica/actor-init-query:initialBindings'),\n /**\n * The provided query's format.\n * Defaults to { language: 'sparql', version: '1.1' }\n */\n queryFormat: new core_1.ActionContextKey('@comunica/actor-init-query:queryFormat'),\n /**\n * Which GraphQL bindings should be singularized.\n */\n graphqlSingularizeVariables: new core_1.ActionContextKey('@comunica/actor-init-query:singularizeVariables'),\n /**\n * If HTTP and parsing failures are ignored.\n */\n lenient: new core_1.ActionContextKey('@comunica/actor-init-query:lenient'),\n /**\n * The original query string.\n */\n queryString: new core_1.ActionContextKey('@comunica/actor-init-query:queryString'),\n /**\n * The original parsed query.\n */\n query: new core_1.ActionContextKey('@comunica/actor-init-query:query'),\n /**\n * The query's base IRI.\n */\n baseIRI: new core_1.ActionContextKey('@comunica/actor-init-query:baseIRI'),\n /**\n * A timestamp representing the current time.\n * This is required for certain SPARQL operations such as NOW().\n */\n queryTimestamp: new core_1.ActionContextKey('@comunica/actor-init-query:queryTimestamp'),\n /**\n * @range {functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined}\n * Extension function creator for a given function IRI.\n * Returned value should be an async function implementation.\n * Undefined may be returned if no implementation exists for the given function IRI.\n *\n * The dictionary-based extensionFunctions context entry may be used instead, but not simultaneously.\n */\n extensionFunctionCreator: new core_1.ActionContextKey('@comunica/actor-init-query:extensionFunctionCreator'),\n /**\n * Dictionary of extension functions.\n * Key is the IRI of the function, and value is the async function implementation.\n *\n * The callback-based extensionFunctionCreator context entry may be used instead, but not simultaneously.\n */\n extensionFunctions: new core_1.ActionContextKey('@comunica/actor-init-query:extensionFunctions'),\n /**\n * Enables manipulation of the CLI arguments and their processing.\n */\n cliArgsHandlers: new core_1.ActionContextKey('@comunica/actor-init-query:cliArgsHandlers'),\n /**\n * Explain mode of the query. Can be 'parsed', 'logical', or 'physical'.\n */\n explain: new core_1.ActionContextKey('@comunica/actor-init-query:explain'),\n /**\n * Logs the used physical operators\n */\n physicalQueryPlanLogger: new core_1.ActionContextKey('@comunica/actor-init-query:physicalQueryPlanLogger'),\n /**\n * The current physical operator within the query plan.\n * This is used to pass parent-child relationships for invoking the query plan logger.\n */\n physicalQueryPlanNode: new core_1.ActionContextKey('@comunica/actor-init-query:physicalQueryPlanNode'),\n /**\n * A JSON-LD context\n */\n jsonLdContext: new core_1.ActionContextKey('@context'),\n};\nexports.KeysQueryOperation = {\n /**\n * Context entry for the current query operation.\n */\n operation: new core_1.ActionContextKey('@comunica/bus-query-operation:operation'),\n /**\n * @type {any} The metadata from the left streams within a join operation.\n */\n joinLeftMetadata: new core_1.ActionContextKey('@comunica/bus-query-operation:joinLeftMetadata'),\n /**\n * An array of metadata from the right streams within a join operation.\n */\n joinRightMetadatas: new core_1.ActionContextKey('@comunica/bus-query-operation:joinRightMetadatas'),\n /**\n * Indicates the bindings that were used to bind the operation.\n */\n joinBindings: new core_1.ActionContextKey('@comunica/bus-query-operation:joinBindings'),\n /**\n * Flag for indicating that only read operations are allowed, defaults to false.\n */\n readOnly: new core_1.ActionContextKey('@comunica/bus-query-operation:readOnly'),\n /**\n * An internal context entry to mark that a property path with arbitrary length and a distinct key is being processed.\n */\n isPathArbitraryLengthDistinctKey: new core_1.ActionContextKey('@comunica/bus-query-operation:isPathArbitraryLengthDistinct'),\n /**\n * An indicator that the stream will be limited to the given number of elements afterwards.\n */\n limitIndicator: new core_1.ActionContextKey('@comunica/bus-query-operation:limitIndicator'),\n};\nexports.KeysRdfParseJsonLd = {\n /**\n * @range {IDocumentLoader}\n */\n documentLoader: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:documentLoader'),\n /**\n * @range {boolean}\n */\n strictValues: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:strictValues'),\n /**\n * @range {Record}\n */\n parserOptions: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:parserOptions'),\n};\nexports.KeysRdfParseHtmlScript = {\n /**\n * An internal context flag to determine if the engine is already processing an HTML script tag.\n */\n processingHtmlScript: new core_1.ActionContextKey('@comunica/actor-rdf-parse-html-script:processingHtmlScript'),\n /**\n * If all HTML script tags must be considered.\n */\n extractAllScripts: new core_1.ActionContextKey('extractAllScripts'),\n};\nexports.KeysRdfResolveQuadPattern = {\n /**\n * Data sources.\n */\n sources: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:sources'),\n /**\n * A data source.\n */\n source: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:source'),\n /**\n * A map containing unique IDs for each source\n */\n sourceIds: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:sourceIds'),\n};\nexports.KeysRdfUpdateQuads = {\n /**\n * A data destination.\n */\n destination: new core_1.ActionContextKey('@comunica/bus-rdf-update-quads:destination'),\n};\n//# sourceMappingURL=Keys.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Keys\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionContextKey = exports.ActionContext = void 0;\nconst immutable_1 = require(\"immutable\");\n/**\n * Implementation of {@link IActionContext} using Immutable.js.\n */\nclass ActionContext {\n constructor(data = {}) {\n this.map = (0, immutable_1.Map)(data);\n }\n /**\n * Will only set the value if the key is not already set.\n */\n setDefault(key, value) {\n return this.has(key) ? this : this.set(key, value);\n }\n set(key, value) {\n return this.setRaw(key.name, value);\n }\n setRaw(key, value) {\n return new ActionContext(this.map.set(key, value));\n }\n delete(key) {\n return new ActionContext(this.map.delete(key.name));\n }\n get(key) {\n return this.getRaw(key.name);\n }\n getRaw(key) {\n return this.map.get(key);\n }\n getSafe(key) {\n if (!this.has(key)) {\n throw new Error(`Context entry ${key.name} is required but not available`);\n }\n return this.get(key);\n }\n has(key) {\n return this.hasRaw(key.name);\n }\n hasRaw(key) {\n return this.map.has(key);\n }\n merge(...contexts) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n let context = this;\n for (const source of contexts) {\n for (const key of source.keys()) {\n context = context.set(key, source.get(key));\n }\n }\n return context;\n }\n keys() {\n return [...this.map.keys()]\n .map(keyName => new ActionContextKey(keyName));\n }\n toJS() {\n return this.map.toJS();\n }\n toString() {\n return `ActionContext(${JSON.stringify(this.map.toJS())})`;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `ActionContext(${JSON.stringify(this.map.toJS(), null, ' ')})`;\n }\n /**\n * Convert the given object to an action context object if it is not an action context object yet.\n * If it already is an action context object, return the object as-is.\n * @param maybeActionContext An action context or record.\n * @return {ActionContext} An action context object.\n */\n static ensureActionContext(maybeActionContext) {\n return maybeActionContext instanceof ActionContext ?\n maybeActionContext :\n new ActionContext((0, immutable_1.Map)(maybeActionContext || {}));\n }\n}\nexports.ActionContext = ActionContext;\n/**\n * Simple implementation of {@link IActionContextKey}.\n */\nclass ActionContextKey {\n constructor(name) {\n this.name = name;\n }\n}\nexports.ActionContextKey = ActionContextKey;\n//# sourceMappingURL=ActionContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionObserver = void 0;\n/**\n * An ActionObserver can passively listen to {@link Actor#run} inputs and outputs for all actors on a certain bus.\n *\n * ActionObserver should not edit inputs and outputs,\n * they should be considered immutable.\n *\n * @see Actor\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template O The output type of an actor.\n */\nclass ActionObserver {\n /**\n * All enumerable properties from the `args` object are inherited to this observer.\n *\n * The observer will NOT automatically subscribe to the given bus when this constructor is called.\n *\n * @param {IActionObserverArgs} args Arguments object\n * @throws When required arguments are missing.\n */\n constructor(args) {\n Object.assign(this, args);\n }\n}\nexports.ActionObserver = ActionObserver;\n//# sourceMappingURL=ActionObserver.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Actor = void 0;\nconst ContextEntries_1 = require(\"./ContextEntries\");\n/**\n * An actor can act on messages of certain types and provide output of a certain type.\n *\n * The flow of an actor is as follows:\n * 1. Send a message to {@link Actor#test} to test if an actor can run that action.\n * 2. If the actor can reply to the message, let the actor run the action using {@link Actor#run}.\n *\n * An actor is typically subscribed to a bus,\n * using which the applicability to an action can be tested.\n *\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Actor {\n /**\n * All enumerable properties from the `args` object are inherited to this actor.\n *\n * The actor will subscribe to the given bus when this constructor is called.\n *\n * @param {IActorArgs} args Arguments object\n * @param {string} args.name The name for this actor.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this actor subscribes to.\n * @throws When required arguments are missing.\n */\n constructor(args) {\n this.beforeActors = [];\n Object.assign(this, args);\n this.bus.subscribe(this);\n if (this.beforeActors.length > 0) {\n this.bus.addDependencies(this, this.beforeActors);\n }\n }\n /**\n * Get the logger from the given context.\n * @param {ActionContext} context An optional context.\n * @return {Logger} The logger or undefined.\n */\n static getContextLogger(context) {\n return context.get(ContextEntries_1.CONTEXT_KEY_LOGGER);\n }\n /**\n * Run the given action on this actor\n * AND invokes the {@link Bus#onRun} method.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n runObservable(action) {\n const output = this.run(action);\n this.bus.onRun(this, action, output);\n return output;\n }\n /**\n * Initialize this actor.\n * This should be used for doing things that take a while,\n * such as opening files.\n *\n * @return {Promise} A promise that resolves when the actor has been initialized.\n */\n async initialize() {\n return true;\n }\n /**\n * Deinitialize this actor.\n * This should be used for cleaning up things when the application is shut down,\n * such as closing files and removing temporary files.\n *\n * @return {Promise} A promise that resolves when the actor has been deinitialized.\n */\n async deinitialize() {\n return true;\n }\n /* Proxy methods for the (optional) logger that is defined in the context */\n getDefaultLogData(context, data) {\n const dataActual = data ? data() : {};\n dataActual.actor = this.name;\n return dataActual;\n }\n logTrace(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.trace(message, this.getDefaultLogData(context, data));\n }\n }\n logDebug(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.debug(message, this.getDefaultLogData(context, data));\n }\n }\n logInfo(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.info(message, this.getDefaultLogData(context, data));\n }\n }\n logWarn(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.warn(message, this.getDefaultLogData(context, data));\n }\n }\n logError(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.error(message, this.getDefaultLogData(context, data));\n }\n }\n logFatal(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.fatal(message, this.getDefaultLogData(context, data));\n }\n }\n}\nexports.Actor = Actor;\n//# sourceMappingURL=Actor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bus = void 0;\n/**\n * A publish-subscribe bus for sending actions to actors\n * to test whether or not they can run an action.\n *\n * This bus does not run the action itself,\n * for that a {@link Mediator} can be used.\n *\n * @see Actor\n * @see Mediator\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Bus {\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n constructor(args) {\n this.actors = [];\n this.observers = [];\n // Mapping from dependency (after) to dependents (before)\n this.dependencyLinks = new Map();\n Object.assign(this, args);\n }\n /**\n * Subscribe the given actor to the bus.\n * After this, the given actor can be unsubscribed from the bus by calling {@link Bus#unsubscribe}.\n *\n * An actor that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {A} actor The actor to subscribe.\n */\n subscribe(actor) {\n this.actors.push(actor);\n this.reorderForDependencies();\n }\n /**\n * Subscribe the given observer to the bus.\n * After this, the given observer can be unsubscribed from the bus by calling {@link Bus#unsubscribeObserver}.\n *\n * An observer that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {ActionObserver} observer The observer to subscribe.\n */\n subscribeObserver(observer) {\n this.observers.push(observer);\n }\n /**\n * Unsubscribe the given actor from the bus.\n *\n * An actor that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {A} actor The actor to unsubscribe\n * @return {boolean} If the given actor was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n unsubscribe(actor) {\n const index = this.actors.indexOf(actor);\n if (index >= 0) {\n this.actors.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n * Unsubscribe the given observer from the bus.\n *\n * An observer that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {ActionObserver} observer The observer to unsubscribe.\n * @return {boolean} If the given observer was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n unsubscribeObserver(observer) {\n const index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n * Publish an action to all actors in the bus to test if they can run the action.\n *\n * @param {I} action An action to publish\n * @return {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]}\n * An array of reply objects. Each object contains a reference to the actor,\n * and a promise to its {@link Actor#test} result.\n */\n publish(action) {\n return this.actors.map((actor) => ({ actor, reply: actor.test(action) }));\n }\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n onRun(actor, action, output) {\n for (const observer of this.observers) {\n observer.onRun(actor, action, output);\n }\n }\n /**\n * Indicate that the given actor has the given actor dependencies.\n *\n * This will ensure that the given actor will be present in the bus *before* the given dependencies.\n *\n * @param {A} dependent A dependent actor that will be placed before the given actors.\n * @param {A[]} dependencies Actor dependencies that will be placed after the given actor.\n */\n addDependencies(dependent, dependencies) {\n for (const dependency of dependencies) {\n let existingDependencies = this.dependencyLinks.get(dependency);\n if (!existingDependencies) {\n existingDependencies = [];\n this.dependencyLinks.set(dependency, existingDependencies);\n }\n existingDependencies.push(dependent);\n }\n this.reorderForDependencies();\n }\n /**\n * Reorder the bus based on all present dependencies.\n */\n reorderForDependencies() {\n if (this.dependencyLinks.size > 0) {\n const actorsAfter = [];\n // Temporarily remove all actors that have dependencies\n for (const actorAfter of this.dependencyLinks.keys()) {\n const dependentPos = this.actors.indexOf(actorAfter);\n if (dependentPos >= 0) {\n this.actors.splice(dependentPos, 1);\n actorsAfter.push(actorAfter);\n }\n }\n // Iteratively append actors based on the first dependency link\n // that has all of its dependencies available in the array\n while (actorsAfter.length > 0) {\n // Find the first actor that has all of its dependencies available.\n let activeActorAfterId = -1;\n for (let i = 0; i < actorsAfter.length; i++) {\n let validLink = true;\n for (const dependency of this.dependencyLinks.get(actorsAfter[i])) {\n if (!this.actors.includes(dependency) && actorsAfter.includes(dependency)) {\n validLink = false;\n break;\n }\n }\n if (validLink) {\n activeActorAfterId = i;\n break;\n }\n }\n // If none of the pending links are possible, there must be a cyclic dependency\n if (activeActorAfterId < 0) {\n throw new Error(`Cyclic dependency links detected in bus ${this.name}`);\n }\n // The dependent may not be available (yet), so we don't add it to the array (yet).\n const activeActorAfter = actorsAfter.splice(activeActorAfterId, 1)[0];\n this.actors.push(activeActorAfter);\n }\n }\n }\n}\nexports.Bus = Bus;\n//# sourceMappingURL=Bus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BusIndexed = void 0;\nconst Bus_1 = require(\"./Bus\");\n/**\n * A bus that indexes identified actors,\n * so that actions with a corresponding identifier can be published more efficiently.\n *\n * Multiple actors with the same identifier can be subscribed.\n *\n * If actors or actions do not have a valid identifier,\n * then this will fallback to the normal bus behaviour.\n *\n * @see Bus\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass BusIndexed extends Bus_1.Bus {\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusIndexedArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n constructor(args) {\n super(args);\n this.actorsIndex = {};\n }\n subscribe(actor) {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n let actors = this.actorsIndex[actorId];\n if (!actors) {\n actors = this.actorsIndex[actorId] = [];\n }\n actors.push(actor);\n super.subscribe(actor);\n }\n unsubscribe(actor) {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n const actors = this.actorsIndex[actorId];\n if (actors) {\n const i = actors.indexOf(actor);\n if (i >= 0) {\n actors.splice(i, 1);\n }\n if (actors.length === 0) {\n delete this.actorsIndex[actorId];\n }\n }\n return super.unsubscribe(actor);\n }\n publish(action) {\n const actionId = this.getActionIdentifier(action);\n if (actionId) {\n const actors = [...this.actorsIndex[actionId] || [], ...this.actorsIndex._undefined_ || []];\n return actors.map((actor) => ({ actor, reply: actor.test(action) }));\n }\n return super.publish(action);\n }\n getActorIdentifier(actor) {\n return this.actorIdentifierFields.reduce((object, field) => object[field], actor);\n }\n getActionIdentifier(action) {\n return this.actionIdentifierFields.reduce((object, field) => object[field], action);\n }\n}\nexports.BusIndexed = BusIndexed;\n//# sourceMappingURL=BusIndexed.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONTEXT_KEY_LOGGER = void 0;\nconst ActionContext_1 = require(\"./ActionContext\");\nexports.CONTEXT_KEY_LOGGER = new ActionContext_1.ActionContextKey('@comunica/core:log');\n//# sourceMappingURL=ContextEntries.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logger = void 0;\n/**\n * A logger accepts messages from different levels\n * and emits them in a certain way.\n */\nclass Logger {\n /**\n * Convert a string-based logging level to a numerical logging level.\n * @param level A string-based logging level\n * @return The numerical logging level, or undefined.\n */\n static getLevelOrdinal(level) {\n return Logger.LEVELS[level];\n }\n}\nexports.Logger = Logger;\n/**\n * All available logging levels.\n * @type {{trace: number; debug: number; info: number; warn: number; error: number; fatal: number}}\n */\nLogger.LEVELS = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n};\n//# sourceMappingURL=Logger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mediator = void 0;\n/**\n * A mediator can mediate an action over a bus of actors.\n *\n * It does the following:\n * 1. Accepts an action in {@link Mediator#mediate}.\n * 2. Sends the action to the bus to test its applicability on all actors.\n * 3. It _mediates_ over these test results.\n * 4. It selects the _best_ actor.\n * 5. The action is run by the _best_ actor, and the result if returned.\n *\n * The _mediates_ and _best_ parts are filled in by subclasses of this abstract Mediator class.\n *\n * @template A The type of actor to mediator over.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Mediator {\n /**\n * All enumerable properties from the `args` object are inherited to this mediator.\n *\n * @param {IMediatorArgs, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>} args Arguments object\n * @param {string} args.name The name for this mediator.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this mediator will mediate over.\n * @throws When required arguments are missing.\n */\n constructor(args) {\n Object.assign(this, args);\n }\n /**\n * Publish the given action in the bus.\n *\n * This will send the test action on all actors in the bus.\n * All actor replies will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {IActorReply, I extends IAction, T extends IActorTest, O extends IActorOutput>[]}\n * The list of actor replies.\n */\n publish(action) {\n // Test all actors in the bus\n const actors = this.bus.publish(action);\n if (actors.length === 0) {\n throw new Error(`No actors are able to reply to a message in the bus ${this.bus.name}`);\n }\n return actors;\n }\n /**\n * Mediate for the given action to get an actor.\n *\n * This will send the test action on all actors in the bus.\n * The actor that tests _best_ will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the _best_ actor.\n */\n async mediateActor(action) {\n // Mediate to one actor and run that actor.\n return await this.mediateWith(action, this.publish(action));\n }\n /**\n * Mediate for the given action.\n *\n * This will send the test action on all actors in the bus.\n * The action will be run on the actor that tests _best_,\n * of which the result will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the mediation result.\n */\n async mediate(action) {\n // Mediate to one actor and run the action on it\n const actor = await this.mediateActor(action);\n return actor.runObservable(action);\n }\n}\nexports.Mediator = Mediator;\n//# sourceMappingURL=Mediator.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActionContext\"), exports);\n__exportStar(require(\"./Bus\"), exports);\n__exportStar(require(\"./BusIndexed\"), exports);\n__exportStar(require(\"./ContextEntries\"), exports);\n__exportStar(require(\"./ActionObserver\"), exports);\n__exportStar(require(\"./Actor\"), exports);\n__exportStar(require(\"./Logger\"), exports);\n__exportStar(require(\"./Mediator\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNodeBindingsScoped = void 0;\n/**\n * A blank node that is scoped to a set of bindings.\n */\nclass BlankNodeBindingsScoped {\n constructor(value) {\n this.termType = 'BlankNode';\n this.singleBindingsScope = true;\n this.value = value;\n }\n equals(other) {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNodeBindingsScoped = BlankNodeBindingsScoped;\n//# sourceMappingURL=BlankNodeBindingsScoped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNodeScoped = void 0;\n/**\n * A blank node that is scoped to a certain source.\n */\nclass BlankNodeScoped {\n constructor(value, skolemized) {\n this.termType = 'BlankNode';\n this.value = value;\n this.skolemized = skolemized;\n }\n equals(other) {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNodeScoped = BlankNodeScoped;\n//# sourceMappingURL=BlankNodeScoped.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./BlankNodeScoped\"), exports);\n__exportStar(require(\"./BlankNodeBindingsScoped\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoggerPretty = void 0;\nconst util_1 = require(\"util\");\nconst core_1 = require(\"@comunica/core\");\n/**\n * A logger that pretty-prints everything.\n */\nclass LoggerPretty extends core_1.Logger {\n constructor(args) {\n super();\n this.level = args.level;\n this.levelOrdinal = core_1.Logger.getLevelOrdinal(this.level);\n this.actors = args.actors;\n }\n debug(message, data) {\n this.log('debug', message, data);\n }\n error(message, data) {\n this.log('error', message, data);\n }\n fatal(message, data) {\n this.log('fatal', message, data);\n }\n info(message, data) {\n this.log('info', message, data);\n }\n trace(message, data) {\n this.log('trace', message, data);\n }\n warn(message, data) {\n this.log('warn', message, data);\n }\n log(level, message, data) {\n if (core_1.Logger.getLevelOrdinal(level) >= this.levelOrdinal &&\n (!data || !('actor' in data) || !this.actors || this.actors[data.actor])) {\n process.stderr.write(`[${new Date().toISOString()}] ${level.toUpperCase()}: ${message} ${(0, util_1.inspect)(data)}\\n`);\n }\n }\n}\nexports.LoggerPretty = LoggerPretty;\n//# sourceMappingURL=LoggerPretty.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LoggerPretty\"), exports);\n//# sourceMappingURL=index.js.map","var engine = null;\nvar RdfString = require('rdf-string');\nvar LoggerPretty = require('@comunica/logger-pretty').LoggerPretty;\nvar bindingsStreamToGraphQl = require('@comunica/actor-query-result-serialize-tree').bindingsStreamToGraphQl;\nvar ProxyHandlerStatic = require('@comunica/actor-http-proxy').ProxyHandlerStatic;\nvar WorkerToWindowHandler = require('@rubensworks/solid-client-authn-browser').WorkerToWindowHandler;\nvar QueryEngineBase = require('@comunica/actor-init-query').QueryEngineBase;\n\n// The active fragments client and the current results\nvar resultsIterator;\n\n// Set up logging\nvar logger = new LoggerPretty({ level: 'info' });\nlogger.log = function (level, message, data) {\n postMessage({ type: 'log', log: message + (data ? (' ' + JSON.stringify(data)) : '') + '\\n' });\n};\n\n// Handler for authenticating fetch requests within main window\nconst workerToWindowHandler = new WorkerToWindowHandler(self);\n\nfunction initEngine(config) {\n // Create an engine lazily\n if (!engine)\n engine = new QueryEngineBase(require('my-comunica-engine'));\n\n // Set up a proxy handler\n if (config.context.httpProxy)\n config.context.httpProxyHandler = new ProxyHandlerStatic(config.context.httpProxy);\n\n // Set up authenticated fetch\n if (config.context.workerSolidAuth)\n config.context.fetch = workerToWindowHandler.buildAuthenticatedFetch();\n\n // Transform query format to expected structure\n if (config.context.queryFormat)\n config.context.queryFormat = { language: config.context.queryFormat };\n}\n\n// Handlers of incoming messages\nvar handlers = {\n // Execute the given query with the given options\n query: function (config) {\n initEngine(config);\n\n // Create a client to fetch the fragments through HTTP\n config.context.log = logger;\n engine.query(config.query, config.context)\n .then(async function (result) {\n // Post query metadata\n postMessage({ type: 'queryInfo', queryType: result.resultType });\n\n var bindings = result.resultType === 'bindings';\n var resultsToTree = config.resultsToTree;\n switch (result.resultType) {\n case 'quads':\n resultsIterator = await result.execute();\n break;\n case 'bindings':\n resultsIterator = await result.execute();\n break;\n case 'boolean':\n result.execute().then(function (exists) {\n postMessage({ type: 'result', result: exists });\n postMessage({ type: 'end' });\n }).catch(postError);\n break;\n case 'void':\n result.execute().then(function () {\n postMessage({ type: 'result', result: 'Done' });\n postMessage({ type: 'end' });\n }).catch(postError);\n break;\n }\n\n if (resultsIterator) {\n if (resultsToTree) {\n bindingsStreamToGraphQl(resultsIterator, result.context, { materializeRdfJsTerms: true })\n .then(function (results) {\n (Array.isArray(results) ? results : [results]).forEach(function (result) {\n postMessage({ type: 'result', result: { result: '\\n' + JSON.stringify(result, null, ' ') } });\n });\n postMessage({ type: 'end' });\n })\n .catch(postError);\n }\n else {\n resultsIterator.on('data', function (result) {\n if (bindings)\n result = Object.fromEntries([...result].map(([key, value]) => [RdfString.termToString(key), RdfString.termToString(value)]));\n else\n result = RdfString.quadToStringQuad(result);\n postMessage({ type: 'result', result: result });\n });\n resultsIterator.on('end', function () {\n postMessage({ type: 'end' });\n });\n resultsIterator.on('error', postError);\n }\n }\n }).catch(postError);\n },\n\n // Stop the execution of the current query\n stop: function () {\n if (resultsIterator) {\n resultsIterator.destroy();\n resultsIterator = null;\n }\n },\n\n // Obtain the foaf:name of a WebID\n getWebIdName: function ({ webId, context }) {\n const config = {\n query: `\nPREFIX foaf: \nSELECT ?name WHERE {\n <${webId}> foaf:name ?name.\n}`,\n context: {\n ...context,\n 'sources': [webId],\n // TODO: this can be removed once this issue is fixed: https://github.com/comunica/comunica/issues/950\n '@comunica/actor-rdf-resolve-hypermedia-links-traverse:traverse': false,\n },\n };\n initEngine(config);\n config.context.log = logger;\n engine.queryBindings(config.query, config.context)\n .then(function (result) {\n result.toArray({ limit: 1 })\n .then(bindings => {\n if (bindings.length > 0)\n postMessage({ type: 'webIdName', name: bindings[0].get('name').value });\n\n // Clear HTTP cache to make sure we re-fetch all next URL\n // TODO: this can be removed once this issue is fixed: https://github.com/comunica/comunica/issues/950\n engine.invalidateHttpCache();\n }).catch(postError);\n }).catch(postError);\n },\n};\n\nfunction postError(error) {\n error = { message: error.message || error.toString() };\n postMessage({ type: 'error', error: error });\n}\n\n// Send incoming message to the appropriate handler\nself.onmessage = function (m) {\n if (workerToWindowHandler.onmessage(m))\n return;\n handlers[m.data.type](m.data);\n};\n","class JOSEError extends Error {\n constructor(message) {\n super(message);\n this.code = JOSEError.code;\n this.name = this.constructor.name;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\nJOSEError.code = 'ERR_JOSE_GENERIC';\nclass JWTClaimValidationFailed extends JOSEError {\n constructor(message, claim = 'unspecified', reason = 'unspecified') {\n super(message);\n this.code = JWTClaimValidationFailed.code;\n this.claim = claim;\n this.reason = reason;\n }\n}\nJWTClaimValidationFailed.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\nclass JOSEAlgNotAllowed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = JOSEAlgNotAllowed.code;\n }\n}\nJOSEAlgNotAllowed.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\nclass JOSENotSupported extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = JOSENotSupported.code;\n }\n}\nJOSENotSupported.code = 'ERR_JOSE_NOT_SUPPORTED';\nclass JWEDecryptionFailed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = JWEDecryptionFailed.code;\n this.message = 'decryption operation failed';\n }\n}\nJWEDecryptionFailed.code = 'ERR_JWE_DECRYPTION_FAILED';\nclass JWEInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = JWEInvalid.code;\n }\n}\nJWEInvalid.code = 'ERR_JWE_INVALID';\nclass JWSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = JWSInvalid.code;\n }\n}\nJWSInvalid.code = 'ERR_JWS_INVALID';\nclass JWTInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = JWTInvalid.code;\n }\n}\nJWTInvalid.code = 'ERR_JWT_INVALID';\nclass JWKInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = JWKInvalid.code;\n }\n}\nJWKInvalid.code = 'ERR_JWK_INVALID';\nclass JWKSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = JWKSInvalid.code;\n }\n}\nJWKSInvalid.code = 'ERR_JWKS_INVALID';\nclass JWKSNoMatchingKey extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = JWKSNoMatchingKey.code;\n this.message = 'no applicable key found in the JSON Web Key Set';\n }\n}\nJWKSNoMatchingKey.code = 'ERR_JWKS_NO_MATCHING_KEY';\nclass JWKSMultipleMatchingKeys extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = JWKSMultipleMatchingKeys.code;\n this.message = 'multiple matching keys found in the JSON Web Key Set';\n }\n}\nJWKSMultipleMatchingKeys.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\nclass JWSSignatureVerificationFailed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = JWSSignatureVerificationFailed.code;\n this.message = 'signature verification failed';\n }\n}\nJWSSignatureVerificationFailed.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\nclass JWTExpired extends JWTClaimValidationFailed {\n constructor() {\n super(...arguments);\n this.code = JWTExpired.code;\n }\n}\nJWTExpired.code = 'ERR_JWT_EXPIRED';\n\nconst isDisjoint = (...headers) => {\n const sources = headers.filter(Boolean);\n if (sources.length === 0 || sources.length === 1) {\n return true;\n }\n let acc;\n for (const header of sources) {\n const parameters = Object.keys(header);\n if (!acc || acc.size === 0) {\n acc = new Set(parameters);\n continue;\n }\n for (const parameter of parameters) {\n if (acc.has(parameter)) {\n return false;\n }\n acc.add(parameter);\n }\n }\n return true;\n};\n\nfunction isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nfunction isObject(input) {\n if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n let proto = input;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(input) === proto;\n}\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nfunction concat(...buffers) {\n const size = buffers.reduce((acc, { length }) => acc + length, 0);\n const buf = new Uint8Array(size);\n let i = 0;\n buffers.forEach((buffer) => {\n buf.set(buffer, i);\n i += buffer.length;\n });\n return buf;\n}\nfunction p2s(alg, p2sInput) {\n return concat(encoder.encode(alg), new Uint8Array([0]), p2sInput);\n}\nfunction writeUInt32BE(buf, value, offset) {\n if (value < 0 || value >= MAX_INT32) {\n throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n }\n buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nfunction uint64be(value) {\n const high = Math.floor(value / MAX_INT32);\n const low = value % MAX_INT32;\n const buf = new Uint8Array(8);\n writeUInt32BE(buf, high, 0);\n writeUInt32BE(buf, low, 4);\n return buf;\n}\nfunction uint32be(value) {\n const buf = new Uint8Array(4);\n writeUInt32BE(buf, value);\n return buf;\n}\nfunction lengthAndInput(input) {\n return concat(uint32be(input.length), input);\n}\nasync function concatKdf(digest, secret, bits, value) {\n const iterations = Math.ceil((bits >> 3) / 32);\n let res;\n for (let iter = 1; iter <= iterations; iter++) {\n const buf = new Uint8Array(4 + secret.length + value.length);\n buf.set(uint32be(iter));\n buf.set(secret, 4);\n buf.set(value, 4 + secret.length);\n if (!res) {\n res = await digest('sha256', buf);\n }\n else {\n res = concat(res, await digest('sha256', buf));\n }\n }\n res = res.slice(0, bits >> 3);\n return res;\n}\n\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined')\n return globalThis;\n if (typeof self !== 'undefined')\n return self;\n if (typeof window !== 'undefined')\n return window;\n throw new Error('unable to locate global object');\n}\nvar globalThis$1 = getGlobal();\n\nconst encode$1 = (input) => {\n let unencoded = input;\n if (typeof unencoded === 'string') {\n unencoded = encoder.encode(unencoded);\n }\n const CHUNK_SIZE = 0x8000;\n const arr = [];\n for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));\n }\n const base64string = globalThis$1.btoa(arr.join(''));\n return base64string.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nconst decode$1 = (input) => {\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n try {\n return new Uint8Array(globalThis$1\n .atob(encoded)\n .split('')\n .map((c) => c.charCodeAt(0)));\n }\n catch (_a) {\n throw new TypeError('The input to be decoded is not correctly encoded.');\n }\n};\n\nconst bitLengths$1 = new Map([\n ['A128CBC-HS256', 128],\n ['A128GCM', 96],\n ['A128GCMKW', 96],\n ['A192CBC-HS384', 128],\n ['A192GCM', 96],\n ['A192GCMKW', 96],\n ['A256CBC-HS512', 128],\n ['A256GCM', 96],\n ['A256GCMKW', 96],\n]);\nconst factory$1 = (random) => (alg) => {\n const bitLength = bitLengths$1.get(alg);\n if (!bitLength) {\n throw new JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n }\n return random(new Uint8Array(bitLength >> 3));\n};\n\nconst checkIvLength = (enc, iv) => {\n if (iv.length << 3 !== bitLengths$1.get(enc)) {\n throw new JWEInvalid('Invalid Initialization Vector length');\n }\n};\n\nvar crypto = globalThis$1.crypto;\nfunction isCryptoKey(key) {\n if (typeof globalThis$1.CryptoKey === 'undefined') {\n return false;\n }\n return key != null && key instanceof globalThis$1.CryptoKey;\n}\n\nconst checkCekLength = (enc, cek) => {\n let expected;\n switch (enc) {\n case 'A128CBC-HS256':\n case 'A192CBC-HS384':\n case 'A256CBC-HS512':\n expected = parseInt(enc.substr(-3), 10);\n if (!(cek instanceof Uint8Array)) {\n throw new TypeError(`${enc} content encryption requires Uint8Array as key input`);\n }\n break;\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM':\n expected = parseInt(enc.substr(1, 3), 10);\n break;\n default:\n throw new JOSENotSupported(`Content Encryption Algorithm ${enc} is not supported either by JOSE or your javascript runtime`);\n }\n if (cek instanceof Uint8Array) {\n if (cek.length << 3 !== expected) {\n throw new JWEInvalid('Invalid Content Encryption Key length');\n }\n return;\n }\n if (isCryptoKey(cek)) {\n const { length } = cek.algorithm;\n if (length !== expected) {\n throw new JWEInvalid('Invalid Content Encryption Key length');\n }\n return;\n }\n throw new TypeError('Invalid Content Encryption Key type');\n};\n\nconst timingSafeEqual = (a, b) => {\n if (!(a instanceof Uint8Array)) {\n throw new TypeError('First argument must be a buffer');\n }\n if (!(b instanceof Uint8Array)) {\n throw new TypeError('Second argument must be a buffer');\n }\n if (a.length !== b.length) {\n throw new TypeError('Input buffers must have the same length');\n }\n const len = a.length;\n let out = 0;\n let i = -1;\n while (++i < len) {\n out |= a[i] ^ b[i];\n }\n return out === 0;\n};\n\nvar invalidKeyInput = (actual, ...types) => {\n let msg = 'Key must be ';\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(', ')}, or ${last}.`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}.`;\n }\n else {\n msg += `of type ${types[0]}.`;\n }\n if (actual == null) {\n msg += ` Received ${actual}`;\n }\n else if (typeof actual === 'function' && actual.name) {\n msg += ` Received function ${actual.name}`;\n }\n else if (typeof actual === 'object' && actual != null) {\n if (actual.constructor && actual.constructor.name) {\n msg += ` Received an instance of ${actual.constructor.name}`;\n }\n }\n return msg;\n};\n\nasync function cbcDecrypt(enc, cek, ciphertext, iv, tag, aad) {\n const keySize = parseInt(enc.substr(1, 3), 10);\n const encKey = await crypto.subtle.importKey('raw', cek.subarray(keySize >> 3), 'AES-CBC', false, ['decrypt']);\n const macKey = await crypto.subtle.importKey('raw', cek.subarray(0, keySize >> 3), {\n hash: { name: `SHA-${keySize << 1}` },\n name: 'HMAC',\n }, false, ['sign']);\n const macData = concat(aad, iv, ciphertext, uint64be(aad.length << 3));\n const expectedTag = new Uint8Array((await crypto.subtle.sign('HMAC', macKey, macData)).slice(0, keySize >> 3));\n let macCheckPassed;\n try {\n macCheckPassed = timingSafeEqual(tag, expectedTag);\n }\n catch (_a) {\n }\n if (!macCheckPassed) {\n throw new JWEDecryptionFailed();\n }\n let plaintext;\n try {\n plaintext = new Uint8Array(await crypto.subtle.decrypt({ iv, name: 'AES-CBC' }, encKey, ciphertext));\n }\n catch (_b) {\n }\n if (!plaintext) {\n throw new JWEDecryptionFailed();\n }\n return plaintext;\n}\nasync function gcmDecrypt(cek, ciphertext, iv, tag, aad) {\n const encKey = cek instanceof Uint8Array\n ? await crypto.subtle.importKey('raw', cek, 'AES-GCM', false, ['decrypt'])\n : cek;\n try {\n return new Uint8Array(await crypto.subtle.decrypt({\n additionalData: aad,\n iv,\n name: 'AES-GCM',\n tagLength: 128,\n }, encKey, concat(ciphertext, tag)));\n }\n catch (_a) {\n throw new JWEDecryptionFailed();\n }\n}\nconst decrypt$2 = async (enc, cek, ciphertext, iv, tag, aad) => {\n if (!isCryptoKey(cek) && !(cek instanceof Uint8Array)) {\n throw new TypeError(invalidKeyInput(cek, 'CryptoKey', 'Uint8Array'));\n }\n checkCekLength(enc, cek);\n checkIvLength(enc, iv);\n switch (enc) {\n case 'A128CBC-HS256':\n case 'A192CBC-HS384':\n case 'A256CBC-HS512':\n return cbcDecrypt(enc, cek, ciphertext, iv, tag, aad);\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM':\n return gcmDecrypt(cek, ciphertext, iv, tag, aad);\n default:\n throw new JOSENotSupported('unsupported JWE Content Encryption Algorithm');\n }\n};\n\nconst inflate = async () => {\n throw new JOSENotSupported('JWE \"zip\" (Compression Algorithm) Header Parameter is not supported by your javascript runtime. You need to use the `inflateRaw` decrypt option to provide Inflate Raw implementation, e.g. using the \"pako\" module.');\n};\nconst deflate = async () => {\n throw new JOSENotSupported('JWE \"zip\" (Compression Algorithm) Header Parameter is not supported by your javascript runtime.');\n};\n\nconst bogusWebCrypto = [\n { hash: { name: 'SHA-256' }, name: 'HMAC' },\n true,\n ['sign'],\n];\n\nfunction checkKeySize(key, alg) {\n if (key.algorithm.length !== parseInt(alg.substr(1, 3), 10)) {\n throw new TypeError(`invalid key size for alg: ${alg}`);\n }\n}\nfunction getCryptoKey$2(key, usage) {\n if (isCryptoKey(key)) {\n return key;\n }\n if (key instanceof Uint8Array) {\n return crypto.subtle.importKey('raw', key, 'AES-KW', true, [usage]);\n }\n throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'Uint8Array'));\n}\nconst wrap$1 = async (alg, key, cek) => {\n const cryptoKey = await getCryptoKey$2(key, 'wrapKey');\n checkKeySize(cryptoKey, alg);\n const cryptoKeyCek = await crypto.subtle.importKey('raw', cek, ...bogusWebCrypto);\n return new Uint8Array(await crypto.subtle.wrapKey('raw', cryptoKeyCek, cryptoKey, 'AES-KW'));\n};\nconst unwrap$1 = async (alg, key, encryptedKey) => {\n const cryptoKey = await getCryptoKey$2(key, 'unwrapKey');\n checkKeySize(cryptoKey, alg);\n const cryptoKeyCek = await crypto.subtle.unwrapKey('raw', encryptedKey, cryptoKey, 'AES-KW', ...bogusWebCrypto);\n return new Uint8Array(await crypto.subtle.exportKey('raw', cryptoKeyCek));\n};\n\nconst digest = async (algorithm, data) => {\n const subtleDigest = `SHA-${algorithm.substr(-3)}`;\n return new Uint8Array(await crypto.subtle.digest(subtleDigest, data));\n};\n\nconst deriveKey = async (publicKey, privateKey, algorithm, keyLength, apu = new Uint8Array(0), apv = new Uint8Array(0)) => {\n if (!isCryptoKey(publicKey)) {\n throw new TypeError(invalidKeyInput(publicKey, 'CryptoKey'));\n }\n if (!isCryptoKey(privateKey)) {\n throw new TypeError(invalidKeyInput(privateKey, 'CryptoKey'));\n }\n const value = concat(lengthAndInput(encoder.encode(algorithm)), lengthAndInput(apu), lengthAndInput(apv), uint32be(keyLength));\n if (!privateKey.usages.includes('deriveBits')) {\n throw new TypeError('ECDH-ES private key \"usages\" must include \"deriveBits\"');\n }\n const sharedSecret = new Uint8Array(await crypto.subtle.deriveBits({\n name: 'ECDH',\n public: publicKey,\n }, privateKey, Math.ceil(parseInt(privateKey.algorithm.namedCurve.substr(-3), 10) / 8) <<\n 3));\n return concatKdf(digest, sharedSecret, keyLength, value);\n};\nconst generateEpk = async (key) => {\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, 'CryptoKey'));\n }\n return (await crypto.subtle.generateKey({ name: 'ECDH', namedCurve: key.algorithm.namedCurve }, true, ['deriveBits'])).privateKey;\n};\nconst ecdhAllowed = (key) => {\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, 'CryptoKey'));\n }\n return ['P-256', 'P-384', 'P-521'].includes(key.algorithm.namedCurve);\n};\n\nconst random$1 = crypto.getRandomValues.bind(crypto);\n\nfunction checkP2s(p2s) {\n if (!(p2s instanceof Uint8Array) || p2s.length < 8) {\n throw new JWEInvalid('PBES2 Salt Input must be 8 or more octets');\n }\n}\n\nfunction getCryptoKey$1(key) {\n if (key instanceof Uint8Array) {\n return crypto.subtle.importKey('raw', key, 'PBKDF2', false, ['deriveBits']);\n }\n if (isCryptoKey(key)) {\n return key;\n }\n throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'Uint8Array'));\n}\nconst encrypt$2 = async (alg, key, cek, p2c = Math.floor(Math.random() * 2049) + 2048, p2s$1 = random$1(new Uint8Array(16))) => {\n checkP2s(p2s$1);\n const salt = p2s(alg, p2s$1);\n const keylen = parseInt(alg.substr(13, 3), 10);\n const subtleAlg = {\n hash: { name: `SHA-${alg.substr(8, 3)}` },\n iterations: p2c,\n name: 'PBKDF2',\n salt,\n };\n const wrapAlg = {\n length: keylen,\n name: 'AES-KW',\n };\n const cryptoKey = await getCryptoKey$1(key);\n let derived;\n if (cryptoKey.usages.includes('deriveBits')) {\n derived = new Uint8Array(await crypto.subtle.deriveBits(subtleAlg, cryptoKey, keylen));\n }\n else if (cryptoKey.usages.includes('deriveKey')) {\n derived = await crypto.subtle.deriveKey(subtleAlg, cryptoKey, wrapAlg, false, ['wrapKey']);\n }\n else {\n throw new TypeError('PBKDF2 key \"usages\" must include \"deriveBits\" or \"deriveKey\"');\n }\n const encryptedKey = await wrap$1(alg.substr(-6), derived, cek);\n return { encryptedKey, p2c, p2s: encode$1(p2s$1) };\n};\nconst decrypt$1 = async (alg, key, encryptedKey, p2c, p2s$1) => {\n checkP2s(p2s$1);\n const salt = p2s(alg, p2s$1);\n const keylen = parseInt(alg.substr(13, 3), 10);\n const subtleAlg = {\n hash: { name: `SHA-${alg.substr(8, 3)}` },\n iterations: p2c,\n name: 'PBKDF2',\n salt,\n };\n const wrapAlg = {\n length: keylen,\n name: 'AES-KW',\n };\n const cryptoKey = await getCryptoKey$1(key);\n let derived;\n if (cryptoKey.usages.includes('deriveBits')) {\n derived = new Uint8Array(await crypto.subtle.deriveBits(subtleAlg, cryptoKey, keylen));\n }\n else if (cryptoKey.usages.includes('deriveKey')) {\n derived = await crypto.subtle.deriveKey(subtleAlg, cryptoKey, wrapAlg, false, ['unwrapKey']);\n }\n else {\n throw new TypeError('PBKDF2 key \"usages\" must include \"deriveBits\" or \"deriveKey\"');\n }\n return unwrap$1(alg.substr(-6), derived, encryptedKey);\n};\n\nfunction subtleRsaEs(alg) {\n switch (alg) {\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n return 'RSA-OAEP';\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n\nvar checkKeyLength = (alg, key) => {\n if (alg.startsWith('HS')) {\n const bitlen = parseInt(alg.substr(-3), 10);\n const { length } = key.algorithm;\n if (typeof length !== 'number' || length < bitlen) {\n throw new TypeError(`${alg} requires symmetric keys to be ${bitlen} bits or larger`);\n }\n }\n if (alg.startsWith('RS') || alg.startsWith('PS')) {\n const { modulusLength } = key.algorithm;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n }\n }\n};\n\nconst encrypt$1 = async (alg, key, cek) => {\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, 'CryptoKey'));\n }\n checkKeyLength(alg, key);\n if (key.usages.includes('encrypt')) {\n return new Uint8Array(await crypto.subtle.encrypt(subtleRsaEs(alg), key, cek));\n }\n if (key.usages.includes('wrapKey')) {\n const cryptoKeyCek = await crypto.subtle.importKey('raw', cek, ...bogusWebCrypto);\n return new Uint8Array(await crypto.subtle.wrapKey('raw', cryptoKeyCek, key, subtleRsaEs(alg)));\n }\n throw new TypeError('RSA-OAEP key \"usages\" must include \"encrypt\" or \"wrapKey\" for this operation');\n};\nconst decrypt = async (alg, key, encryptedKey) => {\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, 'CryptoKey'));\n }\n checkKeyLength(alg, key);\n if (key.usages.includes('decrypt')) {\n return new Uint8Array(await crypto.subtle.decrypt(subtleRsaEs(alg), key, encryptedKey));\n }\n if (key.usages.includes('unwrapKey')) {\n const cryptoKeyCek = await crypto.subtle.unwrapKey('raw', encryptedKey, key, subtleRsaEs(alg), ...bogusWebCrypto);\n return new Uint8Array(await crypto.subtle.exportKey('raw', cryptoKeyCek));\n }\n throw new TypeError('RSA-OAEP key \"usages\" must include \"decrypt\" or \"unwrapKey\" for this operation');\n};\n\nasync function cbcEncrypt(enc, plaintext, cek, iv, aad) {\n const keySize = parseInt(enc.substr(1, 3), 10);\n const encKey = await crypto.subtle.importKey('raw', cek.subarray(keySize >> 3), 'AES-CBC', false, ['encrypt']);\n const macKey = await crypto.subtle.importKey('raw', cek.subarray(0, keySize >> 3), {\n hash: { name: `SHA-${keySize << 1}` },\n name: 'HMAC',\n }, false, ['sign']);\n const ciphertext = new Uint8Array(await crypto.subtle.encrypt({\n iv,\n name: 'AES-CBC',\n }, encKey, plaintext));\n const macData = concat(aad, iv, ciphertext, uint64be(aad.length << 3));\n const tag = new Uint8Array((await crypto.subtle.sign('HMAC', macKey, macData)).slice(0, keySize >> 3));\n return { ciphertext, tag };\n}\nasync function gcmEncrypt(plaintext, cek, iv, aad) {\n const encKey = cek instanceof Uint8Array\n ? await crypto.subtle.importKey('raw', cek, 'AES-GCM', false, ['encrypt'])\n : cek;\n const encrypted = new Uint8Array(await crypto.subtle.encrypt({\n additionalData: aad,\n iv,\n name: 'AES-GCM',\n tagLength: 128,\n }, encKey, plaintext));\n const tag = encrypted.slice(-16);\n const ciphertext = encrypted.slice(0, -16);\n return { ciphertext, tag };\n}\nconst encrypt = async (enc, plaintext, cek, iv, aad) => {\n if (!isCryptoKey(cek) && !(cek instanceof Uint8Array)) {\n throw new TypeError(invalidKeyInput(cek, 'CryptoKey', 'Uint8Array'));\n }\n checkCekLength(enc, cek);\n checkIvLength(enc, iv);\n switch (enc) {\n case 'A128CBC-HS256':\n case 'A192CBC-HS384':\n case 'A256CBC-HS512':\n return cbcEncrypt(enc, plaintext, cek, iv, aad);\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM':\n return gcmEncrypt(plaintext, cek, iv, aad);\n default:\n throw new JOSENotSupported('unsupported JWE Content Encryption Algorithm');\n }\n};\n\nconst generateIv$1 = factory$1(random$1);\nconst wrap = async (alg, key, cek, iv) => {\n const jweAlgorithm = alg.substr(0, 7);\n iv || (iv = generateIv$1(jweAlgorithm));\n const { ciphertext: encryptedKey, tag } = await encrypt(jweAlgorithm, cek, key, iv, new Uint8Array(0));\n return { encryptedKey, iv: encode$1(iv), tag: encode$1(tag) };\n};\nconst unwrap = async (alg, key, encryptedKey, iv, tag) => {\n const jweAlgorithm = alg.substr(0, 7);\n return decrypt$2(jweAlgorithm, key, encryptedKey, iv, tag, new Uint8Array(0));\n};\n\nconst bitLengths = new Map([\n ['A128CBC-HS256', 256],\n ['A128GCM', 128],\n ['A192CBC-HS384', 384],\n ['A192GCM', 192],\n ['A256CBC-HS512', 512],\n ['A256GCM', 256],\n]);\nconst factory = (random) => (alg) => {\n const bitLength = bitLengths.get(alg);\n if (!bitLength) {\n throw new JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n }\n return random(new Uint8Array(bitLength >> 3));\n};\n\nfunction subtleMapping(jwk) {\n let algorithm;\n let keyUsages;\n switch (jwk.kty) {\n case 'oct': {\n switch (jwk.alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n algorithm = { name: 'HMAC', hash: { name: `SHA-${jwk.alg.substr(-3)}` } };\n keyUsages = ['sign', 'verify'];\n break;\n case 'A128CBC-HS256':\n case 'A192CBC-HS384':\n case 'A256CBC-HS512':\n throw new JOSENotSupported(`${jwk.alg} keys cannot be imported as CryptoKey instances`);\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM':\n case 'A128GCMKW':\n case 'A192GCMKW':\n case 'A256GCMKW':\n algorithm = { name: 'AES-GCM' };\n keyUsages = ['encrypt', 'decrypt'];\n break;\n case 'A128KW':\n case 'A192KW':\n case 'A256KW':\n algorithm = { name: 'AES-KW' };\n keyUsages = ['wrapKey', 'unwrapKey'];\n break;\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW':\n algorithm = { name: 'PBKDF2' };\n keyUsages = ['deriveBits'];\n break;\n default:\n throw new JOSENotSupported('unsupported or invalid JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'RSA': {\n switch (jwk.alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: { name: `SHA-${jwk.alg.substr(-3)}` } };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: { name: `SHA-${jwk.alg.substr(-3)}` } };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: { name: `SHA-${parseInt(jwk.alg.substr(-3), 10) || 1}` },\n };\n keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n break;\n default:\n throw new JOSENotSupported('unsupported or invalid JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'EC': {\n switch (jwk.alg) {\n case 'ES256':\n case 'ES384':\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: jwk.crv };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('unsupported or invalid JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n default:\n throw new JOSENotSupported('unsupported or invalid JWK \"kty\" (Key Type) Parameter value');\n }\n return { algorithm, keyUsages };\n}\nconst parse = async (jwk) => {\n var _a, _b;\n const { algorithm, keyUsages } = subtleMapping(jwk);\n let format = 'jwk';\n let keyData = { ...jwk };\n delete keyData.alg;\n if (algorithm.name === 'PBKDF2') {\n format = 'raw';\n keyData = decode$1(jwk.k);\n }\n return crypto.subtle.importKey(format, keyData, algorithm, (_a = jwk.ext) !== null && _a !== void 0 ? _a : false, (_b = jwk.key_ops) !== null && _b !== void 0 ? _b : keyUsages);\n};\n\nasync function parseJwk(jwk, alg, octAsKeyObject) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n alg || (alg = jwk.alg);\n if (typeof alg !== 'string' || !alg) {\n throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n }\n switch (jwk.kty) {\n case 'oct':\n if (typeof jwk.k !== 'string' || !jwk.k) {\n throw new TypeError('missing \"k\" (Key Value) Parameter value');\n }\n octAsKeyObject !== null && octAsKeyObject !== void 0 ? octAsKeyObject : (octAsKeyObject = jwk.ext !== true);\n if (octAsKeyObject) {\n return parse({ ...jwk, alg, ext: false });\n }\n return decode$1(jwk.k);\n case 'RSA':\n if (jwk.oth !== undefined) {\n throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n }\n case 'EC':\n case 'OKP':\n return parse({ ...jwk, alg });\n default:\n throw new JOSENotSupported('unsupported \"kty\" (Key Type) Parameter value');\n }\n}\n\nconst checkKeyType = (alg, key, usage) => {\n if (!(key instanceof Uint8Array) && !(key === null || key === void 0 ? void 0 : key.type)) {\n throw new TypeError(invalidKeyInput(key, 'KeyObject', 'CryptoKey', 'Uint8Array'));\n }\n if (alg.startsWith('HS') ||\n alg === 'dir' ||\n alg.startsWith('PBES2') ||\n alg.match(/^A\\d{3}(?:GCM)?KW$/)) {\n if (key instanceof Uint8Array || key.type === 'secret') {\n return;\n }\n throw new TypeError('CryptoKey or KeyObject instances for symmetric algorithms must be of type \"secret\"');\n }\n if (key instanceof Uint8Array) {\n throw new TypeError(invalidKeyInput(key, 'KeyObject', 'CryptoKey'));\n }\n if (key.type === 'secret') {\n throw new TypeError('CryptoKey or KeyObject instances for asymmetric algorithms must not be of type \"secret\"');\n }\n if (usage === 'sign' && key.type === 'public') {\n throw new TypeError('CryptoKey or KeyObject instances for asymmetric algorithm signing must be of type \"private\"');\n }\n if (usage === 'decrypt' && key.type === 'public') {\n throw new TypeError('CryptoKey or KeyObject instances for asymmetric algorithm decryption must be of type \"private\"');\n }\n};\n\nfunction assertEnryptedKey(encryptedKey) {\n if (!encryptedKey) {\n throw new JWEInvalid('JWE Encrypted Key missing');\n }\n}\nfunction assertHeaderParameter(joseHeader, parameter, name) {\n if (joseHeader[parameter] === undefined) {\n throw new JWEInvalid(`JOSE Header ${name} (${parameter}) missing`);\n }\n}\nasync function decryptKeyManagement(alg, key, encryptedKey, joseHeader) {\n checkKeyType(alg, key, 'decrypt');\n switch (alg) {\n case 'dir': {\n if (encryptedKey !== undefined) {\n throw new JWEInvalid('Encountered unexpected JWE Encrypted Key');\n }\n return key;\n }\n case 'ECDH-ES':\n if (encryptedKey !== undefined) {\n throw new JWEInvalid('Encountered unexpected JWE Encrypted Key');\n }\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW': {\n assertHeaderParameter(joseHeader, 'epk', 'Ephemeral Public Key');\n if (!ecdhAllowed(key)) {\n throw new JOSENotSupported('ECDH-ES with the provided key is not allowed or not supported by your javascript runtime');\n }\n const epk = await parseJwk(joseHeader.epk, alg);\n let partyUInfo;\n let partyVInfo;\n if (joseHeader.apu !== undefined)\n partyUInfo = decode$1(joseHeader.apu);\n if (joseHeader.apv !== undefined)\n partyVInfo = decode$1(joseHeader.apv);\n const sharedSecret = await deriveKey(epk, key, alg === 'ECDH-ES' ? joseHeader.enc : alg, parseInt(alg.substr(-5, 3), 10) || bitLengths.get(joseHeader.enc), partyUInfo, partyVInfo);\n if (alg === 'ECDH-ES') {\n return sharedSecret;\n }\n assertEnryptedKey(encryptedKey);\n const kwAlg = alg.substr(-6);\n return unwrap$1(kwAlg, sharedSecret, encryptedKey);\n }\n case 'RSA1_5':\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512': {\n assertEnryptedKey(encryptedKey);\n return decrypt(alg, key, encryptedKey);\n }\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW': {\n assertEnryptedKey(encryptedKey);\n assertHeaderParameter(joseHeader, 'p2c', 'PBES2 Count');\n assertHeaderParameter(joseHeader, 'p2s', 'PBES2 Salt');\n const { p2c } = joseHeader;\n const p2s = decode$1(joseHeader.p2s);\n return decrypt$1(alg, key, encryptedKey, p2c, p2s);\n }\n case 'A128KW':\n case 'A192KW':\n case 'A256KW': {\n assertEnryptedKey(encryptedKey);\n return unwrap$1(alg, key, encryptedKey);\n }\n case 'A128GCMKW':\n case 'A192GCMKW':\n case 'A256GCMKW': {\n assertEnryptedKey(encryptedKey);\n assertHeaderParameter(joseHeader, 'iv', 'Initialization Vector');\n assertHeaderParameter(joseHeader, 'tag', 'Authentication Tag');\n const iv = decode$1(joseHeader.iv);\n const tag = decode$1(joseHeader.tag);\n return unwrap(alg, key, encryptedKey, iv, tag);\n }\n default: {\n throw new JOSENotSupported('unsupported or invalid \"alg\" (JWE Algorithm) header value');\n }\n }\n}\n\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n if (joseHeader.crit !== undefined && protectedHeader.crit === undefined) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n }\n if (!protectedHeader || protectedHeader.crit === undefined) {\n return new Set();\n }\n if (!Array.isArray(protectedHeader.crit) ||\n protectedHeader.crit.length === 0 ||\n protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n }\n let recognized;\n if (recognizedOption !== undefined) {\n recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n }\n else {\n recognized = recognizedDefault;\n }\n for (const parameter of protectedHeader.crit) {\n if (!recognized.has(parameter)) {\n throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n }\n if (joseHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n }\n else if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n }\n }\n return new Set(protectedHeader.crit);\n}\n\nconst validateAlgorithms = (option, algorithms) => {\n if (algorithms !== undefined &&\n (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n throw new TypeError(`\"${option}\" option must be an array of strings`);\n }\n if (!algorithms) {\n return undefined;\n }\n return new Set(algorithms);\n};\n\nconst generateCek$1 = factory(random$1);\nconst checkExtensions$3 = validateCrit.bind(undefined, JWEInvalid, new Map());\nconst checkAlgOption$1 = validateAlgorithms.bind(undefined, 'keyManagementAlgorithms');\nconst checkEncOption = validateAlgorithms.bind(undefined, 'contentEncryptionAlgorithms');\nasync function flattenedDecrypt(jwe, key, options) {\n var _a;\n if (!isObject(jwe)) {\n throw new JWEInvalid('Flattened JWE must be an object');\n }\n if (jwe.protected === undefined && jwe.header === undefined && jwe.unprotected === undefined) {\n throw new JWEInvalid('JOSE Header missing');\n }\n if (typeof jwe.iv !== 'string') {\n throw new JWEInvalid('JWE Initialization Vector missing or incorrect type');\n }\n if (typeof jwe.ciphertext !== 'string') {\n throw new JWEInvalid('JWE Ciphertext missing or incorrect type');\n }\n if (typeof jwe.tag !== 'string') {\n throw new JWEInvalid('JWE Authentication Tag missing or incorrect type');\n }\n if (jwe.protected !== undefined && typeof jwe.protected !== 'string') {\n throw new JWEInvalid('JWE Protected Header incorrect type');\n }\n if (jwe.encrypted_key !== undefined && typeof jwe.encrypted_key !== 'string') {\n throw new JWEInvalid('JWE Encrypted Key incorrect type');\n }\n if (jwe.aad !== undefined && typeof jwe.aad !== 'string') {\n throw new JWEInvalid('JWE AAD incorrect type');\n }\n if (jwe.header !== undefined && !isObject(jwe.header)) {\n throw new JWEInvalid('JWE Shared Unprotected Header incorrect type');\n }\n if (jwe.unprotected !== undefined && !isObject(jwe.unprotected)) {\n throw new JWEInvalid('JWE Per-Recipient Unprotected Header incorrect type');\n }\n let parsedProt;\n if (jwe.protected) {\n const protectedHeader = decode$1(jwe.protected);\n try {\n parsedProt = JSON.parse(decoder.decode(protectedHeader));\n }\n catch (_b) {\n throw new JWEInvalid('JWE Protected Header is invalid');\n }\n }\n if (!isDisjoint(parsedProt, jwe.header, jwe.unprotected)) {\n throw new JWEInvalid('JWE Protected, JWE Unprotected Header, and JWE Per-Recipient Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...parsedProt,\n ...jwe.header,\n ...jwe.unprotected,\n };\n checkExtensions$3(options === null || options === void 0 ? void 0 : options.crit, parsedProt, joseHeader);\n if (joseHeader.zip !== undefined) {\n if (!parsedProt || !parsedProt.zip) {\n throw new JWEInvalid('JWE \"zip\" (Compression Algorithm) Header MUST be integrity protected');\n }\n if (joseHeader.zip !== 'DEF') {\n throw new JOSENotSupported('unsupported JWE \"zip\" (Compression Algorithm) Header Parameter value');\n }\n }\n const { alg, enc } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWEInvalid('missing JWE Algorithm (alg) in JWE Header');\n }\n if (typeof enc !== 'string' || !enc) {\n throw new JWEInvalid('missing JWE Encryption Algorithm (enc) in JWE Header');\n }\n const keyManagementAlgorithms = options && checkAlgOption$1(options.keyManagementAlgorithms);\n const contentEncryptionAlgorithms = options && checkEncOption(options.contentEncryptionAlgorithms);\n if (keyManagementAlgorithms && !keyManagementAlgorithms.has(alg)) {\n throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter not allowed');\n }\n if (contentEncryptionAlgorithms && !contentEncryptionAlgorithms.has(enc)) {\n throw new JOSEAlgNotAllowed('\"enc\" (Encryption Algorithm) Header Parameter not allowed');\n }\n let encryptedKey;\n if (jwe.encrypted_key !== undefined) {\n encryptedKey = decode$1(jwe.encrypted_key);\n }\n if (typeof key === 'function') {\n key = await key(parsedProt, jwe);\n }\n let cek;\n try {\n cek = await decryptKeyManagement(alg, key, encryptedKey, joseHeader);\n }\n catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n cek = generateCek$1(enc);\n }\n const iv = decode$1(jwe.iv);\n const tag = decode$1(jwe.tag);\n const protectedHeader = encoder.encode((_a = jwe.protected) !== null && _a !== void 0 ? _a : '');\n let additionalData;\n if (jwe.aad !== undefined) {\n additionalData = concat(protectedHeader, encoder.encode('.'), encoder.encode(jwe.aad));\n }\n else {\n additionalData = protectedHeader;\n }\n let plaintext = await decrypt$2(enc, cek, decode$1(jwe.ciphertext), iv, tag, additionalData);\n if (joseHeader.zip === 'DEF') {\n plaintext = await ((options === null || options === void 0 ? void 0 : options.inflateRaw) || inflate)(plaintext);\n }\n const result = { plaintext };\n if (jwe.protected !== undefined) {\n result.protectedHeader = parsedProt;\n }\n if (jwe.aad !== undefined) {\n result.additionalAuthenticatedData = decode$1(jwe.aad);\n }\n if (jwe.unprotected !== undefined) {\n result.sharedUnprotectedHeader = jwe.unprotected;\n }\n if (jwe.header !== undefined) {\n result.unprotectedHeader = jwe.header;\n }\n return result;\n}\n\nasync function compactDecrypt(jwe, key, options) {\n if (jwe instanceof Uint8Array) {\n jwe = decoder.decode(jwe);\n }\n if (typeof jwe !== 'string') {\n throw new JWEInvalid('Compact JWE must be a string or Uint8Array');\n }\n const { 0: protectedHeader, 1: encryptedKey, 2: iv, 3: ciphertext, 4: tag, length, } = jwe.split('.');\n if (length !== 5) {\n throw new JWEInvalid('Invalid Compact JWE');\n }\n const decrypted = await flattenedDecrypt({\n ciphertext: (ciphertext || undefined),\n iv: (iv || undefined),\n protected: protectedHeader || undefined,\n tag: (tag || undefined),\n encrypted_key: encryptedKey || undefined,\n }, key, options);\n return { plaintext: decrypted.plaintext, protectedHeader: decrypted.protectedHeader };\n}\n\nconst keyToJWK = async (key) => {\n if (key instanceof Uint8Array) {\n return {\n kty: 'oct',\n k: encode$1(key),\n };\n }\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'Uint8Array'));\n }\n if (!key.extractable) {\n throw new TypeError('non-extractable CryptoKey cannot be exported as a JWK');\n }\n const { ext, key_ops, alg, use, ...jwk } = await crypto.subtle.exportKey('jwk', key);\n return jwk;\n};\n\nasync function fromKeyLike(key) {\n return keyToJWK(key);\n}\n\nconst generateCek = factory(random$1);\nasync function encryptKeyManagement(alg, enc, key, providedCek, providedParameters = {}) {\n let encryptedKey;\n let parameters;\n let cek;\n checkKeyType(alg, key, 'encrypt');\n switch (alg) {\n case 'dir': {\n cek = key;\n break;\n }\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW': {\n if (!ecdhAllowed(key)) {\n throw new JOSENotSupported('ECDH-ES with the provided key is not allowed or not supported by your javascript runtime');\n }\n const { apu, apv } = providedParameters;\n let { epk: ephemeralKey } = providedParameters;\n ephemeralKey || (ephemeralKey = await generateEpk(key));\n const { x, y, crv, kty } = await fromKeyLike(ephemeralKey);\n const sharedSecret = await deriveKey(key, ephemeralKey, alg === 'ECDH-ES' ? enc : alg, parseInt(alg.substr(-5, 3), 10) || bitLengths.get(enc), apu, apv);\n parameters = { epk: { x, y, crv, kty } };\n if (apu)\n parameters.apu = encode$1(apu);\n if (apv)\n parameters.apv = encode$1(apv);\n if (alg === 'ECDH-ES') {\n cek = sharedSecret;\n break;\n }\n cek = providedCek || generateCek(enc);\n const kwAlg = alg.substr(-6);\n encryptedKey = await wrap$1(kwAlg, sharedSecret, cek);\n break;\n }\n case 'RSA1_5':\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512': {\n cek = providedCek || generateCek(enc);\n encryptedKey = await encrypt$1(alg, key, cek);\n break;\n }\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW': {\n cek = providedCek || generateCek(enc);\n const { p2c, p2s } = providedParameters;\n ({ encryptedKey, ...parameters } = await encrypt$2(alg, key, cek, p2c, p2s));\n break;\n }\n case 'A128KW':\n case 'A192KW':\n case 'A256KW': {\n cek = providedCek || generateCek(enc);\n encryptedKey = await wrap$1(alg, key, cek);\n break;\n }\n case 'A128GCMKW':\n case 'A192GCMKW':\n case 'A256GCMKW': {\n cek = providedCek || generateCek(enc);\n const { iv } = providedParameters;\n ({ encryptedKey, ...parameters } = await wrap(alg, key, cek, iv));\n break;\n }\n default: {\n throw new JOSENotSupported('unsupported or invalid \"alg\" (JWE Algorithm) header value');\n }\n }\n return { cek, encryptedKey, parameters };\n}\n\nconst generateIv = factory$1(random$1);\nconst checkExtensions$2 = validateCrit.bind(undefined, JWEInvalid, new Map());\nclass FlattenedEncrypt {\n constructor(plaintext) {\n this._plaintext = plaintext;\n }\n setKeyManagementParameters(parameters) {\n if (this._keyManagementParameters) {\n throw new TypeError('setKeyManagementParameters can only be called once');\n }\n this._keyManagementParameters = parameters;\n return this;\n }\n setProtectedHeader(protectedHeader) {\n if (this._protectedHeader) {\n throw new TypeError('setProtectedHeader can only be called once');\n }\n this._protectedHeader = protectedHeader;\n return this;\n }\n setSharedUnprotectedHeader(sharedUnprotectedHeader) {\n if (this._sharedUnprotectedHeader) {\n throw new TypeError('setSharedUnprotectedHeader can only be called once');\n }\n this._sharedUnprotectedHeader = sharedUnprotectedHeader;\n return this;\n }\n setUnprotectedHeader(unprotectedHeader) {\n if (this._unprotectedHeader) {\n throw new TypeError('setUnprotectedHeader can only be called once');\n }\n this._unprotectedHeader = unprotectedHeader;\n return this;\n }\n setAdditionalAuthenticatedData(aad) {\n this._aad = aad;\n return this;\n }\n setContentEncryptionKey(cek) {\n if (this._cek) {\n throw new TypeError('setContentEncryptionKey can only be called once');\n }\n this._cek = cek;\n return this;\n }\n setInitializationVector(iv) {\n if (this._iv) {\n throw new TypeError('setInitializationVector can only be called once');\n }\n this._iv = iv;\n return this;\n }\n async encrypt(key, options) {\n if (!this._protectedHeader && !this._unprotectedHeader && !this._sharedUnprotectedHeader) {\n throw new JWEInvalid('either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()');\n }\n if (!isDisjoint(this._protectedHeader, this._unprotectedHeader, this._sharedUnprotectedHeader)) {\n throw new JWEInvalid('JWE Shared Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...this._protectedHeader,\n ...this._unprotectedHeader,\n ...this._sharedUnprotectedHeader,\n };\n checkExtensions$2(options === null || options === void 0 ? void 0 : options.crit, this._protectedHeader, joseHeader);\n if (joseHeader.zip !== undefined) {\n if (!this._protectedHeader || !this._protectedHeader.zip) {\n throw new JWEInvalid('JWE \"zip\" (Compression Algorithm) Header MUST be integrity protected');\n }\n if (joseHeader.zip !== 'DEF') {\n throw new JOSENotSupported('unsupported JWE \"zip\" (Compression Algorithm) Header Parameter value');\n }\n }\n const { alg, enc } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWEInvalid('JWE \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n if (typeof enc !== 'string' || !enc) {\n throw new JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter missing or invalid');\n }\n let encryptedKey;\n if (alg === 'dir') {\n if (this._cek) {\n throw new TypeError('setContentEncryptionKey cannot be called when using Direct Encryption');\n }\n }\n else if (alg === 'ECDH-ES') {\n if (this._cek) {\n throw new TypeError('setContentEncryptionKey cannot be called when using Direct Key Agreement');\n }\n }\n let cek;\n {\n let parameters;\n ({ cek, encryptedKey, parameters } = await encryptKeyManagement(alg, enc, key, this._cek, this._keyManagementParameters));\n if (parameters) {\n if (!this._protectedHeader) {\n this.setProtectedHeader(parameters);\n }\n else {\n this._protectedHeader = { ...this._protectedHeader, ...parameters };\n }\n }\n }\n this._iv || (this._iv = generateIv(enc));\n let additionalData;\n let protectedHeader;\n let aadMember;\n if (this._protectedHeader) {\n protectedHeader = encoder.encode(encode$1(JSON.stringify(this._protectedHeader)));\n }\n else {\n protectedHeader = encoder.encode('');\n }\n if (this._aad) {\n aadMember = encode$1(this._aad);\n additionalData = concat(protectedHeader, encoder.encode('.'), encoder.encode(aadMember));\n }\n else {\n additionalData = protectedHeader;\n }\n let ciphertext;\n let tag;\n if (joseHeader.zip === 'DEF') {\n const deflated = await ((options === null || options === void 0 ? void 0 : options.deflateRaw) || deflate)(this._plaintext);\n ({ ciphertext, tag } = await encrypt(enc, deflated, cek, this._iv, additionalData));\n }\n else {\n ({ ciphertext, tag } = await encrypt(enc, this._plaintext, cek, this._iv, additionalData));\n }\n const jwe = {\n ciphertext: encode$1(ciphertext),\n iv: encode$1(this._iv),\n tag: encode$1(tag),\n };\n if (encryptedKey) {\n jwe.encrypted_key = encode$1(encryptedKey);\n }\n if (aadMember) {\n jwe.aad = aadMember;\n }\n if (this._protectedHeader) {\n jwe.protected = decoder.decode(protectedHeader);\n }\n if (this._sharedUnprotectedHeader) {\n jwe.unprotected = this._sharedUnprotectedHeader;\n }\n if (this._unprotectedHeader) {\n jwe.header = this._unprotectedHeader;\n }\n return jwe;\n }\n}\n\nclass CompactEncrypt {\n constructor(plaintext) {\n this._flattened = new FlattenedEncrypt(plaintext);\n }\n setContentEncryptionKey(cek) {\n this._flattened.setContentEncryptionKey(cek);\n return this;\n }\n setInitializationVector(iv) {\n this._flattened.setInitializationVector(iv);\n return this;\n }\n setProtectedHeader(protectedHeader) {\n this._flattened.setProtectedHeader(protectedHeader);\n return this;\n }\n setKeyManagementParameters(parameters) {\n this._flattened.setKeyManagementParameters(parameters);\n return this;\n }\n async encrypt(key, options) {\n const jwe = await this._flattened.encrypt(key, options);\n return [jwe.protected, jwe.encrypted_key, jwe.iv, jwe.ciphertext, jwe.tag].join('.');\n }\n}\n\nasync function generalDecrypt(jwe, key, options) {\n if (!isObject(jwe)) {\n throw new JWEInvalid('General JWE must be an object');\n }\n if (!Array.isArray(jwe.recipients) || !jwe.recipients.every(isObject)) {\n throw new JWEInvalid('JWE Recipients missing or incorrect type');\n }\n for (const recipient of jwe.recipients) {\n try {\n return await flattenedDecrypt({\n aad: jwe.aad,\n ciphertext: jwe.ciphertext,\n encrypted_key: recipient.encrypted_key,\n header: recipient.header,\n iv: jwe.iv,\n protected: jwe.protected,\n tag: jwe.tag,\n unprotected: jwe.unprotected,\n }, key, options);\n }\n catch (_a) {\n }\n }\n throw new JWEDecryptionFailed();\n}\n\nasync function EmbeddedJWK(protectedHeader, token) {\n const joseHeader = {\n ...protectedHeader,\n ...token.header,\n };\n if (!isObject(joseHeader.jwk)) {\n throw new JWSInvalid('\"jwk\" (JSON Web Key) Header Parameter must be a JSON object');\n }\n const key = await parseJwk(joseHeader.jwk, joseHeader.alg, true);\n if (key.type !== 'public') {\n throw new JWSInvalid('\"jwk\" (JSON Web Key) Header Parameter must be a public key');\n }\n return key;\n}\n\nconst check = (value, description) => {\n if (typeof value !== 'string' || !value) {\n throw new JWKInvalid(`${description} missing or invalid`);\n }\n};\nasync function calculateThumbprint(jwk, digestAlgorithm = 'sha256') {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n let components;\n switch (jwk.kty) {\n case 'EC':\n check(jwk.crv, '\"crv\" (Curve) Parameter');\n check(jwk.x, '\"x\" (X Coordinate) Parameter');\n check(jwk.y, '\"y\" (Y Coordinate) Parameter');\n components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x, y: jwk.y };\n break;\n case 'OKP':\n check(jwk.crv, '\"crv\" (Subtype of Key Pair) Parameter');\n check(jwk.x, '\"x\" (Public Key) Parameter');\n components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x };\n break;\n case 'RSA':\n check(jwk.e, '\"e\" (Exponent) Parameter');\n check(jwk.n, '\"n\" (Modulus) Parameter');\n components = { e: jwk.e, kty: jwk.kty, n: jwk.n };\n break;\n case 'oct':\n check(jwk.k, '\"k\" (Key Value) Parameter');\n components = { k: jwk.k, kty: jwk.kty };\n break;\n default:\n throw new JOSENotSupported('\"kty\" (Key Type) Parameter missing or unsupported');\n }\n const data = encoder.encode(JSON.stringify(components));\n return encode$1(await digest(digestAlgorithm, data));\n}\n\nconst fetchJwks = async (url, timeout) => {\n let controller;\n if (typeof AbortController === 'function') {\n controller = new AbortController();\n setTimeout(() => controller.abort(), timeout);\n }\n const response = await globalThis$1.fetch(url.href, {\n signal: controller ? controller.signal : undefined,\n redirect: 'manual',\n referrerPolicy: 'no-referrer',\n credentials: 'omit',\n mode: 'cors',\n method: 'GET',\n });\n if (response.status !== 200) {\n throw new JOSEError('Expected 200 OK from the JSON Web Key Set HTTP response');\n }\n try {\n return await response.json();\n }\n catch (_a) {\n throw new JOSEError('Failed to parse the JSON Web Key Set HTTP response as JSON');\n }\n};\n\nfunction getKtyFromAlg(alg) {\n switch (alg.substr(0, 2)) {\n case 'RS':\n case 'PS':\n return 'RSA';\n case 'ES':\n return 'EC';\n case 'Ed':\n return 'OKP';\n default:\n throw new JOSENotSupported('Unsupported \"alg\" value for a JSON Web Key Set');\n }\n}\nfunction isJWKLike(key) {\n return isObject(key);\n}\nclass RemoteJWKSet {\n constructor(url, options) {\n this._cached = new WeakMap();\n if (!(url instanceof URL)) {\n throw new TypeError('url must be an instance of URL');\n }\n this._url = new URL(url.href);\n this._options = { agent: options === null || options === void 0 ? void 0 : options.agent };\n this._timeoutDuration =\n typeof (options === null || options === void 0 ? void 0 : options.timeoutDuration) === 'number' ? options === null || options === void 0 ? void 0 : options.timeoutDuration : 5000;\n this._cooldownDuration =\n typeof (options === null || options === void 0 ? void 0 : options.cooldownDuration) === 'number' ? options === null || options === void 0 ? void 0 : options.cooldownDuration : 30000;\n }\n coolingDown() {\n if (typeof this._cooldownStarted === 'undefined') {\n return false;\n }\n return Date.now() < this._cooldownStarted + this._cooldownDuration;\n }\n async getKey(protectedHeader) {\n if (!this._jwks) {\n await this.reload();\n }\n const candidates = this._jwks.keys.filter((jwk) => {\n let candidate = jwk.kty === getKtyFromAlg(protectedHeader.alg);\n if (candidate && typeof protectedHeader.kid === 'string') {\n candidate = protectedHeader.kid === jwk.kid;\n }\n if (candidate && typeof jwk.alg === 'string') {\n candidate = protectedHeader.alg === jwk.alg;\n }\n if (candidate && typeof jwk.use === 'string') {\n candidate = jwk.use === 'sig';\n }\n if (candidate && Array.isArray(jwk.key_ops)) {\n candidate = jwk.key_ops.includes('verify');\n }\n if (candidate && protectedHeader.alg === 'EdDSA') {\n candidate = ['Ed25519', 'Ed448'].includes(jwk.crv);\n }\n if (candidate) {\n switch (protectedHeader.alg) {\n case 'ES256':\n candidate = jwk.crv === 'P-256';\n break;\n case 'ES256K':\n candidate = jwk.crv === 'secp256k1';\n break;\n case 'ES384':\n candidate = jwk.crv === 'P-384';\n break;\n case 'ES512':\n candidate = jwk.crv === 'P-521';\n break;\n }\n }\n return candidate;\n });\n const { 0: jwk, length } = candidates;\n if (length === 0) {\n if (this.coolingDown() === false) {\n await this.reload();\n return this.getKey(protectedHeader);\n }\n throw new JWKSNoMatchingKey();\n }\n else if (length !== 1) {\n throw new JWKSMultipleMatchingKeys();\n }\n if (!this._cached.has(jwk)) {\n this._cached.set(jwk, {});\n }\n const cached = this._cached.get(jwk);\n if (cached[protectedHeader.alg] === undefined) {\n const keyObject = (await parseJwk({ ...jwk, alg: protectedHeader.alg }));\n if (keyObject.type !== 'public') {\n throw new JWKSInvalid('JSON Web Key Set members must be public keys');\n }\n cached[protectedHeader.alg] = keyObject;\n }\n return cached[protectedHeader.alg];\n }\n async reload() {\n if (!this._pendingFetch) {\n this._pendingFetch = fetchJwks(this._url, this._timeoutDuration, this._options)\n .then((json) => {\n if (typeof json !== 'object' ||\n !json ||\n !Array.isArray(json.keys) ||\n !json.keys.every(isJWKLike)) {\n throw new JWKSInvalid('JSON Web Key Set malformed');\n }\n this._jwks = { keys: json.keys };\n this._cooldownStarted = Date.now();\n this._pendingFetch = undefined;\n })\n .catch((err) => {\n this._pendingFetch = undefined;\n throw err;\n });\n }\n await this._pendingFetch;\n }\n}\nfunction createRemoteJWKSet(url, options) {\n const set = new RemoteJWKSet(url, options);\n return set.getKey.bind(set);\n}\n\nfunction subtleDsa(alg) {\n switch (alg) {\n case 'HS256':\n return { hash: { name: 'SHA-256' }, name: 'HMAC' };\n case 'HS384':\n return { hash: { name: 'SHA-384' }, name: 'HMAC' };\n case 'HS512':\n return { hash: { name: 'SHA-512' }, name: 'HMAC' };\n case 'PS256':\n return {\n hash: { name: 'SHA-256' },\n name: 'RSA-PSS',\n saltLength: 256 >> 3,\n };\n case 'PS384':\n return {\n hash: { name: 'SHA-384' },\n name: 'RSA-PSS',\n saltLength: 384 >> 3,\n };\n case 'PS512':\n return {\n hash: { name: 'SHA-512' },\n name: 'RSA-PSS',\n saltLength: 512 >> 3,\n };\n case 'RS256':\n return { hash: { name: 'SHA-256' }, name: 'RSASSA-PKCS1-v1_5' };\n case 'RS384':\n return { hash: { name: 'SHA-384' }, name: 'RSASSA-PKCS1-v1_5' };\n case 'RS512':\n return { hash: { name: 'SHA-512' }, name: 'RSASSA-PKCS1-v1_5' };\n case 'ES256':\n return { hash: { name: 'SHA-256' }, name: 'ECDSA', namedCurve: 'P-256' };\n case 'ES384':\n return { hash: { name: 'SHA-384' }, name: 'ECDSA', namedCurve: 'P-384' };\n case 'ES512':\n return { hash: { name: 'SHA-512' }, name: 'ECDSA', namedCurve: 'P-521' };\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n\nfunction getCryptoKey(alg, key, usage) {\n if (isCryptoKey(key)) {\n return key;\n }\n if (key instanceof Uint8Array) {\n if (!alg.startsWith('HS')) {\n throw new TypeError(invalidKeyInput(key, 'CryptoKey'));\n }\n return crypto.subtle.importKey('raw', key, { hash: { name: `SHA-${alg.substr(-3)}` }, name: 'HMAC' }, false, [usage]);\n }\n throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'Uint8Array'));\n}\n\nconst sign = async (alg, key, data) => {\n const cryptoKey = await getCryptoKey(alg, key, 'sign');\n checkKeyLength(alg, cryptoKey);\n const signature = await crypto.subtle.sign(subtleDsa(alg), cryptoKey, data);\n return new Uint8Array(signature);\n};\n\nconst checkExtensions$1 = validateCrit.bind(undefined, JWSInvalid, new Map([['b64', true]]));\nclass FlattenedSign {\n constructor(payload) {\n this._payload = payload;\n }\n setProtectedHeader(protectedHeader) {\n if (this._protectedHeader) {\n throw new TypeError('setProtectedHeader can only be called once');\n }\n this._protectedHeader = protectedHeader;\n return this;\n }\n setUnprotectedHeader(unprotectedHeader) {\n if (this._unprotectedHeader) {\n throw new TypeError('setUnprotectedHeader can only be called once');\n }\n this._unprotectedHeader = unprotectedHeader;\n return this;\n }\n async sign(key, options) {\n if (!this._protectedHeader && !this._unprotectedHeader) {\n throw new JWSInvalid('either setProtectedHeader or setUnprotectedHeader must be called before #sign()');\n }\n if (!isDisjoint(this._protectedHeader, this._unprotectedHeader)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...this._protectedHeader,\n ...this._unprotectedHeader,\n };\n const extensions = checkExtensions$1(options === null || options === void 0 ? void 0 : options.crit, this._protectedHeader, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = this._protectedHeader.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n checkKeyType(alg, key, 'sign');\n let payload = this._payload;\n if (b64) {\n payload = encoder.encode(encode$1(payload));\n }\n let protectedHeader;\n if (this._protectedHeader) {\n protectedHeader = encoder.encode(encode$1(JSON.stringify(this._protectedHeader)));\n }\n else {\n protectedHeader = encoder.encode('');\n }\n const data = concat(protectedHeader, encoder.encode('.'), payload);\n const signature = await sign(alg, key, data);\n const jws = {\n signature: encode$1(signature),\n payload: '',\n };\n if (b64) {\n jws.payload = decoder.decode(payload);\n }\n if (this._unprotectedHeader) {\n jws.header = this._unprotectedHeader;\n }\n if (this._protectedHeader) {\n jws.protected = decoder.decode(protectedHeader);\n }\n return jws;\n }\n}\n\nclass CompactSign {\n constructor(payload) {\n this._flattened = new FlattenedSign(payload);\n }\n setProtectedHeader(protectedHeader) {\n this._flattened.setProtectedHeader(protectedHeader);\n return this;\n }\n async sign(key, options) {\n const jws = await this._flattened.sign(key, options);\n if (jws.payload === undefined) {\n throw new TypeError('use the flattened module for creating JWS with b64: false');\n }\n return `${jws.protected}.${jws.payload}.${jws.signature}`;\n }\n}\n\nconst verify = async (alg, key, signature, data) => {\n const cryptoKey = await getCryptoKey(alg, key, 'verify');\n checkKeyLength(alg, cryptoKey);\n const algorithm = subtleDsa(alg);\n try {\n return await crypto.subtle.verify(algorithm, cryptoKey, signature, data);\n }\n catch (_a) {\n return false;\n }\n};\n\nconst checkExtensions = validateCrit.bind(undefined, JWSInvalid, new Map([['b64', true]]));\nconst checkAlgOption = validateAlgorithms.bind(undefined, 'algorithms');\nasync function flattenedVerify(jws, key, options) {\n var _a;\n if (!isObject(jws)) {\n throw new JWSInvalid('Flattened JWS must be an object');\n }\n if (jws.protected === undefined && jws.header === undefined) {\n throw new JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n }\n if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n throw new JWSInvalid('JWS Protected Header incorrect type');\n }\n if (jws.payload === undefined) {\n throw new JWSInvalid('JWS Payload missing');\n }\n if (typeof jws.signature !== 'string') {\n throw new JWSInvalid('JWS Signature missing or incorrect type');\n }\n if (jws.header !== undefined && !isObject(jws.header)) {\n throw new JWSInvalid('JWS Unprotected Header incorrect type');\n }\n let parsedProt = {};\n if (jws.protected) {\n const protectedHeader = decode$1(jws.protected);\n try {\n parsedProt = JSON.parse(decoder.decode(protectedHeader));\n }\n catch (_b) {\n throw new JWSInvalid('JWS Protected Header is invalid');\n }\n }\n if (!isDisjoint(parsedProt, jws.header)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...parsedProt,\n ...jws.header,\n };\n const extensions = checkExtensions(options === null || options === void 0 ? void 0 : options.crit, parsedProt, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = parsedProt.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n const algorithms = options && checkAlgOption(options.algorithms);\n if (algorithms && !algorithms.has(alg)) {\n throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter not allowed');\n }\n if (b64) {\n if (typeof jws.payload !== 'string') {\n throw new JWSInvalid('JWS Payload must be a string');\n }\n }\n else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n throw new JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n }\n if (typeof key === 'function') {\n key = await key(parsedProt, jws);\n }\n checkKeyType(alg, key, 'verify');\n const data = concat(encoder.encode((_a = jws.protected) !== null && _a !== void 0 ? _a : ''), encoder.encode('.'), typeof jws.payload === 'string' ? encoder.encode(jws.payload) : jws.payload);\n const signature = decode$1(jws.signature);\n const verified = await verify(alg, key, signature, data);\n if (!verified) {\n throw new JWSSignatureVerificationFailed();\n }\n let payload;\n if (b64) {\n payload = decode$1(jws.payload);\n }\n else if (typeof jws.payload === 'string') {\n payload = encoder.encode(jws.payload);\n }\n else {\n payload = jws.payload;\n }\n const result = { payload };\n if (jws.protected !== undefined) {\n result.protectedHeader = parsedProt;\n }\n if (jws.header !== undefined) {\n result.unprotectedHeader = jws.header;\n }\n return result;\n}\n\nasync function compactVerify(jws, key, options) {\n if (jws instanceof Uint8Array) {\n jws = decoder.decode(jws);\n }\n if (typeof jws !== 'string') {\n throw new JWSInvalid('Compact JWS must be a string or Uint8Array');\n }\n const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n if (length !== 3) {\n throw new JWSInvalid('Invalid Compact JWS');\n }\n const verified = await flattenedVerify({\n payload: (payload || undefined),\n protected: protectedHeader || undefined,\n signature: (signature || undefined),\n }, key, options);\n return { payload: verified.payload, protectedHeader: verified.protectedHeader };\n}\n\nconst signatureRef = new WeakMap();\nclass IndividualSignature {\n setProtectedHeader(protectedHeader) {\n if (this._protectedHeader) {\n throw new TypeError('setProtectedHeader can only be called once');\n }\n this._protectedHeader = protectedHeader;\n return this;\n }\n setUnprotectedHeader(unprotectedHeader) {\n if (this._unprotectedHeader) {\n throw new TypeError('setUnprotectedHeader can only be called once');\n }\n this._unprotectedHeader = unprotectedHeader;\n return this;\n }\n set _protectedHeader(value) {\n signatureRef.get(this).protectedHeader = value;\n }\n get _protectedHeader() {\n return signatureRef.get(this).protectedHeader;\n }\n set _unprotectedHeader(value) {\n signatureRef.get(this).unprotectedHeader = value;\n }\n get _unprotectedHeader() {\n return signatureRef.get(this).unprotectedHeader;\n }\n}\nclass GeneralSign {\n constructor(payload) {\n this._signatures = [];\n this._payload = payload;\n }\n addSignature(key, options) {\n const signature = new IndividualSignature();\n signatureRef.set(signature, { key, options });\n this._signatures.push(signature);\n return signature;\n }\n async sign() {\n if (!this._signatures.length) {\n throw new JWSInvalid('at least one signature must be added');\n }\n const jws = {\n signatures: [],\n payload: '',\n };\n let payloads = new Set();\n await Promise.all(this._signatures.map(async (sig) => {\n const { protectedHeader, unprotectedHeader, options, key } = signatureRef.get(sig);\n const flattened = new FlattenedSign(this._payload);\n if (protectedHeader) {\n flattened.setProtectedHeader(protectedHeader);\n }\n if (unprotectedHeader) {\n flattened.setUnprotectedHeader(unprotectedHeader);\n }\n const { payload, ...rest } = await flattened.sign(key, options);\n payloads.add(payload);\n jws.payload = payload;\n jws.signatures.push(rest);\n }));\n if (payloads.size !== 1) {\n throw new JWSInvalid('inconsistent use of JWS Unencoded Payload Option (RFC7797)');\n }\n return jws;\n }\n}\n\nasync function generalVerify(jws, key, options) {\n if (!isObject(jws)) {\n throw new JWSInvalid('General JWS must be an object');\n }\n if (!Array.isArray(jws.signatures) || !jws.signatures.every(isObject)) {\n throw new JWSInvalid('JWS Signatures missing or incorrect type');\n }\n for (const signature of jws.signatures) {\n try {\n return await flattenedVerify({\n header: signature.header,\n payload: jws.payload,\n protected: signature.protected,\n signature: signature.signature,\n }, key, options);\n }\n catch (_a) {\n }\n }\n throw new JWSSignatureVerificationFailed();\n}\n\nvar epoch = (date) => Math.floor(date.getTime() / 1000);\n\nconst minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i;\nvar secs = (str) => {\n const matched = REGEX.exec(str);\n if (!matched) {\n throw new TypeError('Invalid time period format');\n }\n const value = parseFloat(matched[1]);\n const unit = matched[2].toLowerCase();\n switch (unit) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n case 's':\n return Math.round(value);\n case 'minute':\n case 'minutes':\n case 'min':\n case 'mins':\n case 'm':\n return Math.round(value * minute);\n case 'hour':\n case 'hours':\n case 'hr':\n case 'hrs':\n case 'h':\n return Math.round(value * hour);\n case 'day':\n case 'days':\n case 'd':\n return Math.round(value * day);\n case 'week':\n case 'weeks':\n case 'w':\n return Math.round(value * week);\n default:\n return Math.round(value * year);\n }\n};\n\nconst normalizeTyp = (value) => value.toLowerCase().replace(/^application\\//, '');\nconst checkAudiencePresence = (audPayload, audOption) => {\n if (typeof audPayload === 'string') {\n return audOption.includes(audPayload);\n }\n if (Array.isArray(audPayload)) {\n return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n }\n return false;\n};\nvar jwtPayload = (protectedHeader, encodedPayload, options = {}) => {\n const { typ } = options;\n if (typ &&\n (typeof protectedHeader.typ !== 'string' ||\n normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', 'typ', 'check_failed');\n }\n let payload;\n try {\n payload = JSON.parse(decoder.decode(encodedPayload));\n }\n catch (_a) {\n }\n if (!isObject(payload)) {\n throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n }\n const { issuer } = options;\n if (issuer && !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', 'iss', 'check_failed');\n }\n const { subject } = options;\n if (subject && payload.sub !== subject) {\n throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', 'sub', 'check_failed');\n }\n const { audience } = options;\n if (audience &&\n !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', 'aud', 'check_failed');\n }\n let tolerance;\n switch (typeof options.clockTolerance) {\n case 'string':\n tolerance = secs(options.clockTolerance);\n break;\n case 'number':\n tolerance = options.clockTolerance;\n break;\n case 'undefined':\n tolerance = 0;\n break;\n default:\n throw new TypeError('Invalid clockTolerance option type');\n }\n const { currentDate } = options;\n const now = epoch(currentDate || new Date());\n if (payload.iat !== undefined || options.maxTokenAge) {\n if (typeof payload.iat !== 'number') {\n throw new JWTClaimValidationFailed('\"iat\" claim must be a number', 'iat', 'invalid');\n }\n if (payload.exp === undefined && payload.iat > now + tolerance) {\n throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', 'iat', 'check_failed');\n }\n }\n if (payload.nbf !== undefined) {\n if (typeof payload.nbf !== 'number') {\n throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', 'nbf', 'invalid');\n }\n if (payload.nbf > now + tolerance) {\n throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', 'nbf', 'check_failed');\n }\n }\n if (payload.exp !== undefined) {\n if (typeof payload.exp !== 'number') {\n throw new JWTClaimValidationFailed('\"exp\" claim must be a number', 'exp', 'invalid');\n }\n if (payload.exp <= now - tolerance) {\n throw new JWTExpired('\"exp\" claim timestamp check failed', 'exp', 'check_failed');\n }\n }\n if (options.maxTokenAge) {\n const age = now - payload.iat;\n const max = typeof options.maxTokenAge === 'number' ? options.maxTokenAge : secs(options.maxTokenAge);\n if (age - tolerance > max) {\n throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', 'iat', 'check_failed');\n }\n if (age < 0 - tolerance) {\n throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', 'iat', 'check_failed');\n }\n }\n return payload;\n};\n\nasync function jwtDecrypt(jwt, key, options) {\n const decrypted = await compactDecrypt(jwt, key, options);\n const payload = jwtPayload(decrypted.protectedHeader, decrypted.plaintext, options);\n const { protectedHeader } = decrypted;\n if (protectedHeader.iss !== undefined && protectedHeader.iss !== payload.iss) {\n throw new JWTClaimValidationFailed('replicated \"iss\" claim header parameter mismatch', 'iss', 'mismatch');\n }\n if (protectedHeader.sub !== undefined && protectedHeader.sub !== payload.sub) {\n throw new JWTClaimValidationFailed('replicated \"sub\" claim header parameter mismatch', 'sub', 'mismatch');\n }\n if (protectedHeader.aud !== undefined &&\n JSON.stringify(protectedHeader.aud) !== JSON.stringify(payload.aud)) {\n throw new JWTClaimValidationFailed('replicated \"aud\" claim header parameter mismatch', 'aud', 'mismatch');\n }\n return { payload, protectedHeader };\n}\n\nclass ProduceJWT {\n constructor(payload) {\n if (!isObject(payload)) {\n throw new TypeError('JWT Claims Set MUST be an object');\n }\n this._payload = payload;\n }\n setIssuer(issuer) {\n this._payload = { ...this._payload, iss: issuer };\n return this;\n }\n setSubject(subject) {\n this._payload = { ...this._payload, sub: subject };\n return this;\n }\n setAudience(audience) {\n this._payload = { ...this._payload, aud: audience };\n return this;\n }\n setJti(jwtId) {\n this._payload = { ...this._payload, jti: jwtId };\n return this;\n }\n setNotBefore(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, nbf: input };\n }\n else {\n this._payload = { ...this._payload, nbf: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setExpirationTime(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, exp: input };\n }\n else {\n this._payload = { ...this._payload, exp: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setIssuedAt(input) {\n if (typeof input === 'undefined') {\n this._payload = { ...this._payload, iat: epoch(new Date()) };\n }\n else {\n this._payload = { ...this._payload, iat: input };\n }\n return this;\n }\n}\n\nclass EncryptJWT extends ProduceJWT {\n setProtectedHeader(protectedHeader) {\n if (this._protectedHeader) {\n throw new TypeError('setProtectedHeader can only be called once');\n }\n this._protectedHeader = protectedHeader;\n return this;\n }\n setKeyManagementParameters(parameters) {\n if (this._keyManagementParameters) {\n throw new TypeError('setKeyManagementParameters can only be called once');\n }\n this._keyManagementParameters = parameters;\n return this;\n }\n setContentEncryptionKey(cek) {\n if (this._cek) {\n throw new TypeError('setContentEncryptionKey can only be called once');\n }\n this._cek = cek;\n return this;\n }\n setInitializationVector(iv) {\n if (this._iv) {\n throw new TypeError('setInitializationVector can only be called once');\n }\n this._iv = iv;\n return this;\n }\n replicateIssuerAsHeader() {\n this._replicateIssuerAsHeader = true;\n return this;\n }\n replicateSubjectAsHeader() {\n this._replicateSubjectAsHeader = true;\n return this;\n }\n replicateAudienceAsHeader() {\n this._replicateAudienceAsHeader = true;\n return this;\n }\n async encrypt(key, options) {\n const enc = new CompactEncrypt(encoder.encode(JSON.stringify(this._payload)));\n if (this._replicateIssuerAsHeader) {\n this._protectedHeader = { ...this._protectedHeader, iss: this._payload.iss };\n }\n if (this._replicateSubjectAsHeader) {\n this._protectedHeader = { ...this._protectedHeader, sub: this._payload.sub };\n }\n if (this._replicateAudienceAsHeader) {\n this._protectedHeader = { ...this._protectedHeader, aud: this._payload.aud };\n }\n enc.setProtectedHeader(this._protectedHeader);\n if (this._iv) {\n enc.setInitializationVector(this._iv);\n }\n if (this._cek) {\n enc.setContentEncryptionKey(this._cek);\n }\n if (this._keyManagementParameters) {\n enc.setKeyManagementParameters(this._keyManagementParameters);\n }\n return enc.encrypt(key, options);\n }\n}\n\nclass SignJWT extends ProduceJWT {\n setProtectedHeader(protectedHeader) {\n this._protectedHeader = protectedHeader;\n return this;\n }\n async sign(key, options) {\n var _a;\n const sig = new CompactSign(encoder.encode(JSON.stringify(this._payload)));\n sig.setProtectedHeader(this._protectedHeader);\n if (Array.isArray((_a = this._protectedHeader) === null || _a === void 0 ? void 0 : _a.crit) &&\n this._protectedHeader.crit.includes('b64') &&\n this._protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n return sig.sign(key, options);\n }\n}\n\nclass UnsecuredJWT extends ProduceJWT {\n encode() {\n const header = encode$1(JSON.stringify({ alg: 'none' }));\n const payload = encode$1(JSON.stringify(this._payload));\n return `${header}.${payload}.`;\n }\n static decode(jwt, options) {\n if (typeof jwt !== 'string') {\n throw new JWTInvalid('Unsecured JWT must be a string');\n }\n const { 0: encodedHeader, 1: encodedPayload, 2: signature, length } = jwt.split('.');\n if (length !== 3 || signature !== '') {\n throw new JWTInvalid('Invalid Unsecured JWT');\n }\n let header;\n try {\n header = JSON.parse(decoder.decode(decode$1(encodedHeader)));\n if (header.alg !== 'none')\n throw new Error();\n }\n catch (_a) {\n throw new JWTInvalid('Invalid Unsecured JWT');\n }\n const payload = jwtPayload(header, decode$1(encodedPayload), options);\n return { payload, header };\n }\n}\n\nasync function jwtVerify(jwt, key, options) {\n var _a;\n const verified = await compactVerify(jwt, key, options);\n if (((_a = verified.protectedHeader.crit) === null || _a === void 0 ? void 0 : _a.includes('b64')) && verified.protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n const payload = jwtPayload(verified.protectedHeader, verified.payload, options);\n return { payload, protectedHeader: verified.protectedHeader };\n}\n\nconst encode = encode$1;\nconst decode = decode$1;\n\nfunction decodeProtectedHeader(token) {\n let protectedB64u;\n if (typeof token === 'string') {\n const parts = token.split('.');\n if (parts.length === 3 || parts.length === 5) {\n [protectedB64u] = parts;\n }\n }\n else if (typeof token === 'object' && token) {\n if ('protected' in token) {\n protectedB64u = token.protected;\n }\n else {\n throw new TypeError('Token does not contain a Protected Header');\n }\n }\n try {\n if (typeof protectedB64u !== 'string' || !protectedB64u) {\n throw new Error();\n }\n const result = JSON.parse(decoder.decode(decode(protectedB64u)));\n if (!isObject(result)) {\n throw new Error();\n }\n return result;\n }\n catch (_a) {\n throw new TypeError('Invalid Token or Protected Header formatting');\n }\n}\n\nasync function generateSecret$1(alg, options) {\n var _a;\n let length;\n let algorithm;\n let keyUsages;\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n length = parseInt(alg.substr(-3), 10);\n algorithm = { name: 'HMAC', hash: { name: `SHA-${length}` }, length };\n keyUsages = ['sign', 'verify'];\n break;\n case 'A128CBC-HS256':\n case 'A192CBC-HS384':\n case 'A256CBC-HS512':\n length = parseInt(alg.substr(-3), 10);\n return random$1(new Uint8Array(length >> 3));\n case 'A128KW':\n case 'A192KW':\n case 'A256KW':\n length = parseInt(alg.substring(1, 4), 10);\n algorithm = { name: 'AES-KW', length };\n keyUsages = ['wrapKey', 'unwrapKey'];\n break;\n case 'A128GCMKW':\n case 'A192GCMKW':\n case 'A256GCMKW':\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM':\n length = parseInt(alg.substring(1, 4), 10);\n algorithm = { name: 'AES-GCM', length };\n keyUsages = ['encrypt', 'decrypt'];\n break;\n default:\n throw new JOSENotSupported('unsupported or invalid JWK \"alg\" (Algorithm) Parameter value');\n }\n return crypto.subtle.generateKey(algorithm, (_a = options === null || options === void 0 ? void 0 : options.extractable) !== null && _a !== void 0 ? _a : false, keyUsages);\n}\nfunction getModulusLengthOption(options) {\n var _a;\n const modulusLength = (_a = options === null || options === void 0 ? void 0 : options.modulusLength) !== null && _a !== void 0 ? _a : 2048;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new JOSENotSupported('Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used');\n }\n return modulusLength;\n}\nasync function generateKeyPair$1(alg, options) {\n var _a, _b;\n let algorithm;\n let keyUsages;\n switch (alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = {\n name: 'RSA-PSS',\n hash: { name: `SHA-${alg.substr(-3)}` },\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['sign', 'verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: `SHA-${alg.substr(-3)}` },\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['sign', 'verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: { name: `SHA-${parseInt(alg.substr(-3), 10) || 1}` },\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['decrypt', 'unwrapKey', 'encrypt', 'wrapKey'];\n break;\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: 'ECDH', namedCurve: (_a = options === null || options === void 0 ? void 0 : options.crv) !== null && _a !== void 0 ? _a : 'P-256' };\n keyUsages = ['deriveKey', 'deriveBits'];\n break;\n default:\n throw new JOSENotSupported('unsupported or invalid JWK \"alg\" (Algorithm) Parameter value');\n }\n return (crypto.subtle.generateKey(algorithm, (_b = options === null || options === void 0 ? void 0 : options.extractable) !== null && _b !== void 0 ? _b : false, keyUsages));\n}\n\nasync function generateKeyPair(alg, options) {\n return generateKeyPair$1(alg, options);\n}\n\nasync function generateSecret(alg, options) {\n return generateSecret$1(alg, options);\n}\n\nconst random = random$1;\n\nexport { CompactEncrypt, CompactSign, EmbeddedJWK, EncryptJWT, FlattenedEncrypt, FlattenedSign, GeneralSign, JOSEAlgNotAllowed, JOSEError, JOSENotSupported, JWEDecryptionFailed, JWEInvalid, JWKInvalid, JWKSInvalid, JWKSMultipleMatchingKeys, JWKSNoMatchingKey, JWSInvalid, JWSSignatureVerificationFailed, JWTClaimValidationFailed, JWTExpired, JWTInvalid, SignJWT, UnsecuredJWT, decode as base64UrlDecode, encode as base64UrlEncode, calculateThumbprint, compactDecrypt, compactVerify, createRemoteJWKSet, decodeProtectedHeader, flattenedDecrypt, flattenedVerify, fromKeyLike, generalDecrypt, generalVerify, generateKeyPair, generateSecret, jwtDecrypt, jwtVerify, parseJwk, random };\n","!function t(e,r){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=r();else if(\"function\"==typeof define&&define.amd)define([],r);else{var n=r();for(var i in n)(\"object\"==typeof exports?exports:e)[i]=n[i]}}(this,(function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function e(){return t.default}:function e(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=22)}([function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(t,e){for(var r=0;r=4){for(var e=arguments.length,r=Array(e),n=0;n=3){for(var e=arguments.length,r=Array(e),n=0;n=2){for(var e=arguments.length,r=Array(e),n=0;n=1){for(var e=arguments.length,r=Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:o.JsonService;if(s(this,t),!e)throw i.Log.error(\"MetadataService: No settings passed to MetadataService\"),new Error(\"settings\");this._settings=e,this._jsonService=new r([\"application/jwk-set+json\"])}return t.prototype.resetSigningKeys=function t(){this._settings=this._settings||{},this._settings.signingKeys=void 0},t.prototype.getMetadata=function t(){var e=this;return this._settings.metadata?(i.Log.debug(\"MetadataService.getMetadata: Returning metadata from settings\"),Promise.resolve(this._settings.metadata)):this.metadataUrl?(i.Log.debug(\"MetadataService.getMetadata: getting metadata from\",this.metadataUrl),this._jsonService.getJson(this.metadataUrl).then((function(t){i.Log.debug(\"MetadataService.getMetadata: json received\");var r=e._settings.metadataSeed||{};return e._settings.metadata=Object.assign({},r,t),e._settings.metadata}))):(i.Log.error(\"MetadataService.getMetadata: No authority or metadataUrl configured on settings\"),Promise.reject(new Error(\"No authority or metadataUrl configured on settings\")))},t.prototype.getIssuer=function t(){return this._getMetadataProperty(\"issuer\")},t.prototype.getAuthorizationEndpoint=function t(){return this._getMetadataProperty(\"authorization_endpoint\")},t.prototype.getUserInfoEndpoint=function t(){return this._getMetadataProperty(\"userinfo_endpoint\")},t.prototype.getTokenEndpoint=function t(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._getMetadataProperty(\"token_endpoint\",e)},t.prototype.getCheckSessionIframe=function t(){return this._getMetadataProperty(\"check_session_iframe\",!0)},t.prototype.getEndSessionEndpoint=function t(){return this._getMetadataProperty(\"end_session_endpoint\",!0)},t.prototype.getRevocationEndpoint=function t(){return this._getMetadataProperty(\"revocation_endpoint\",!0)},t.prototype.getKeysEndpoint=function t(){return this._getMetadataProperty(\"jwks_uri\",!0)},t.prototype._getMetadataProperty=function t(e){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return i.Log.debug(\"MetadataService.getMetadataProperty for: \"+e),this.getMetadata().then((function(t){if(i.Log.debug(\"MetadataService.getMetadataProperty: metadata recieved\"),void 0===t[e]){if(!0===r)return void i.Log.warn(\"MetadataService.getMetadataProperty: Metadata does not contain optional property \"+e);throw i.Log.error(\"MetadataService.getMetadataProperty: Metadata does not contain property \"+e),new Error(\"Metadata does not contain property \"+e)}return t[e]}))},t.prototype.getSigningKeys=function t(){var e=this;return this._settings.signingKeys?(i.Log.debug(\"MetadataService.getSigningKeys: Returning signingKeys from settings\"),Promise.resolve(this._settings.signingKeys)):this._getMetadataProperty(\"jwks_uri\").then((function(t){return i.Log.debug(\"MetadataService.getSigningKeys: jwks_uri received\",t),e._jsonService.getJson(t).then((function(t){if(i.Log.debug(\"MetadataService.getSigningKeys: key set received\",t),!t.keys)throw i.Log.error(\"MetadataService.getSigningKeys: Missing keys on keyset\"),new Error(\"Missing keys on keyset\");return e._settings.signingKeys=t.keys,e._settings.signingKeys}))}))},n(t,[{key:\"metadataUrl\",get:function t(){return this._metadataUrl||(this._settings.metadataUrl?this._metadataUrl=this._settings.metadataUrl:(this._metadataUrl=this._settings.authority,this._metadataUrl&&this._metadataUrl.indexOf(a)<0&&(\"/\"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+=\"/\"),this._metadataUrl+=a))),this._metadataUrl}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UrlUtility=void 0;var n=r(0),i=r(1);e.UrlUtility=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.addQueryParam=function t(e,r,n){return e.indexOf(\"?\")<0&&(e+=\"?\"),\"?\"!==e[e.length-1]&&(e+=\"&\"),e+=encodeURIComponent(r),e+=\"=\",e+=encodeURIComponent(n)},t.parseUrlFragment=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#\",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.Global;\"string\"!=typeof e&&(e=o.location.href);var s=e.lastIndexOf(r);s>=0&&(e=e.substr(s+1)),\"?\"===r&&(s=e.indexOf(\"#\"))>=0&&(e=e.substr(0,s));for(var a,u={},c=/([^&=]+)=([^&]*)/g,h=0;a=c.exec(e);)if(u[decodeURIComponent(a[1])]=decodeURIComponent(a[2].replace(/\\+/g,\" \")),h++>50)return n.Log.error(\"UrlUtility.parseUrlFragment: response exceeded expected number of parameters\",e),{error:\"Response exceeded expected number of parameters\"};for(var l in u)return u;return{}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.JoseUtil=void 0;var n=r(26),i=function o(t){return t&&t.__esModule?t:{default:t}}(r(33));e.JoseUtil=(0,i.default)({jws:n.jws,KeyUtil:n.KeyUtil,X509:n.X509,crypto:n.crypto,hextob64u:n.hextob64u,b64tohex:n.b64tohex,AllowedSigningAlgs:n.AllowedSigningAlgs})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OidcClientSettings=void 0;var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=e.authority,i=e.metadataUrl,o=e.metadata,l=e.signingKeys,p=e.metadataSeed,v=e.client_id,y=e.client_secret,m=e.response_type,_=void 0===m?f:m,S=e.scope,b=void 0===S?g:S,w=e.redirect_uri,F=e.post_logout_redirect_uri,E=e.client_authentication,x=void 0===E?d:E,A=e.prompt,k=e.display,P=e.max_age,C=e.ui_locales,T=e.acr_values,R=e.resource,I=e.response_mode,D=e.filterProtocolClaims,L=void 0===D||D,N=e.loadUserInfo,U=void 0===N||N,B=e.staleStateAge,O=void 0===B?900:B,j=e.clockSkew,M=void 0===j?300:j,H=e.clockService,V=void 0===H?new s.ClockService:H,K=e.userInfoJwtIssuer,q=void 0===K?\"OP\":K,J=e.mergeClaims,W=void 0!==J&&J,z=e.stateStore,Y=void 0===z?new a.WebStorageStateStore:z,G=e.ResponseValidatorCtor,X=void 0===G?u.ResponseValidator:G,$=e.MetadataServiceCtor,Q=void 0===$?c.MetadataService:$,Z=e.extraQueryParams,tt=void 0===Z?{}:Z,et=e.extraTokenParams,rt=void 0===et?{}:et;h(this,t),this._authority=r,this._metadataUrl=i,this._metadata=o,this._metadataSeed=p,this._signingKeys=l,this._client_id=v,this._client_secret=y,this._response_type=_,this._scope=b,this._redirect_uri=w,this._post_logout_redirect_uri=F,this._client_authentication=x,this._prompt=A,this._display=k,this._max_age=P,this._ui_locales=C,this._acr_values=T,this._resource=R,this._response_mode=I,this._filterProtocolClaims=!!L,this._loadUserInfo=!!U,this._staleStateAge=O,this._clockSkew=M,this._clockService=V,this._userInfoJwtIssuer=q,this._mergeClaims=!!W,this._stateStore=Y,this._validator=new X(this),this._metadataService=new Q(this),this._extraQueryParams=\"object\"===(void 0===tt?\"undefined\":n(tt))?tt:{},this._extraTokenParams=\"object\"===(void 0===rt?\"undefined\":n(rt))?rt:{}}return t.prototype.getEpochTime=function t(){return this._clockService.getEpochTime()},i(t,[{key:\"client_id\",get:function t(){return this._client_id},set:function t(e){if(this._client_id)throw o.Log.error(\"OidcClientSettings.set_client_id: client_id has already been assigned.\"),new Error(\"client_id has already been assigned.\");this._client_id=e}},{key:\"client_secret\",get:function t(){return this._client_secret}},{key:\"response_type\",get:function t(){return this._response_type}},{key:\"scope\",get:function t(){return this._scope}},{key:\"redirect_uri\",get:function t(){return this._redirect_uri}},{key:\"post_logout_redirect_uri\",get:function t(){return this._post_logout_redirect_uri}},{key:\"client_authentication\",get:function t(){return this._client_authentication}},{key:\"prompt\",get:function t(){return this._prompt}},{key:\"display\",get:function t(){return this._display}},{key:\"max_age\",get:function t(){return this._max_age}},{key:\"ui_locales\",get:function t(){return this._ui_locales}},{key:\"acr_values\",get:function t(){return this._acr_values}},{key:\"resource\",get:function t(){return this._resource}},{key:\"response_mode\",get:function t(){return this._response_mode}},{key:\"authority\",get:function t(){return this._authority},set:function t(e){if(this._authority)throw o.Log.error(\"OidcClientSettings.set_authority: authority has already been assigned.\"),new Error(\"authority has already been assigned.\");this._authority=e}},{key:\"metadataUrl\",get:function t(){return this._metadataUrl||(this._metadataUrl=this.authority,this._metadataUrl&&this._metadataUrl.indexOf(l)<0&&(\"/\"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+=\"/\"),this._metadataUrl+=l)),this._metadataUrl}},{key:\"metadata\",get:function t(){return this._metadata},set:function t(e){this._metadata=e}},{key:\"metadataSeed\",get:function t(){return this._metadataSeed},set:function t(e){this._metadataSeed=e}},{key:\"signingKeys\",get:function t(){return this._signingKeys},set:function t(e){this._signingKeys=e}},{key:\"filterProtocolClaims\",get:function t(){return this._filterProtocolClaims}},{key:\"loadUserInfo\",get:function t(){return this._loadUserInfo}},{key:\"staleStateAge\",get:function t(){return this._staleStateAge}},{key:\"clockSkew\",get:function t(){return this._clockSkew}},{key:\"userInfoJwtIssuer\",get:function t(){return this._userInfoJwtIssuer}},{key:\"mergeClaims\",get:function t(){return this._mergeClaims}},{key:\"stateStore\",get:function t(){return this._stateStore}},{key:\"validator\",get:function t(){return this._validator}},{key:\"metadataService\",get:function t(){return this._metadataService}},{key:\"extraQueryParams\",get:function t(){return this._extraQueryParams},set:function t(e){\"object\"===(void 0===e?\"undefined\":n(e))?this._extraQueryParams=e:this._extraQueryParams={}}},{key:\"extraTokenParams\",get:function t(){return this._extraTokenParams},set:function t(e){\"object\"===(void 0===e?\"undefined\":n(e))?this._extraTokenParams=e:this._extraTokenParams={}}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WebStorageStateStore=void 0;var n=r(0),i=r(1);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.WebStorageStateStore=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.prefix,n=void 0===r?\"oidc.\":r,s=e.store,a=void 0===s?i.Global.localStorage:s;o(this,t),this._store=a,this._prefix=n}return t.prototype.set=function t(e,r){return n.Log.debug(\"WebStorageStateStore.set\",e),e=this._prefix+e,this._store.setItem(e,r),Promise.resolve()},t.prototype.get=function t(e){n.Log.debug(\"WebStorageStateStore.get\",e),e=this._prefix+e;var r=this._store.getItem(e);return Promise.resolve(r)},t.prototype.remove=function t(e){n.Log.debug(\"WebStorageStateStore.remove\",e),e=this._prefix+e;var r=this._store.getItem(e);return this._store.removeItem(e),Promise.resolve(r)},t.prototype.getAllKeys=function t(){n.Log.debug(\"WebStorageStateStore.getAllKeys\");for(var e=[],r=0;r0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.Global.XMLHttpRequest,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;o(this,t),e&&Array.isArray(e)?this._contentTypes=e.slice():this._contentTypes=[],this._contentTypes.push(\"application/json\"),n&&this._contentTypes.push(\"application/jwt\"),this._XMLHttpRequest=r,this._jwtHandler=n}return t.prototype.getJson=function t(e,r){var i=this;if(!e)throw n.Log.error(\"JsonService.getJson: No url passed\"),new Error(\"url\");return n.Log.debug(\"JsonService.getJson, url: \",e),new Promise((function(t,o){var s=new i._XMLHttpRequest;s.open(\"GET\",e);var a=i._contentTypes,u=i._jwtHandler;s.onload=function(){if(n.Log.debug(\"JsonService.getJson: HTTP response received, status\",s.status),200===s.status){var r=s.getResponseHeader(\"Content-Type\");if(r){var i=a.find((function(t){if(r.startsWith(t))return!0}));if(\"application/jwt\"==i)return void u(s).then(t,o);if(i)try{return void t(JSON.parse(s.responseText))}catch(t){return n.Log.error(\"JsonService.getJson: Error parsing JSON response\",t.message),void o(t)}}o(Error(\"Invalid response Content-Type: \"+r+\", from URL: \"+e))}else o(Error(s.statusText+\" (\"+s.status+\")\"))},s.onerror=function(){n.Log.error(\"JsonService.getJson: network error\"),o(Error(\"Network Error\"))},r&&(n.Log.debug(\"JsonService.getJson: token passed, setting Authorization header\"),s.setRequestHeader(\"Authorization\",\"Bearer \"+r)),s.send()}))},t.prototype.postForm=function t(e,r,i){var o=this;if(!e)throw n.Log.error(\"JsonService.postForm: No url passed\"),new Error(\"url\");return n.Log.debug(\"JsonService.postForm, url: \",e),new Promise((function(t,s){var a=new o._XMLHttpRequest;a.open(\"POST\",e);var u=o._contentTypes;a.onload=function(){if(n.Log.debug(\"JsonService.postForm: HTTP response received, status\",a.status),200!==a.status){if(400===a.status)if(i=a.getResponseHeader(\"Content-Type\"))if(u.find((function(t){if(i.startsWith(t))return!0})))try{var r=JSON.parse(a.responseText);if(r&&r.error)return n.Log.error(\"JsonService.postForm: Error from server: \",r.error),void s(new Error(r.error))}catch(t){return n.Log.error(\"JsonService.postForm: Error parsing JSON response\",t.message),void s(t)}s(Error(a.statusText+\" (\"+a.status+\")\"))}else{var i;if((i=a.getResponseHeader(\"Content-Type\"))&&u.find((function(t){if(i.startsWith(t))return!0})))try{return void t(JSON.parse(a.responseText))}catch(t){return n.Log.error(\"JsonService.postForm: Error parsing JSON response\",t.message),void s(t)}s(Error(\"Invalid response Content-Type: \"+i+\", from URL: \"+e))}},a.onerror=function(){n.Log.error(\"JsonService.postForm: network error\"),s(Error(\"Network Error\"))};var c=\"\";for(var h in r){var l=r[h];l&&(c.length>0&&(c+=\"&\"),c+=encodeURIComponent(h),c+=\"=\",c+=encodeURIComponent(l))}a.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),void 0!==i&&a.setRequestHeader(\"Authorization\",\"Basic \"+btoa(i)),a.send(c)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninRequest=void 0;var n=r(0),i=r(3),o=r(13);e.SigninRequest=function(){function t(e){var r=e.url,s=e.client_id,a=e.redirect_uri,u=e.response_type,c=e.scope,h=e.authority,l=e.data,f=e.prompt,g=e.display,d=e.max_age,p=e.ui_locales,v=e.id_token_hint,y=e.login_hint,m=e.acr_values,_=e.resource,S=e.response_mode,b=e.request,w=e.request_uri,F=e.extraQueryParams,E=e.request_type,x=e.client_secret,A=e.extraTokenParams,k=e.skipUserInfo;if(function P(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),!r)throw n.Log.error(\"SigninRequest.ctor: No url passed\"),new Error(\"url\");if(!s)throw n.Log.error(\"SigninRequest.ctor: No client_id passed\"),new Error(\"client_id\");if(!a)throw n.Log.error(\"SigninRequest.ctor: No redirect_uri passed\"),new Error(\"redirect_uri\");if(!u)throw n.Log.error(\"SigninRequest.ctor: No response_type passed\"),new Error(\"response_type\");if(!c)throw n.Log.error(\"SigninRequest.ctor: No scope passed\"),new Error(\"scope\");if(!h)throw n.Log.error(\"SigninRequest.ctor: No authority passed\"),new Error(\"authority\");var C=t.isOidc(u),T=t.isCode(u);S||(S=t.isCode(u)?\"query\":null),this.state=new o.SigninState({nonce:C,data:l,client_id:s,authority:h,redirect_uri:a,code_verifier:T,request_type:E,response_mode:S,client_secret:x,scope:c,extraTokenParams:A,skipUserInfo:k}),r=i.UrlUtility.addQueryParam(r,\"client_id\",s),r=i.UrlUtility.addQueryParam(r,\"redirect_uri\",a),r=i.UrlUtility.addQueryParam(r,\"response_type\",u),r=i.UrlUtility.addQueryParam(r,\"scope\",c),r=i.UrlUtility.addQueryParam(r,\"state\",this.state.id),C&&(r=i.UrlUtility.addQueryParam(r,\"nonce\",this.state.nonce)),T&&(r=i.UrlUtility.addQueryParam(r,\"code_challenge\",this.state.code_challenge),r=i.UrlUtility.addQueryParam(r,\"code_challenge_method\",\"S256\"));var R={prompt:f,display:g,max_age:d,ui_locales:p,id_token_hint:v,login_hint:y,acr_values:m,resource:_,request:b,request_uri:w,response_mode:S};for(var I in R)R[I]&&(r=i.UrlUtility.addQueryParam(r,I,R[I]));for(var D in F)r=i.UrlUtility.addQueryParam(r,D,F[D]);this.url=r}return t.isOidc=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"id_token\"===t}))[0]},t.isOAuth=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"token\"===t}))[0]},t.isCode=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"code\"===t}))[0]},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.State=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=e.id,n=e.data,i=e.created,s=e.request_type;a(this,t),this._id=r||(0,o.default)(),this._data=n,this._created=\"number\"==typeof i&&i>0?i:parseInt(Date.now()/1e3),this._request_type=s}return t.prototype.toStorageString=function t(){return i.Log.debug(\"State.toStorageString\"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type})},t.fromStorageString=function e(r){return i.Log.debug(\"State.fromStorageString\"),new t(JSON.parse(r))},t.clearStaleState=function e(r,n){var o=Date.now()/1e3-n;return r.getAllKeys().then((function(e){i.Log.debug(\"State.clearStaleState: got keys\",e);for(var n=[],s=function s(a){var c=e[a];u=r.get(c).then((function(e){var n=!1;if(e)try{var s=t.fromStorageString(e);i.Log.debug(\"State.clearStaleState: got item from key: \",c,s.created),s.created<=o&&(n=!0)}catch(t){i.Log.error(\"State.clearStaleState: Error parsing state for key\",c,t.message),n=!0}else i.Log.debug(\"State.clearStaleState: no item in storage for key: \",c),n=!0;if(n)return i.Log.debug(\"State.clearStaleState: removed item for key: \",c),r.remove(c)})),n.push(u)},a=0;a0&&void 0!==arguments[0]?arguments[0]:{};g(this,t),e instanceof o.OidcClientSettings?this._settings=e:this._settings=new o.OidcClientSettings(e)}return t.prototype.createSigninRequest=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.response_type,o=r.scope,s=r.redirect_uri,u=r.data,c=r.state,h=r.prompt,l=r.display,f=r.max_age,g=r.ui_locales,d=r.id_token_hint,p=r.login_hint,v=r.acr_values,y=r.resource,m=r.request,_=r.request_uri,S=r.response_mode,b=r.extraQueryParams,w=r.extraTokenParams,F=r.request_type,E=r.skipUserInfo,x=arguments[1];i.Log.debug(\"OidcClient.createSigninRequest\");var A=this._settings.client_id;n=n||this._settings.response_type,o=o||this._settings.scope,s=s||this._settings.redirect_uri,h=h||this._settings.prompt,l=l||this._settings.display,f=f||this._settings.max_age,g=g||this._settings.ui_locales,v=v||this._settings.acr_values,y=y||this._settings.resource,S=S||this._settings.response_mode,b=b||this._settings.extraQueryParams,w=w||this._settings.extraTokenParams;var k=this._settings.authority;return a.SigninRequest.isCode(n)&&\"code\"!==n?Promise.reject(new Error(\"OpenID Connect hybrid flow is not supported\")):this._metadataService.getAuthorizationEndpoint().then((function(t){i.Log.debug(\"OidcClient.createSigninRequest: Received authorization endpoint\",t);var r=new a.SigninRequest({url:t,client_id:A,redirect_uri:s,response_type:n,scope:o,data:u||c,authority:k,prompt:h,display:l,max_age:f,ui_locales:g,id_token_hint:d,login_hint:p,acr_values:v,resource:y,request:m,request_uri:_,extraQueryParams:b,extraTokenParams:w,request_type:F,response_mode:S,client_secret:e._settings.client_secret,skipUserInfo:E}),P=r.state;return(x=x||e._stateStore).set(P.id,P.toStorageString()).then((function(){return r}))}))},t.prototype.readSigninResponseState=function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug(\"OidcClient.readSigninResponseState\");var o=\"query\"===this._settings.response_mode||!this._settings.response_mode&&a.SigninRequest.isCode(this._settings.response_type),s=o?\"?\":\"#\",c=new u.SigninResponse(e,s);if(!c.state)return i.Log.error(\"OidcClient.readSigninResponseState: No state in response\"),Promise.reject(new Error(\"No state in response\"));r=r||this._stateStore;var h=n?r.remove.bind(r):r.get.bind(r);return h(c.state).then((function(t){if(!t)throw i.Log.error(\"OidcClient.readSigninResponseState: No matching state found in storage\"),new Error(\"No matching state found in storage\");return{state:l.SigninState.fromStorageString(t),response:c}}))},t.prototype.processSigninResponse=function t(e,r){var n=this;return i.Log.debug(\"OidcClient.processSigninResponse\"),this.readSigninResponseState(e,r,!0).then((function(t){var e=t.state,r=t.response;return i.Log.debug(\"OidcClient.processSigninResponse: Received state from storage; validating response\"),n._validator.validateSigninResponse(e,r)}))},t.prototype.createSignoutRequest=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.id_token_hint,o=r.data,s=r.state,a=r.post_logout_redirect_uri,u=r.extraQueryParams,h=r.request_type,l=arguments[1];return i.Log.debug(\"OidcClient.createSignoutRequest\"),a=a||this._settings.post_logout_redirect_uri,u=u||this._settings.extraQueryParams,this._metadataService.getEndSessionEndpoint().then((function(t){if(!t)throw i.Log.error(\"OidcClient.createSignoutRequest: No end session endpoint url returned\"),new Error(\"no end session endpoint\");i.Log.debug(\"OidcClient.createSignoutRequest: Received end session endpoint\",t);var r=new c.SignoutRequest({url:t,id_token_hint:n,post_logout_redirect_uri:a,data:o||s,extraQueryParams:u,request_type:h}),f=r.state;return f&&(i.Log.debug(\"OidcClient.createSignoutRequest: Signout request has state to persist\"),(l=l||e._stateStore).set(f.id,f.toStorageString())),r}))},t.prototype.readSignoutResponseState=function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug(\"OidcClient.readSignoutResponseState\");var o=new h.SignoutResponse(e);if(!o.state)return i.Log.debug(\"OidcClient.readSignoutResponseState: No state in response\"),o.error?(i.Log.warn(\"OidcClient.readSignoutResponseState: Response was error: \",o.error),Promise.reject(new s.ErrorResponse(o))):Promise.resolve({state:void 0,response:o});var a=o.state;r=r||this._stateStore;var u=n?r.remove.bind(r):r.get.bind(r);return u(a).then((function(t){if(!t)throw i.Log.error(\"OidcClient.readSignoutResponseState: No matching state found in storage\"),new Error(\"No matching state found in storage\");return{state:f.State.fromStorageString(t),response:o}}))},t.prototype.processSignoutResponse=function t(e,r){var n=this;return i.Log.debug(\"OidcClient.processSignoutResponse\"),this.readSignoutResponseState(e,r,!0).then((function(t){var e=t.state,r=t.response;return e?(i.Log.debug(\"OidcClient.processSignoutResponse: Received state from storage; validating response\"),n._validator.validateSignoutResponse(e,r)):(i.Log.debug(\"OidcClient.processSignoutResponse: No state from storage; skipping validating response\"),r)}))},t.prototype.clearStaleState=function t(e){return i.Log.debug(\"OidcClient.clearStaleState\"),e=e||this._stateStore,f.State.clearStaleState(e,this.settings.staleStateAge)},n(t,[{key:\"_stateStore\",get:function t(){return this.settings.stateStore}},{key:\"_validator\",get:function t(){return this.settings.validator}},{key:\"_metadataService\",get:function t(){return this.settings.metadataService}},{key:\"settings\",get:function t(){return this._settings}},{key:\"metadataService\",get:function t(){return this._metadataService}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenClient=void 0;var n=r(7),i=r(2),o=r(0);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.TokenClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw o.Log.error(\"TokenClient.ctor: No settings passed\"),new Error(\"settings\");this._settings=e,this._jsonService=new r,this._metadataService=new a(this._settings)}return t.prototype.exchangeCode=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).grant_type=r.grant_type||\"authorization_code\",r.client_id=r.client_id||this._settings.client_id,r.client_secret=r.client_secret||this._settings.client_secret,r.redirect_uri=r.redirect_uri||this._settings.redirect_uri;var n=void 0,i=r._client_authentication||this._settings._client_authentication;return delete r._client_authentication,r.code?r.redirect_uri?r.code_verifier?r.client_id?r.client_secret||\"client_secret_basic\"!=i?(\"client_secret_basic\"==i&&(n=r.client_id+\":\"+r.client_secret,delete r.client_id,delete r.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(t){return o.Log.debug(\"TokenClient.exchangeCode: Received token endpoint\"),e._jsonService.postForm(t,r,n).then((function(t){return o.Log.debug(\"TokenClient.exchangeCode: response received\"),t}))}))):(o.Log.error(\"TokenClient.exchangeCode: No client_secret passed\"),Promise.reject(new Error(\"A client_secret is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No client_id passed\"),Promise.reject(new Error(\"A client_id is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No code_verifier passed\"),Promise.reject(new Error(\"A code_verifier is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No redirect_uri passed\"),Promise.reject(new Error(\"A redirect_uri is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No code passed\"),Promise.reject(new Error(\"A code is required\")))},t.prototype.exchangeRefreshToken=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).grant_type=r.grant_type||\"refresh_token\",r.client_id=r.client_id||this._settings.client_id,r.client_secret=r.client_secret||this._settings.client_secret;var n=void 0,i=r._client_authentication||this._settings._client_authentication;return delete r._client_authentication,r.refresh_token?r.client_id?(\"client_secret_basic\"==i&&(n=r.client_id+\":\"+r.client_secret,delete r.client_id,delete r.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(t){return o.Log.debug(\"TokenClient.exchangeRefreshToken: Received token endpoint\"),e._jsonService.postForm(t,r,n).then((function(t){return o.Log.debug(\"TokenClient.exchangeRefreshToken: response received\"),t}))}))):(o.Log.error(\"TokenClient.exchangeRefreshToken: No client_id passed\"),Promise.reject(new Error(\"A client_id is required\"))):(o.Log.error(\"TokenClient.exchangeRefreshToken: No refresh_token passed\"),Promise.reject(new Error(\"A refresh_token is required\")))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ErrorResponse=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.ErrorResponse=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=r.error,a=r.error_description,u=r.error_uri,c=r.state,h=r.session_state;if(i(this,e),!s)throw n.Log.error(\"No error passed to ErrorResponse\"),new Error(\"error\");var l=o(this,t.call(this,a||s));return l.name=\"ErrorResponse\",l.error=s,l.error_description=a,l.error_uri=u,l.state=c,l.session_state=h,l}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(Error)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninState=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=r.nonce,i=r.authority,o=r.client_id,u=r.redirect_uri,l=r.code_verifier,f=r.response_mode,g=r.client_secret,d=r.scope,p=r.extraTokenParams,v=r.skipUserInfo;c(this,e);var y=h(this,t.call(this,arguments[0]));if(!0===n?y._nonce=(0,a.default)():n&&(y._nonce=n),!0===l?y._code_verifier=(0,a.default)()+(0,a.default)()+(0,a.default)():l&&(y._code_verifier=l),y.code_verifier){var m=s.JoseUtil.hashString(y.code_verifier,\"SHA256\");y._code_challenge=s.JoseUtil.hexToBase64Url(m)}return y._redirect_uri=u,y._authority=i,y._client_id=o,y._response_mode=f,y._client_secret=g,y._scope=d,y._extraTokenParams=p,y._skipUserInfo=v,y}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.toStorageString=function t(){return i.Log.debug(\"SigninState.toStorageString\"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,nonce:this.nonce,code_verifier:this.code_verifier,redirect_uri:this.redirect_uri,authority:this.authority,client_id:this.client_id,response_mode:this.response_mode,client_secret:this.client_secret,scope:this.scope,extraTokenParams:this.extraTokenParams,skipUserInfo:this.skipUserInfo})},e.fromStorageString=function t(r){return i.Log.debug(\"SigninState.fromStorageString\"),new e(JSON.parse(r))},n(e,[{key:\"nonce\",get:function t(){return this._nonce}},{key:\"authority\",get:function t(){return this._authority}},{key:\"client_id\",get:function t(){return this._client_id}},{key:\"redirect_uri\",get:function t(){return this._redirect_uri}},{key:\"code_verifier\",get:function t(){return this._code_verifier}},{key:\"code_challenge\",get:function t(){return this._code_challenge}},{key:\"response_mode\",get:function t(){return this._response_mode}},{key:\"client_secret\",get:function t(){return this._client_secret}},{key:\"scope\",get:function t(){return this._scope}},{key:\"extraTokenParams\",get:function t(){return this._extraTokenParams}},{key:\"skipUserInfo\",get:function t(){return this._skipUserInfo}}]),e}(o.State)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function n(){return(\"undefined\"!=i&&null!==i&&void 0!==i.getRandomValues?o:s)().replace(/-/g,\"\")};var i=\"undefined\"!=typeof window?window.crypto||window.msCrypto:null;function o(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^i.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function s(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^16*Math.random()>>t/4).toString(16)}))}t.exports=e.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.User=void 0;var n=function(){function t(t,e){for(var r=0;r0){var n=parseInt(Date.now()/1e3);this.expires_at=n+r}}},{key:\"expired\",get:function t(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:\"scopes\",get:function t(){return(this.scope||\"\").split(\" \")}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AccessTokenEvents=void 0;var n=r(0),i=r(46);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.AccessTokenEvents=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.accessTokenExpiringNotificationTime,n=void 0===r?60:r,s=e.accessTokenExpiringTimer,a=void 0===s?new i.Timer(\"Access token expiring\"):s,u=e.accessTokenExpiredTimer,c=void 0===u?new i.Timer(\"Access token expired\"):u;o(this,t),this._accessTokenExpiringNotificationTime=n,this._accessTokenExpiring=a,this._accessTokenExpired=c}return t.prototype.load=function t(e){if(e.access_token&&void 0!==e.expires_in){var r=e.expires_in;if(n.Log.debug(\"AccessTokenEvents.load: access token present, remaining duration:\",r),r>0){var i=r-this._accessTokenExpiringNotificationTime;i<=0&&(i=1),n.Log.debug(\"AccessTokenEvents.load: registering expiring timer in:\",i),this._accessTokenExpiring.init(i)}else n.Log.debug(\"AccessTokenEvents.load: canceling existing expiring timer becase we're past expiration.\"),this._accessTokenExpiring.cancel();var o=r+1;n.Log.debug(\"AccessTokenEvents.load: registering expired timer in:\",o),this._accessTokenExpired.init(o)}else this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.unload=function t(){n.Log.debug(\"AccessTokenEvents.unload: canceling existing access token timers\"),this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.addAccessTokenExpiring=function t(e){this._accessTokenExpiring.addHandler(e)},t.prototype.removeAccessTokenExpiring=function t(e){this._accessTokenExpiring.removeHandler(e)},t.prototype.addAccessTokenExpired=function t(e){this._accessTokenExpired.addHandler(e)},t.prototype.removeAccessTokenExpired=function t(e){this._accessTokenExpired.removeHandler(e)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Event=void 0;var n=r(0);e.Event=function(){function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._name=e,this._callbacks=[]}return t.prototype.addHandler=function t(e){this._callbacks.push(e)},t.prototype.removeHandler=function t(e){var r=this._callbacks.findIndex((function(t){return t===e}));r>=0&&this._callbacks.splice(r,1)},t.prototype.raise=function t(){n.Log.debug(\"Event: Raising event: \"+this._name);for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:o.CheckSessionIFrame,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.Global.timer;if(a(this,t),!e)throw i.Log.error(\"SessionMonitor.ctor: No user manager passed to SessionMonitor\"),new Error(\"userManager\");this._userManager=e,this._CheckSessionIFrameCtor=n,this._timer=u,this._userManager.events.addUserLoaded(this._start.bind(this)),this._userManager.events.addUserUnloaded(this._stop.bind(this)),Promise.resolve(this._userManager.getUser().then((function(t){t?r._start(t):r._settings.monitorAnonymousSession&&r._userManager.querySessionStatus().then((function(t){var e={session_state:t.session_state};t.sub&&t.sid&&(e.profile={sub:t.sub,sid:t.sid}),r._start(e)})).catch((function(t){i.Log.error(\"SessionMonitor ctor: error from querySessionStatus:\",t.message)}))})).catch((function(t){i.Log.error(\"SessionMonitor ctor: error from getUser:\",t.message)})))}return t.prototype._start=function t(e){var r=this,n=e.session_state;n&&(e.profile?(this._sub=e.profile.sub,this._sid=e.profile.sid,i.Log.debug(\"SessionMonitor._start: session_state:\",n,\", sub:\",this._sub)):(this._sub=void 0,this._sid=void 0,i.Log.debug(\"SessionMonitor._start: session_state:\",n,\", anonymous user\")),this._checkSessionIFrame?this._checkSessionIFrame.start(n):this._metadataService.getCheckSessionIframe().then((function(t){if(t){i.Log.debug(\"SessionMonitor._start: Initializing check session iframe\");var e=r._client_id,o=r._checkSessionInterval,s=r._stopCheckSessionOnError;r._checkSessionIFrame=new r._CheckSessionIFrameCtor(r._callback.bind(r),e,t,o,s),r._checkSessionIFrame.load().then((function(){r._checkSessionIFrame.start(n)}))}else i.Log.warn(\"SessionMonitor._start: No check session iframe found in the metadata\")})).catch((function(t){i.Log.error(\"SessionMonitor._start: Error from getCheckSessionIframe:\",t.message)})))},t.prototype._stop=function t(){var e=this;if(this._sub=void 0,this._sid=void 0,this._checkSessionIFrame&&(i.Log.debug(\"SessionMonitor._stop\"),this._checkSessionIFrame.stop()),this._settings.monitorAnonymousSession)var r=this._timer.setInterval((function(){e._timer.clearInterval(r),e._userManager.querySessionStatus().then((function(t){var r={session_state:t.session_state};t.sub&&t.sid&&(r.profile={sub:t.sub,sid:t.sid}),e._start(r)})).catch((function(t){i.Log.error(\"SessionMonitor: error from querySessionStatus:\",t.message)}))}),1e3)},t.prototype._callback=function t(){var e=this;this._userManager.querySessionStatus().then((function(t){var r=!0;t?t.sub===e._sub?(r=!1,e._checkSessionIFrame.start(t.session_state),t.sid===e._sid?i.Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, restarting check session iframe; session_state:\",t.session_state):(i.Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, session state has changed, restarting check session iframe; session_state:\",t.session_state),e._userManager.events._raiseUserSessionChanged())):i.Log.debug(\"SessionMonitor._callback: Different subject signed into OP:\",t.sub):i.Log.debug(\"SessionMonitor._callback: Subject no longer signed into OP\"),r&&(e._sub?(i.Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed out event\"),e._userManager.events._raiseUserSignedOut()):(i.Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed in event\"),e._userManager.events._raiseUserSignedIn()))})).catch((function(t){e._sub&&(i.Log.debug(\"SessionMonitor._callback: Error calling queryCurrentSigninSession; raising signed out event\",t.message),e._userManager.events._raiseUserSignedOut())}))},n(t,[{key:\"_settings\",get:function t(){return this._userManager.settings}},{key:\"_metadataService\",get:function t(){return this._userManager.metadataService}},{key:\"_client_id\",get:function t(){return this._settings.client_id}},{key:\"_checkSessionInterval\",get:function t(){return this._settings.checkSessionInterval}},{key:\"_stopCheckSessionOnError\",get:function t(){return this._settings.stopCheckSessionOnError}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CheckSessionIFrame=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.CheckSessionIFrame=function(){function t(e,r,n,o){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];i(this,t),this._callback=e,this._client_id=r,this._url=n,this._interval=o||2e3,this._stopOnError=s;var a=n.indexOf(\"/\",n.indexOf(\"//\")+2);this._frame_origin=n.substr(0,a),this._frame=window.document.createElement(\"iframe\"),this._frame.style.visibility=\"hidden\",this._frame.style.position=\"absolute\",this._frame.style.display=\"none\",this._frame.width=0,this._frame.height=0,this._frame.src=n}return t.prototype.load=function t(){var e=this;return new Promise((function(t){e._frame.onload=function(){t()},window.document.body.appendChild(e._frame),e._boundMessageEvent=e._message.bind(e),window.addEventListener(\"message\",e._boundMessageEvent,!1)}))},t.prototype._message=function t(e){e.origin===this._frame_origin&&e.source===this._frame.contentWindow&&(\"error\"===e.data?(n.Log.error(\"CheckSessionIFrame: error message from check session op iframe\"),this._stopOnError&&this.stop()):\"changed\"===e.data?(n.Log.debug(\"CheckSessionIFrame: changed message from check session op iframe\"),this.stop(),this._callback()):n.Log.debug(\"CheckSessionIFrame: \"+e.data+\" message from check session op iframe\"))},t.prototype.start=function t(e){var r=this;if(this._session_state!==e){n.Log.debug(\"CheckSessionIFrame.start\"),this.stop(),this._session_state=e;var i=function t(){r._frame.contentWindow.postMessage(r._client_id+\" \"+r._session_state,r._frame_origin)};i(),this._timer=window.setInterval(i,this._interval)}},t.prototype.stop=function t(){this._session_state=null,this._timer&&(n.Log.debug(\"CheckSessionIFrame.stop\"),window.clearInterval(this._timer),this._timer=null)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenRevocationClient=void 0;var n=r(0),i=r(2),o=r(1);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var a=\"access_token\",u=\"refresh_token\";e.TokenRevocationClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Global.XMLHttpRequest,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw n.Log.error(\"TokenRevocationClient.ctor: No settings provided\"),new Error(\"No settings provided.\");this._settings=e,this._XMLHttpRequestCtor=r,this._metadataService=new a(this._settings)}return t.prototype.revoke=function t(e,r){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"access_token\";if(!e)throw n.Log.error(\"TokenRevocationClient.revoke: No token provided\"),new Error(\"No token provided.\");if(o!==a&&o!=u)throw n.Log.error(\"TokenRevocationClient.revoke: Invalid token type\"),new Error(\"Invalid token type.\");return this._metadataService.getRevocationEndpoint().then((function(t){if(t){n.Log.debug(\"TokenRevocationClient.revoke: Revoking \"+o);var s=i._settings.client_id,a=i._settings.client_secret;return i._revoke(t,s,a,e,o)}if(r)throw n.Log.error(\"TokenRevocationClient.revoke: Revocation not supported\"),new Error(\"Revocation not supported\")}))},t.prototype._revoke=function t(e,r,i,o,s){var a=this;return new Promise((function(t,u){var c=new a._XMLHttpRequestCtor;c.open(\"POST\",e),c.onload=function(){n.Log.debug(\"TokenRevocationClient.revoke: HTTP response received, status\",c.status),200===c.status?t():u(Error(c.statusText+\" (\"+c.status+\")\"))},c.onerror=function(){n.Log.debug(\"TokenRevocationClient.revoke: Network Error.\"),u(\"Network Error\")};var h=\"client_id=\"+encodeURIComponent(r);i&&(h+=\"&client_secret=\"+encodeURIComponent(i)),h+=\"&token_type_hint=\"+encodeURIComponent(s),h+=\"&token=\"+encodeURIComponent(o),c.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),c.send(h)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CordovaPopupWindow=void 0;var n=function(){function t(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:o.MetadataService,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.UserInfoService,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:c.JoseUtil,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:a.TokenClient;if(h(this,t),!e)throw i.Log.error(\"ResponseValidator.ctor: No settings passed to ResponseValidator\"),new Error(\"settings\");this._settings=e,this._metadataService=new r(this._settings),this._userInfoService=new n(this._settings),this._joseUtil=u,this._tokenClient=new l(this._settings)}return t.prototype.validateSigninResponse=function t(e,r){var n=this;return i.Log.debug(\"ResponseValidator.validateSigninResponse\"),this._processSigninParams(e,r).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: state processed\"),n._validateTokens(e,t).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: tokens validated\"),n._processClaims(e,t).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: claims processed\"),t}))}))}))},t.prototype.validateSignoutResponse=function t(e,r){return e.id!==r.state?(i.Log.error(\"ResponseValidator.validateSignoutResponse: State does not match\"),Promise.reject(new Error(\"State does not match\"))):(i.Log.debug(\"ResponseValidator.validateSignoutResponse: state validated\"),r.state=e.data,r.error?(i.Log.warn(\"ResponseValidator.validateSignoutResponse: Response was error\",r.error),Promise.reject(new u.ErrorResponse(r))):Promise.resolve(r))},t.prototype._processSigninParams=function t(e,r){if(e.id!==r.state)return i.Log.error(\"ResponseValidator._processSigninParams: State does not match\"),Promise.reject(new Error(\"State does not match\"));if(!e.client_id)return i.Log.error(\"ResponseValidator._processSigninParams: No client_id on state\"),Promise.reject(new Error(\"No client_id on state\"));if(!e.authority)return i.Log.error(\"ResponseValidator._processSigninParams: No authority on state\"),Promise.reject(new Error(\"No authority on state\"));if(this._settings.authority){if(this._settings.authority&&this._settings.authority!==e.authority)return i.Log.error(\"ResponseValidator._processSigninParams: authority mismatch on settings vs. signin state\"),Promise.reject(new Error(\"authority mismatch on settings vs. signin state\"))}else this._settings.authority=e.authority;if(this._settings.client_id){if(this._settings.client_id&&this._settings.client_id!==e.client_id)return i.Log.error(\"ResponseValidator._processSigninParams: client_id mismatch on settings vs. signin state\"),Promise.reject(new Error(\"client_id mismatch on settings vs. signin state\"))}else this._settings.client_id=e.client_id;return i.Log.debug(\"ResponseValidator._processSigninParams: state validated\"),r.state=e.data,r.error?(i.Log.warn(\"ResponseValidator._processSigninParams: Response was error\",r.error),Promise.reject(new u.ErrorResponse(r))):e.nonce&&!r.id_token?(i.Log.error(\"ResponseValidator._processSigninParams: Expecting id_token in response\"),Promise.reject(new Error(\"No id_token in response\"))):!e.nonce&&r.id_token?(i.Log.error(\"ResponseValidator._processSigninParams: Not expecting id_token in response\"),Promise.reject(new Error(\"Unexpected id_token in response\"))):e.code_verifier&&!r.code?(i.Log.error(\"ResponseValidator._processSigninParams: Expecting code in response\"),Promise.reject(new Error(\"No code in response\"))):!e.code_verifier&&r.code?(i.Log.error(\"ResponseValidator._processSigninParams: Not expecting code in response\"),Promise.reject(new Error(\"Unexpected code in response\"))):(r.scope||(r.scope=e.scope),Promise.resolve(r))},t.prototype._processClaims=function t(e,r){var n=this;if(r.isOpenIdConnect){if(i.Log.debug(\"ResponseValidator._processClaims: response is OIDC, processing claims\"),r.profile=this._filterProtocolClaims(r.profile),!0!==e.skipUserInfo&&this._settings.loadUserInfo&&r.access_token)return i.Log.debug(\"ResponseValidator._processClaims: loading user info\"),this._userInfoService.getClaims(r.access_token).then((function(t){return i.Log.debug(\"ResponseValidator._processClaims: user info claims received from user info endpoint\"),t.sub!==r.profile.sub?(i.Log.error(\"ResponseValidator._processClaims: sub from user info endpoint does not match sub in id_token\"),Promise.reject(new Error(\"sub from user info endpoint does not match sub in id_token\"))):(r.profile=n._mergeClaims(r.profile,t),i.Log.debug(\"ResponseValidator._processClaims: user info claims received, updated profile:\",r.profile),r)}));i.Log.debug(\"ResponseValidator._processClaims: not loading user info\")}else i.Log.debug(\"ResponseValidator._processClaims: response is not OIDC, not processing claims\");return Promise.resolve(r)},t.prototype._mergeClaims=function t(e,r){var i=Object.assign({},e);for(var o in r){var s=r[o];Array.isArray(s)||(s=[s]);for(var a=0;a1)return i.Log.error(\"ResponseValidator._validateIdToken: No kid found in id_token and more than one key found in metadata\"),Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));o=t[0]}return Promise.resolve(o)}))},t.prototype._getSigningKeyForJwtWithSingleRetry=function t(e){var r=this;return this._getSigningKeyForJwt(e).then((function(t){return t?Promise.resolve(t):(r._metadataService.resetSigningKeys(),r._getSigningKeyForJwt(e))}))},t.prototype._validateIdToken=function t(e,r){var n=this;if(!e.nonce)return i.Log.error(\"ResponseValidator._validateIdToken: No nonce on state\"),Promise.reject(new Error(\"No nonce on state\"));var o=this._joseUtil.parseJwt(r.id_token);return o&&o.header&&o.payload?e.nonce!==o.payload.nonce?(i.Log.error(\"ResponseValidator._validateIdToken: Invalid nonce in id_token\"),Promise.reject(new Error(\"Invalid nonce in id_token\"))):this._metadataService.getIssuer().then((function(t){return i.Log.debug(\"ResponseValidator._validateIdToken: Received issuer\"),n._getSigningKeyForJwtWithSingleRetry(o).then((function(s){if(!s)return i.Log.error(\"ResponseValidator._validateIdToken: No key matching kid or alg found in signing keys\"),Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));var a=e.client_id,u=n._settings.clockSkew;return i.Log.debug(\"ResponseValidator._validateIdToken: Validaing JWT; using clock skew (in seconds) of: \",u),n._joseUtil.validateJwt(r.id_token,s,t,a,u).then((function(){return i.Log.debug(\"ResponseValidator._validateIdToken: JWT validation successful\"),o.payload.sub?(r.profile=o.payload,r):(i.Log.error(\"ResponseValidator._validateIdToken: No sub present in id_token\"),Promise.reject(new Error(\"No sub present in id_token\")))}))}))})):(i.Log.error(\"ResponseValidator._validateIdToken: Failed to parse id_token\",o),Promise.reject(new Error(\"Failed to parse id_token\")))},t.prototype._filterByAlg=function t(e,r){var n=null;if(r.startsWith(\"RS\"))n=\"RSA\";else if(r.startsWith(\"PS\"))n=\"PS\";else{if(!r.startsWith(\"ES\"))return i.Log.debug(\"ResponseValidator._filterByAlg: alg not supported: \",r),[];n=\"EC\"}return i.Log.debug(\"ResponseValidator._filterByAlg: Looking for keys that match kty: \",n),e=e.filter((function(t){return t.kty===n})),i.Log.debug(\"ResponseValidator._filterByAlg: Number of keys that match kty: \",n,e.length),e},t.prototype._validateAccessToken=function t(e){if(!e.profile)return i.Log.error(\"ResponseValidator._validateAccessToken: No profile loaded from id_token\"),Promise.reject(new Error(\"No profile loaded from id_token\"));if(!e.profile.at_hash)return i.Log.error(\"ResponseValidator._validateAccessToken: No at_hash in id_token\"),Promise.reject(new Error(\"No at_hash in id_token\"));if(!e.id_token)return i.Log.error(\"ResponseValidator._validateAccessToken: No id_token\"),Promise.reject(new Error(\"No id_token\"));var r=this._joseUtil.parseJwt(e.id_token);if(!r||!r.header)return i.Log.error(\"ResponseValidator._validateAccessToken: Failed to parse id_token\",r),Promise.reject(new Error(\"Failed to parse id_token\"));var n=r.header.alg;if(!n||5!==n.length)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n),Promise.reject(new Error(\"Unsupported alg: \"+n));var o=n.substr(2,3);if(!o)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n,o),Promise.reject(new Error(\"Unsupported alg: \"+n));if(256!==(o=parseInt(o))&&384!==o&&512!==o)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n,o),Promise.reject(new Error(\"Unsupported alg: \"+n));var s=\"sha\"+o,a=this._joseUtil.hashString(e.access_token,s);if(!a)return i.Log.error(\"ResponseValidator._validateAccessToken: access_token hash failed:\",s),Promise.reject(new Error(\"Failed to validate at_hash\"));var u=a.substr(0,a.length/2),c=this._joseUtil.hexToBase64Url(u);return c!==e.profile.at_hash?(i.Log.error(\"ResponseValidator._validateAccessToken: Failed to validate at_hash\",c,e.profile.at_hash),Promise.reject(new Error(\"Failed to validate at_hash\"))):(i.Log.debug(\"ResponseValidator._validateAccessToken: success\"),Promise.resolve(e))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserInfoService=void 0;var n=r(7),i=r(2),o=r(0),s=r(4);function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.UserInfoService=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService,c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:s.JoseUtil;if(a(this,t),!e)throw o.Log.error(\"UserInfoService.ctor: No settings passed\"),new Error(\"settings\");this._settings=e,this._jsonService=new r(void 0,void 0,this._getClaimsFromJwt.bind(this)),this._metadataService=new u(this._settings),this._joseUtil=c}return t.prototype.getClaims=function t(e){var r=this;return e?this._metadataService.getUserInfoEndpoint().then((function(t){return o.Log.debug(\"UserInfoService.getClaims: received userinfo url\",t),r._jsonService.getJson(t,e).then((function(t){return o.Log.debug(\"UserInfoService.getClaims: claims received\",t),t}))})):(o.Log.error(\"UserInfoService.getClaims: No token passed\"),Promise.reject(new Error(\"A token is required\")))},t.prototype._getClaimsFromJwt=function t(e){var r=this;try{var n=this._joseUtil.parseJwt(e.responseText);if(!n||!n.header||!n.payload)return o.Log.error(\"UserInfoService._getClaimsFromJwt: Failed to parse JWT\",n),Promise.reject(new Error(\"Failed to parse id_token\"));var i=n.header.kid,s=void 0;switch(this._settings.userInfoJwtIssuer){case\"OP\":s=this._metadataService.getIssuer();break;case\"ANY\":s=Promise.resolve(n.payload.iss);break;default:s=Promise.resolve(this._settings.userInfoJwtIssuer)}return s.then((function(t){return o.Log.debug(\"UserInfoService._getClaimsFromJwt: Received issuer:\"+t),r._metadataService.getSigningKeys().then((function(s){if(!s)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No signing keys from metadata\"),Promise.reject(new Error(\"No signing keys from metadata\"));o.Log.debug(\"UserInfoService._getClaimsFromJwt: Received signing keys\");var a=void 0;if(i)a=s.filter((function(t){return t.kid===i}))[0];else{if((s=r._filterByAlg(s,n.header.alg)).length>1)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No kid found in id_token and more than one key found in metadata\"),Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));a=s[0]}if(!a)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No key matching kid or alg found in signing keys\"),Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));var u=r._settings.client_id,c=r._settings.clockSkew;return o.Log.debug(\"UserInfoService._getClaimsFromJwt: Validaing JWT; using clock skew (in seconds) of: \",c),r._joseUtil.validateJwt(e.responseText,a,t,u,c,void 0,!0).then((function(){return o.Log.debug(\"UserInfoService._getClaimsFromJwt: JWT validation successful\"),n.payload}))}))}))}catch(t){return o.Log.error(\"UserInfoService._getClaimsFromJwt: Error parsing JWT response\",t.message),void reject(t)}},t.prototype._filterByAlg=function t(e,r){var n=null;if(r.startsWith(\"RS\"))n=\"RSA\";else if(r.startsWith(\"PS\"))n=\"PS\";else{if(!r.startsWith(\"ES\"))return o.Log.debug(\"UserInfoService._filterByAlg: alg not supported: \",r),[];n=\"EC\"}return o.Log.debug(\"UserInfoService._filterByAlg: Looking for keys that match kty: \",n),e=e.filter((function(t){return t.kty===n})),o.Log.debug(\"UserInfoService._filterByAlg: Number of keys that match kty: \",n,e.length),e},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AllowedSigningAlgs=e.b64tohex=e.hextob64u=e.crypto=e.X509=e.KeyUtil=e.jws=void 0;var n=r(27);e.jws=n.jws,e.KeyUtil=n.KEYUTIL,e.X509=n.X509,e.crypto=n.crypto,e.hextob64u=n.hextob64u,e.b64tohex=n.b64tohex,e.AllowedSigningAlgs=[\"RS256\",\"RS384\",\"RS512\",\"PS256\",\"PS384\",\"PS512\",\"ES256\",\"ES384\",\"ES512\"]},function(t,e,r){\"use strict\";(function(t){Object.defineProperty(e,\"__esModule\",{value:!0});var r,n,i,o,s,a,u,c,h,l,f,g=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},d={userAgent:!1},p={},v=v||(r=Math,i=(n={}).lib={},o=i.Base=function(){function t(){}return{extend:function e(r){t.prototype=this;var n=new t;return r&&n.mixIn(r),n.hasOwnProperty(\"init\")||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function t(){var e=this.extend();return e.init.apply(e,arguments),e},init:function t(){},mixIn:function t(e){for(var r in e)e.hasOwnProperty(r)&&(this[r]=e[r]);e.hasOwnProperty(\"toString\")&&(this.toString=e.toString)},clone:function t(){return this.init.prototype.extend(this)}}}(),s=i.WordArray=o.extend({init:function t(e,r){e=this.words=e||[],this.sigBytes=null!=r?r:4*e.length},toString:function t(e){return(e||u).stringify(this)},concat:function t(e){var r=this.words,n=e.words,i=this.sigBytes,o=e.sigBytes;if(this.clamp(),i%4)for(var s=0;s>>2]>>>24-s%4*8&255;r[i+s>>>2]|=a<<24-(i+s)%4*8}else for(s=0;s>>2]=n[s>>>2];return this.sigBytes+=o,this},clamp:function t(){var e=this.words,n=this.sigBytes;e[n>>>2]&=4294967295<<32-n%4*8,e.length=r.ceil(n/4)},clone:function t(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function t(e){for(var n=[],i=0;i>>2]>>>24-o%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join(\"\")},parse:function t(e){for(var r=e.length,n=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new s.init(n,r/2)}},c=a.Latin1={stringify:function t(e){for(var r=e.words,n=e.sigBytes,i=[],o=0;o>>2]>>>24-o%4*8&255;i.push(String.fromCharCode(s))}return i.join(\"\")},parse:function t(e){for(var r=e.length,n=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new s.init(n,r)}},h=a.Utf8={stringify:function t(e){try{return decodeURIComponent(escape(c.stringify(e)))}catch(t){throw new Error(\"Malformed UTF-8 data\")}},parse:function t(e){return c.parse(unescape(encodeURIComponent(e)))}},l=i.BufferedBlockAlgorithm=o.extend({reset:function t(){this._data=new s.init,this._nDataBytes=0},_append:function t(e){\"string\"==typeof e&&(e=h.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function t(e){var n=this._data,i=n.words,o=n.sigBytes,a=this.blockSize,u=o/(4*a),c=(u=e?r.ceil(u):r.max((0|u)-this._minBufferSize,0))*a,h=r.min(4*c,o);if(c){for(var l=0;l>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;4>a&&o+.75*a>>6*(3-a)&63));if(r=i.charAt(64))for(;e.length%4;)e.push(r);return e.join(\"\")},parse:function t(r){var n=r.length,i=this._map;(o=i.charAt(64))&&(-1!=(o=r.indexOf(o))&&(n=o));for(var o=[],s=0,a=0;a>>6-a%4*2;o[s>>>2]|=(u|c)<<24-s%4*8,s++}return e.create(o,s)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}}(),function(t){for(var e=v,r=(i=e.lib).WordArray,n=i.Hasher,i=e.algo,o=[],s=[],a=function t(e){return 4294967296*(e-(0|e))|0},u=2,c=0;64>c;){var h;t:{h=u;for(var l=t.sqrt(h),f=2;f<=l;f++)if(!(h%f)){h=!1;break t}h=!0}h&&(8>c&&(o[c]=a(t.pow(u,.5))),s[c]=a(t.pow(u,1/3)),c++),u++}var g=[];i=i.SHA256=n.extend({_doReset:function t(){this._hash=new r.init(o.slice(0))},_doProcessBlock:function t(e,r){for(var n=this._hash.words,i=n[0],o=n[1],a=n[2],u=n[3],c=n[4],h=n[5],l=n[6],f=n[7],d=0;64>d;d++){if(16>d)g[d]=0|e[r+d];else{var p=g[d-15],v=g[d-2];g[d]=((p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3)+g[d-7]+((v<<15|v>>>17)^(v<<13|v>>>19)^v>>>10)+g[d-16]}p=f+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+s[d]+g[d],v=((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+(i&o^i&a^o&a),f=l,l=h,h=c,c=u+p|0,u=a,a=o,o=i,i=p+v|0}n[0]=n[0]+i|0,n[1]=n[1]+o|0,n[2]=n[2]+a|0,n[3]=n[3]+u|0,n[4]=n[4]+c|0,n[5]=n[5]+h|0,n[6]=n[6]+l|0,n[7]=n[7]+f|0},_doFinalize:function e(){var r=this._data,n=r.words,i=8*this._nDataBytes,o=8*r.sigBytes;return n[o>>>5]|=128<<24-o%32,n[14+(o+64>>>9<<4)]=t.floor(i/4294967296),n[15+(o+64>>>9<<4)]=i,r.sigBytes=4*n.length,this._process(),this._hash},clone:function t(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(i),e.HmacSHA256=n._createHmacHelper(i)}(Math),function(){function t(){return n.create.apply(n,arguments)}for(var e=v,r=e.lib.Hasher,n=(o=e.x64).Word,i=o.WordArray,o=e.algo,s=[t(1116352408,3609767458),t(1899447441,602891725),t(3049323471,3964484399),t(3921009573,2173295548),t(961987163,4081628472),t(1508970993,3053834265),t(2453635748,2937671579),t(2870763221,3664609560),t(3624381080,2734883394),t(310598401,1164996542),t(607225278,1323610764),t(1426881987,3590304994),t(1925078388,4068182383),t(2162078206,991336113),t(2614888103,633803317),t(3248222580,3479774868),t(3835390401,2666613458),t(4022224774,944711139),t(264347078,2341262773),t(604807628,2007800933),t(770255983,1495990901),t(1249150122,1856431235),t(1555081692,3175218132),t(1996064986,2198950837),t(2554220882,3999719339),t(2821834349,766784016),t(2952996808,2566594879),t(3210313671,3203337956),t(3336571891,1034457026),t(3584528711,2466948901),t(113926993,3758326383),t(338241895,168717936),t(666307205,1188179964),t(773529912,1546045734),t(1294757372,1522805485),t(1396182291,2643833823),t(1695183700,2343527390),t(1986661051,1014477480),t(2177026350,1206759142),t(2456956037,344077627),t(2730485921,1290863460),t(2820302411,3158454273),t(3259730800,3505952657),t(3345764771,106217008),t(3516065817,3606008344),t(3600352804,1432725776),t(4094571909,1467031594),t(275423344,851169720),t(430227734,3100823752),t(506948616,1363258195),t(659060556,3750685593),t(883997877,3785050280),t(958139571,3318307427),t(1322822218,3812723403),t(1537002063,2003034995),t(1747873779,3602036899),t(1955562222,1575990012),t(2024104815,1125592928),t(2227730452,2716904306),t(2361852424,442776044),t(2428436474,593698344),t(2756734187,3733110249),t(3204031479,2999351573),t(3329325298,3815920427),t(3391569614,3928383900),t(3515267271,566280711),t(3940187606,3454069534),t(4118630271,4000239992),t(116418474,1914138554),t(174292421,2731055270),t(289380356,3203993006),t(460393269,320620315),t(685471733,587496836),t(852142971,1086792851),t(1017036298,365543100),t(1126000580,2618297676),t(1288033470,3409855158),t(1501505948,4234509866),t(1607167915,987167468),t(1816402316,1246189591)],a=[],u=0;80>u;u++)a[u]=t();o=o.SHA512=r.extend({_doReset:function t(){this._hash=new i.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function t(e,r){for(var n=(f=this._hash.words)[0],i=f[1],o=f[2],u=f[3],c=f[4],h=f[5],l=f[6],f=f[7],g=n.high,d=n.low,p=i.high,v=i.low,y=o.high,m=o.low,_=u.high,S=u.low,b=c.high,w=c.low,F=h.high,E=h.low,x=l.high,A=l.low,k=f.high,P=f.low,C=g,T=d,R=p,I=v,D=y,L=m,N=_,U=S,B=b,O=w,j=F,M=E,H=x,V=A,K=k,q=P,J=0;80>J;J++){var W=a[J];if(16>J)var z=W.high=0|e[r+2*J],Y=W.low=0|e[r+2*J+1];else{z=((Y=(z=a[J-15]).high)>>>1|(G=z.low)<<31)^(Y>>>8|G<<24)^Y>>>7;var G=(G>>>1|Y<<31)^(G>>>8|Y<<24)^(G>>>7|Y<<25),X=((Y=(X=a[J-2]).high)>>>19|($=X.low)<<13)^(Y<<3|$>>>29)^Y>>>6,$=($>>>19|Y<<13)^($<<3|Y>>>29)^($>>>6|Y<<26),Q=(Y=a[J-7]).high,Z=(tt=a[J-16]).high,tt=tt.low;z=(z=(z=z+Q+((Y=G+Y.low)>>>0>>0?1:0))+X+((Y=Y+$)>>>0<$>>>0?1:0))+Z+((Y=Y+tt)>>>0>>0?1:0);W.high=z,W.low=Y}Q=B&j^~B&H,tt=O&M^~O&V,W=C&R^C&D^R&D;var et=T&I^T&L^I&L,rt=(G=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),X=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),($=s[J]).high),nt=$.low;Z=K+((B>>>14|O<<18)^(B>>>18|O<<14)^(B<<23|O>>>9))+(($=q+((O>>>14|B<<18)^(O>>>18|B<<14)^(O<<23|B>>>9)))>>>0>>0?1:0),K=H,q=V,H=j,V=M,j=B,M=O,B=N+(Z=(Z=(Z=Z+Q+(($=$+tt)>>>0>>0?1:0))+rt+(($=$+nt)>>>0>>0?1:0))+z+(($=$+Y)>>>0>>0?1:0))+((O=U+$|0)>>>0>>0?1:0)|0,N=D,U=L,D=R,L=I,R=C,I=T,C=Z+(W=G+W+((Y=X+et)>>>0>>0?1:0))+((T=$+Y|0)>>>0<$>>>0?1:0)|0}d=n.low=d+T,n.high=g+C+(d>>>0>>0?1:0),v=i.low=v+I,i.high=p+R+(v>>>0>>0?1:0),m=o.low=m+L,o.high=y+D+(m>>>0>>0?1:0),S=u.low=S+U,u.high=_+N+(S>>>0>>0?1:0),w=c.low=w+O,c.high=b+B+(w>>>0>>0?1:0),E=h.low=E+M,h.high=F+j+(E>>>0>>0?1:0),A=l.low=A+V,l.high=x+H+(A>>>0>>0?1:0),P=f.low=P+q,f.high=k+K+(P>>>0>>0?1:0)},_doFinalize:function t(){var e=this._data,r=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;return r[i>>>5]|=128<<24-i%32,r[30+(i+128>>>10<<5)]=Math.floor(n/4294967296),r[31+(i+128>>>10<<5)]=n,e.sigBytes=4*r.length,this._process(),this._hash.toX32()},clone:function t(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),e.SHA512=r._createHelper(o),e.HmacSHA512=r._createHmacHelper(o)}(),function(){var t=v,e=(i=t.x64).Word,r=i.WordArray,n=(i=t.algo).SHA512,i=i.SHA384=n.extend({_doReset:function t(){this._hash=new r.init([new e.init(3418070365,3238371032),new e.init(1654270250,914150663),new e.init(2438529370,812702999),new e.init(355462360,4144912697),new e.init(1731405415,4290775857),new e.init(2394180231,1750603025),new e.init(3675008525,1694076839),new e.init(1203062813,3204075428)])},_doFinalize:function t(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}});t.SHA384=n._createHelper(i),t.HmacSHA384=n._createHmacHelper(i)}();\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nvar y,m=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";function _(t){var e,r,n=\"\";for(e=0;e+3<=t.length;e+=3)r=parseInt(t.substring(e,e+3),16),n+=m.charAt(r>>6)+m.charAt(63&r);for(e+1==t.length?(r=parseInt(t.substring(e,e+1),16),n+=m.charAt(r<<2)):e+2==t.length&&(r=parseInt(t.substring(e,e+2),16),n+=m.charAt(r>>2)+m.charAt((3&r)<<4)),\"=\";(3&n.length)>0;)n+=\"=\";return n}function S(t){var e,r,n,i=\"\",o=0;for(e=0;e>2),r=3&n,o=1):1==o?(i+=T(r<<2|n>>4),r=15&n,o=2):2==o?(i+=T(r),i+=T(n>>2),r=3&n,o=3):(i+=T(r<<2|n>>4),i+=T(15&n),o=0));return 1==o&&(i+=T(r<<2)),i}function b(t){var e,r=S(t),n=new Array;for(e=0;2*e>15;--o>=0;){var u=32767&this[t],c=this[t++]>>15,h=a*u+c*s;i=((u=s*u+((32767&h)<<15)+r[n]+(1073741823&i))>>>30)+(h>>>15)+a*c+(i>>>30),r[n++]=1073741823&u}return i},y=30):\"Netscape\"!=d.appName?(w.prototype.am=function x(t,e,r,n,i,o){for(;--o>=0;){var s=e*this[t++]+r[n]+i;i=Math.floor(s/67108864),r[n++]=67108863&s}return i},y=26):(w.prototype.am=function A(t,e,r,n,i,o){for(var s=16383&e,a=e>>14;--o>=0;){var u=16383&this[t],c=this[t++]>>14,h=a*u+c*s;i=((u=s*u+((16383&h)<<14)+r[n]+i)>>28)+(h>>14)+a*c,r[n++]=268435455&u}return i},y=28),w.prototype.DB=y,w.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function L(t){this.m=t}function N(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function H(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function V(){}function K(t){return t}function q(t){this.r2=F(),this.q3=F(),w.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}L.prototype.convert=function J(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},L.prototype.revert=function W(t){return t},L.prototype.reduce=function z(t){t.divRemTo(this.m,null,t)},L.prototype.mulTo=function Y(t,e,r){t.multiplyTo(e,r),this.reduce(r)},L.prototype.sqrTo=function G(t,e){t.squareTo(e),this.reduce(e)},N.prototype.convert=function X(t){var e=F();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(w.ZERO)>0&&this.m.subTo(e,e),e},N.prototype.revert=function $(t){var e=F();return t.copyTo(e),this.reduce(e),e},N.prototype.reduce=function Q(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,n,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},N.prototype.mulTo=function Z(t,e,r){t.multiplyTo(e,r),this.reduce(r)},N.prototype.sqrTo=function tt(t,e){t.squareTo(e),this.reduce(e)},w.prototype.copyTo=function et(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},w.prototype.fromInt=function rt(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},w.prototype.fromString=function nt(t,e){var r;if(16==e)r=4;else if(8==e)r=3;else if(256==e)r=8;else if(2==e)r=1;else if(32==e)r=5;else{if(4!=e)return void this.fromRadix(t,e);r=2}this.t=0,this.s=0;for(var n=t.length,i=!1,o=0;--n>=0;){var s=8==r?255&t[n]:R(t,n);s<0?\"-\"==t.charAt(n)&&(i=!0):(i=!1,0==o?this[this.t++]=s:o+r>this.DB?(this[this.t-1]|=(s&(1<>this.DB-o):this[this.t-1]|=s<=this.DB&&(o-=this.DB))}8==r&&0!=(128&t[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},w.prototype.dlShiftTo=function ot(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},w.prototype.drShiftTo=function st(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>i|a,a=(this[r]&o)<=0;--r)e[r]=0;e[s]=a,e.t=this.t+s+1,e.s=this.s,e.clamp()},w.prototype.rShiftTo=function ut(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var n=t%this.DB,i=this.DB-n,o=(1<>n;for(var s=r+1;s>n;n>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=t.s}e.s=n<0?-1:0,n<-1?e[r++]=this.DV+n:n>0&&(e[r++]=n),e.t=r,e.clamp()},w.prototype.multiplyTo=function ht(t,e){var r=this.abs(),n=t.abs(),i=r.t;for(e.t=i+n.t;--i>=0;)e[i]=0;for(i=0;i=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},w.prototype.divRemTo=function ft(t,e,r){var n=t.abs();if(!(n.t<=0)){var i=this.abs();if(i.t0?(n.lShiftTo(u,o),i.lShiftTo(u,r)):(n.copyTo(o),i.copyTo(r));var c=o.t,h=o[c-1];if(0!=h){var l=h*(1<1?o[c-2]>>this.F2:0),f=this.FV/l,g=(1<=0&&(r[r.t++]=1,r.subTo(y,r)),w.ONE.dlShiftTo(c,y),y.subTo(o,o);o.t=0;){var m=r[--p]==h?this.DM:Math.floor(r[p]*f+(r[p-1]+d)*g);if((r[p]+=o.am(0,m,r,v,0,c))0&&r.rShiftTo(u,r),s<0&&w.ZERO.subTo(r,r)}}},w.prototype.invDigit=function gt(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},w.prototype.isEven=function dt(){return 0==(this.t>0?1&this[0]:this.s)},w.prototype.exp=function pt(t,e){if(t>4294967295||t<1)return w.ONE;var r=F(),n=F(),i=e.convert(this),o=D(t)-1;for(i.copyTo(r);--o>=0;)if(e.sqrTo(r,n),(t&1<0)e.mulTo(n,i,r);else{var s=r;r=n,n=s}return e.revert(r)},w.prototype.toString=function vt(t){if(this.s<0)return\"-\"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,n=(1<0)for(a>a)>0&&(i=!0,o=T(r));s>=0;)a>(a+=this.DB-e)):(r=this[s]>>(a-=e)&n,a<=0&&(a+=this.DB,--s)),r>0&&(i=!0),i&&(o+=T(r));return i?o:\"0\"},w.prototype.negate=function yt(){var t=F();return w.ZERO.subTo(this,t),t},w.prototype.abs=function mt(){return this.s<0?this.negate():this},w.prototype.compareTo=function _t(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},w.prototype.bitLength=function St(){return this.t<=0?0:this.DB*(this.t-1)+D(this[this.t-1]^this.s&this.DM)},w.prototype.mod=function bt(t){var e=F();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(w.ZERO)>0&&t.subTo(e,e),e},w.prototype.modPowInt=function wt(t,e){var r;return r=t<256||e.isEven()?new L(e):new N(e),this.exp(t,r)},w.ZERO=I(0),w.ONE=I(1),V.prototype.convert=K,V.prototype.revert=K,V.prototype.mulTo=function Ft(t,e,r){t.multiplyTo(e,r)},V.prototype.sqrTo=function Et(t,e){t.squareTo(e)},q.prototype.convert=function xt(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=F();return t.copyTo(e),this.reduce(e),e},q.prototype.revert=function At(t){return t},q.prototype.reduce=function kt(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},q.prototype.mulTo=function Pt(t,e,r){t.multiplyTo(e,r),this.reduce(r)},q.prototype.sqrTo=function Ct(t,e){t.squareTo(e),this.reduce(e)};var Tt=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],Rt=(1<<26)/Tt[Tt.length-1];\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction It(){this.i=0,this.j=0,this.S=new Array}w.prototype.chunkSize=function Dt(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},w.prototype.toRadix=function Lt(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return\"0\";var e=this.chunkSize(t),r=Math.pow(t,e),n=I(r),i=F(),o=F(),s=\"\";for(this.divRemTo(n,i,o);i.signum()>0;)s=(r+o.intValue()).toString(t).substr(1)+s,i.divRemTo(n,i,o);return o.intValue().toString(t)+s},w.prototype.fromRadix=function Nt(t,e){this.fromInt(0),null==e&&(e=10);for(var r=this.chunkSize(e),n=Math.pow(e,r),i=!1,o=0,s=0,a=0;a=r&&(this.dMultiply(n),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(e,o)),this.dAddOffset(s,0)),i&&w.ZERO.subTo(this,this)},w.prototype.fromNumber=function Ut(t,e,r){if(\"number\"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,r),this.testBit(t-1)||this.bitwiseTo(w.ONE.shiftLeft(t-1),B,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(w.ONE.shiftLeft(t-1),this);else{var n=new Array,i=7&t;n.length=1+(t>>3),e.nextBytes(n),i>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n+=t.s}e.s=n<0?-1:0,n>0?e[r++]=n:n<-1&&(e[r++]=this.DV+n),e.t=r,e.clamp()},w.prototype.dMultiply=function Mt(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},w.prototype.dAddOffset=function Ht(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},w.prototype.multiplyLowerTo=function Vt(t,e,r){var n,i=Math.min(this.t+t.t,e);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i=0;)r[n]=0;for(n=Math.max(e-this.t,0);n0)if(0==e)r=this[0]%t;else for(var n=this.t-1;n>=0;--n)r=(e*r+this[n])%t;return r},w.prototype.millerRabin=function Jt(t){var e=this.subtract(w.ONE),r=e.getLowestSetBit();if(r<=0)return!1;var n=e.shiftRight(r);(t=t+1>>1)>Tt.length&&(t=Tt.length);for(var i=F(),o=0;o>24},w.prototype.shortValue=function Gt(){return 0==this.t?this.s:this[0]<<16>>16},w.prototype.signum=function Xt(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},w.prototype.toByteArray=function $t(){var t=this.t,e=new Array;e[0]=this.s;var r,n=this.DB-t*this.DB%8,i=0;if(t-- >0)for(n>n)!=(this.s&this.DM)>>n&&(e[i++]=r|this.s<=0;)n<8?(r=(this[t]&(1<>(n+=this.DB-8)):(r=this[t]>>(n-=8)&255,n<=0&&(n+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(e[i++]=r);return e},w.prototype.equals=function Qt(t){return 0==this.compareTo(t)},w.prototype.min=function Zt(t){return this.compareTo(t)<0?this:t},w.prototype.max=function te(t){return this.compareTo(t)>0?this:t},w.prototype.and=function ee(t){var e=F();return this.bitwiseTo(t,U,e),e},w.prototype.or=function re(t){var e=F();return this.bitwiseTo(t,B,e),e},w.prototype.xor=function ne(t){var e=F();return this.bitwiseTo(t,O,e),e},w.prototype.andNot=function ie(t){var e=F();return this.bitwiseTo(t,j,e),e},w.prototype.not=function oe(){for(var t=F(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var h=F();for(n.sqrTo(s[1],h);a<=c;)s[a]=F(),n.mulTo(h,s[a-2],s[a]),a+=2}var l,f,g=t.t-1,d=!0,p=F();for(i=D(t[g])-1;g>=0;){for(i>=u?l=t[g]>>i-u&c:(l=(t[g]&(1<0&&(l|=t[g-1]>>this.DB+i-u)),a=r;0==(1&l);)l>>=1,--a;if((i-=a)<0&&(i+=this.DB,--g),d)s[l].copyTo(o),d=!1;else{for(;a>1;)n.sqrTo(o,p),n.sqrTo(p,o),a-=2;a>0?n.sqrTo(o,p):(f=o,o=p,p=f),n.mulTo(p,s[l],o)}for(;g>=0&&0==(t[g]&1<=0?(r.subTo(n,r),e&&i.subTo(s,i),o.subTo(a,o)):(n.subTo(r,n),e&&s.subTo(i,s),a.subTo(o,a))}return 0!=n.compareTo(w.ONE)?w.ZERO:a.compareTo(t)>=0?a.subtract(t):a.signum()<0?(a.addTo(t,a),a.signum()<0?a.add(t):a):a},w.prototype.pow=function we(t){return this.exp(t,new V)},w.prototype.gcd=function Fe(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var n=e;e=r,r=n}var i=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(i0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(i=e.getLowestSetBit())>0&&e.rShiftTo(i,e),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},w.prototype.isProbablePrime=function Ee(t){var e,r=this.abs();if(1==r.t&&r[0]<=Tt[Tt.length-1]){for(e=0;e>8&255,Ce[Te++]^=e>>16&255,Ce[Te++]^=e>>24&255,Te>=256&&(Te-=256)}((new Date).getTime())}if(null==Ce){var Ie;if(Ce=new Array,Te=0,void 0!==p&&(void 0!==p.crypto||void 0!==p.msCrypto)){var De=p.crypto||p.msCrypto;if(De.getRandomValues){var Le=new Uint8Array(32);for(De.getRandomValues(Le),Ie=0;Ie<32;++Ie)Ce[Te++]=Le[Ie]}else if(\"Netscape\"==d.appName&&d.appVersion<\"5\"){var Ne=p.crypto.random(32);for(Ie=0;Ie>>8,Ce[Te++]=255&Ie;Te=0,Re()}function Ue(){if(null==Pe){for(Re(),(Pe=function t(){return new It}()).init(Ce),Te=0;Te>24,(16711680&i)>>16,(65280&i)>>8,255&i]))),i+=1;return n}function Me(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null}\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction He(t,e){this.x=e,this.q=t}function Ve(t,e,r,n){this.curve=t,this.x=e,this.y=r,this.z=null==n?w.ONE:n,this.zinv=null}function Ke(t,e,r){this.q=t,this.a=this.fromBigInteger(e),this.b=this.fromBigInteger(r),this.infinity=new Ve(this,null,null)}Be.prototype.nextBytes=function qe(t){var e;for(e=0;e0&&e.length>0))throw\"Invalid RSA public key\";this.n=Oe(t,16),this.e=parseInt(e,16)}},Me.prototype.encrypt=function ze(t){var e=function r(t,e){if(e=0&&e>0;){var i=t.charCodeAt(n--);i<128?r[--e]=i:i>127&&i<2048?(r[--e]=63&i|128,r[--e]=i>>6|192):(r[--e]=63&i|128,r[--e]=i>>6&63|128,r[--e]=i>>12|224)}r[--e]=0;for(var o=new Be,s=new Array;e>2;){for(s[0]=0;0==s[0];)o.nextBytes(s);r[--e]=s[0]}return r[--e]=2,r[--e]=0,new w(r)}(t,this.n.bitLength()+7>>3);if(null==e)return null;var n=this.doPublic(e);if(null==n)return null;var i=n.toString(16);return 0==(1&i.length)?i:\"0\"+i},Me.prototype.encryptOAEP=function Ye(t,e,r){var n=function i(t,e,r,n){var i=Sr.crypto.MessageDigest,o=Sr.crypto.Util,s=null;if(r||(r=\"sha1\"),\"string\"==typeof r&&(s=i.getCanonicalAlgName(r),n=i.getHashLength(s),r=function t(e){return Lr(o.hashHex(Nr(e),s))}),t.length+2*n+2>e)throw\"Message too long for RSA\";var a,u=\"\";for(a=0;a>3,e,r);if(null==n)return null;var o=this.doPublic(n);if(null==o)return null;var s=o.toString(16);return 0==(1&s.length)?s:\"0\"+s},Me.prototype.type=\"RSA\",He.prototype.equals=function Ge(t){return t==this||this.q.equals(t.q)&&this.x.equals(t.x)},He.prototype.toBigInteger=function Xe(){return this.x},He.prototype.negate=function $e(){return new He(this.q,this.x.negate().mod(this.q))},He.prototype.add=function Qe(t){return new He(this.q,this.x.add(t.toBigInteger()).mod(this.q))},He.prototype.subtract=function Ze(t){return new He(this.q,this.x.subtract(t.toBigInteger()).mod(this.q))},He.prototype.multiply=function tr(t){return new He(this.q,this.x.multiply(t.toBigInteger()).mod(this.q))},He.prototype.square=function er(){return new He(this.q,this.x.square().mod(this.q))},He.prototype.divide=function rr(t){return new He(this.q,this.x.multiply(t.toBigInteger().modInverse(this.q)).mod(this.q))},Ve.prototype.getX=function nr(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))},Ve.prototype.getY=function ir(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))},Ve.prototype.equals=function or(t){return t==this||(this.isInfinity()?t.isInfinity():t.isInfinity()?this.isInfinity():!!t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(w.ZERO)&&t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(w.ZERO))},Ve.prototype.isInfinity=function sr(){return null==this.x&&null==this.y||this.z.equals(w.ZERO)&&!this.y.toBigInteger().equals(w.ZERO)},Ve.prototype.negate=function ar(){return new Ve(this.curve,this.x,this.y.negate(),this.z)},Ve.prototype.add=function ur(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q),r=t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q);if(w.ZERO.equals(r))return w.ZERO.equals(e)?this.twice():this.curve.getInfinity();var n=new w(\"3\"),i=this.x.toBigInteger(),o=this.y.toBigInteger(),s=(t.x.toBigInteger(),t.y.toBigInteger(),r.square()),a=s.multiply(r),u=i.multiply(s),c=e.square().multiply(this.z),h=c.subtract(u.shiftLeft(1)).multiply(t.z).subtract(a).multiply(r).mod(this.curve.q),l=u.multiply(n).multiply(e).subtract(o.multiply(a)).subtract(c.multiply(e)).multiply(t.z).add(e.multiply(a)).mod(this.curve.q),f=a.multiply(this.z).multiply(t.z).mod(this.curve.q);return new Ve(this.curve,this.curve.fromBigInteger(h),this.curve.fromBigInteger(l),f)},Ve.prototype.twice=function cr(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=new w(\"3\"),e=this.x.toBigInteger(),r=this.y.toBigInteger(),n=r.multiply(this.z),i=n.multiply(r).mod(this.curve.q),o=this.curve.a.toBigInteger(),s=e.square().multiply(t);w.ZERO.equals(o)||(s=s.add(this.z.square().multiply(o)));var a=(s=s.mod(this.curve.q)).square().subtract(e.shiftLeft(3).multiply(i)).shiftLeft(1).multiply(n).mod(this.curve.q),u=s.multiply(t).multiply(e).subtract(i.shiftLeft(1)).shiftLeft(2).multiply(i).subtract(s.square().multiply(s)).mod(this.curve.q),c=n.square().multiply(n).shiftLeft(3).mod(this.curve.q);return new Ve(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(u),c)},Ve.prototype.multiply=function hr(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new w(\"3\")),i=this.negate(),o=this,s=this.curve.q.subtract(t),a=s.multiply(new w(\"3\")),u=new Ve(this.curve,this.x,this.y),c=u.negate();for(e=n.bitLength()-2;e>0;--e){o=o.twice();var h=n.testBit(e);h!=r.testBit(e)&&(o=o.add(h?this:i))}for(e=a.bitLength()-2;e>0;--e){u=u.twice();var l=a.testBit(e);l!=s.testBit(e)&&(u=u.add(l?u:c))}return o},Ve.prototype.multiplyTwo=function lr(t,e,r){var n;n=t.bitLength()>r.bitLength()?t.bitLength()-1:r.bitLength()-1;for(var i=this.curve.getInfinity(),o=this.add(e);n>=0;)i=i.twice(),t.testBit(n)?i=r.testBit(n)?i.add(o):i.add(this):r.testBit(n)&&(i=i.add(e)),--n;return i},Ke.prototype.getQ=function fr(){return this.q},Ke.prototype.getA=function gr(){return this.a},Ke.prototype.getB=function dr(){return this.b},Ke.prototype.equals=function pr(t){return t==this||this.q.equals(t.q)&&this.a.equals(t.a)&&this.b.equals(t.b)},Ke.prototype.getInfinity=function vr(){return this.infinity},Ke.prototype.fromBigInteger=function yr(t){return new He(this.q,t)},Ke.prototype.decodePointHex=function mr(t){switch(parseInt(t.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var e=(t.length-2)/2,r=t.substr(2,e),n=t.substr(e+2,e);return new Ve(this,this.fromBigInteger(new w(r,16)),this.fromBigInteger(new w(n,16)));default:return null}},\n/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib\n */\nHe.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)},Ve.prototype.getEncoded=function(t){var e=function t(e,r){var n=e.toByteArrayUnsigned();if(rn.length;)n.unshift(0);return n},r=this.getX().toBigInteger(),n=this.getY().toBigInteger(),i=e(r,32);return t?n.isEven()?i.unshift(2):i.unshift(3):(i.unshift(4),i=i.concat(e(n,32))),i},Ve.decodeFrom=function(t,e){e[0];var r=e.length-1,n=e.slice(1,1+r/2),i=e.slice(1+r/2,1+r);n.unshift(0),i.unshift(0);var o=new w(n),s=new w(i);return new Ve(t,t.fromBigInteger(o),t.fromBigInteger(s))},Ve.decodeFromHex=function(t,e){e.substr(0,2);var r=e.length-2,n=e.substr(2,r/2),i=e.substr(2+r/2,r/2),o=new w(n,16),s=new w(i,16);return new Ve(t,t.fromBigInteger(o),t.fromBigInteger(s))},Ve.prototype.add2D=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;if(this.x.equals(t.x))return this.y.equals(t.y)?this.twice():this.curve.getInfinity();var e=t.x.subtract(this.x),r=t.y.subtract(this.y).divide(e),n=r.square().subtract(this.x).subtract(t.x),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new Ve(this.curve,n,i)},Ve.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=this.curve.fromBigInteger(w.valueOf(2)),e=this.curve.fromBigInteger(w.valueOf(3)),r=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(t)),n=r.square().subtract(this.x.multiply(t)),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new Ve(this.curve,n,i)},Ve.prototype.multiply2D=function(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new w(\"3\")),i=this.negate(),o=this;for(e=n.bitLength()-2;e>0;--e){o=o.twice();var s=n.testBit(e);s!=r.testBit(e)&&(o=o.add2D(s?this:i))}return o},Ve.prototype.isOnCurve=function(){var t=this.getX().toBigInteger(),e=this.getY().toBigInteger(),r=this.curve.getA().toBigInteger(),n=this.curve.getB().toBigInteger(),i=this.curve.getQ(),o=e.multiply(e).mod(i),s=t.multiply(t).multiply(t).add(r.multiply(t)).add(n).mod(i);return o.equals(s)},Ve.prototype.toString=function(){return\"(\"+this.getX().toBigInteger().toString()+\",\"+this.getY().toBigInteger().toString()+\")\"},Ve.prototype.validate=function(){var t=this.curve.getQ();if(this.isInfinity())throw new Error(\"Point is at infinity.\");var e=this.getX().toBigInteger(),r=this.getY().toBigInteger();if(e.compareTo(w.ONE)<0||e.compareTo(t.subtract(w.ONE))>0)throw new Error(\"x coordinate out of bounds\");if(r.compareTo(w.ONE)<0||r.compareTo(t.subtract(w.ONE))>0)throw new Error(\"y coordinate out of bounds\");if(!this.isOnCurve())throw new Error(\"Point is not on the curve.\");if(this.multiply(t).isInfinity())throw new Error(\"Point is not a scalar multiple of G.\");return!0};\n/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval\n */\nvar _r=function(){var t=new RegExp('(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)|(?:\"(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))*\"))',\"g\"),e=new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\",\"g\"),r={'\"':'\"',\"/\":\"/\",\"\\\\\":\"\\\\\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"};function n(t,e,n){return e?r[e]:String.fromCharCode(parseInt(n,16))}var i=new String(\"\"),o=Object.hasOwnProperty;return function(r,s){var a,u,c=r.match(t),h=c[0],l=!1;\"{\"===h?a={}:\"[\"===h?a=[]:(a=[],l=!0);for(var f=[a],d=1-l,p=c.length;d=0;)delete n[i[c]]}return s.call(e,r,n)}({\"\":a},\"\")}return a}}();void 0!==Sr&&Sr||(e.KJUR=Sr={}),void 0!==Sr.asn1&&Sr.asn1||(Sr.asn1={}),Sr.asn1.ASN1Util=new function(){this.integerToByteHex=function(t){var e=t.toString(16);return e.length%2==1&&(e=\"0\"+e),e},this.bigIntToMinTwosComplementsHex=function(t){var e=t.toString(16);if(\"-\"!=e.substr(0,1))e.length%2==1?e=\"0\"+e:e.match(/^[0-7]/)||(e=\"00\"+e);else{var r=e.substr(1).length;r%2==1?r+=1:e.match(/^[0-7]/)||(r+=2);for(var n=\"\",i=0;i15)throw\"ASN.1 length too long to represent by 8x: n = \"+t.toString(16);return(128+r).toString(16)+e},this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getValueHex=function(){return this.getEncodedHex(),this.hV},this.getFreshValueHex=function(){return\"\"},this.setByParam=function(t){this.params=t},null!=t&&null!=t.tlv&&(this.hTLV=t.tlv,this.isModified=!1)},Sr.asn1.DERAbstractString=function(t){Sr.asn1.DERAbstractString.superclass.constructor.call(this);this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=Ir(this.s).toLowerCase()},this.setStringHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(\"string\"==typeof t?this.setString(t):void 0!==t.str?this.setString(t.str):void 0!==t.hex&&this.setStringHex(t.hex))},Zr(Sr.asn1.DERAbstractString,Sr.asn1.ASN1Object),Sr.asn1.DERAbstractTime=function(t){Sr.asn1.DERAbstractTime.superclass.constructor.call(this);this.localDateToUTC=function(t){var e=t.getTime()+6e4*t.getTimezoneOffset();return new Date(e)},this.formatDate=function(t,e,r){var n=this.zeroPadding,i=this.localDateToUTC(t),o=String(i.getFullYear());\"utc\"==e&&(o=o.substr(2,2));var s=o+n(String(i.getMonth()+1),2)+n(String(i.getDate()),2)+n(String(i.getHours()),2)+n(String(i.getMinutes()),2)+n(String(i.getSeconds()),2);if(!0===r){var a=i.getMilliseconds();if(0!=a){var u=n(String(a),3);s=s+\".\"+(u=u.replace(/[0]+$/,\"\"))}}return s+\"Z\"},this.zeroPadding=function(t,e){return t.length>=e?t:new Array(e-t.length+1).join(\"0\")+t},this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=kr(t)},this.setByDateValue=function(t,e,r,n,i,o){var s=new Date(Date.UTC(t,e-1,r,n,i,o,0));this.setByDate(s)},this.getFreshValueHex=function(){return this.hV}},Zr(Sr.asn1.DERAbstractTime,Sr.asn1.ASN1Object),Sr.asn1.DERAbstractStructured=function(t){Sr.asn1.DERAbstractString.superclass.constructor.call(this);this.setByASN1ObjectArray=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array=t},this.appendASN1Object=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array.push(t)},this.asn1Array=new Array,void 0!==t&&void 0!==t.array&&(this.asn1Array=t.array)},Zr(Sr.asn1.DERAbstractStructured,Sr.asn1.ASN1Object),Sr.asn1.DERBoolean=function(t){Sr.asn1.DERBoolean.superclass.constructor.call(this),this.hT=\"01\",this.hTLV=0==t?\"010100\":\"0101ff\"},Zr(Sr.asn1.DERBoolean,Sr.asn1.ASN1Object),Sr.asn1.DERInteger=function(t){Sr.asn1.DERInteger.superclass.constructor.call(this),this.hT=\"02\",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=Sr.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new w(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.bigint?this.setByBigInteger(t.bigint):void 0!==t.int?this.setByInteger(t.int):\"number\"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},Zr(Sr.asn1.DERInteger,Sr.asn1.ASN1Object),Sr.asn1.DERBitString=function(t){if(void 0!==t&&void 0!==t.obj){var e=Sr.asn1.ASN1Util.newObject(t.obj);t.hex=\"00\"+e.getEncodedHex()}Sr.asn1.DERBitString.superclass.constructor.call(this),this.hT=\"03\",this.setHexValueIncludingUnusedBits=function(t){this.hTLV=null,this.isModified=!0,this.hV=t},this.setUnusedBitsAndHexValue=function(t,e){if(t<0||7i.length&&(i=n[r]);return(t=t.replace(i,\"::\")).slice(1,-1)}function zr(t){var e=\"malformed hex value\";if(!t.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw e;if(8!=t.length)return 32==t.length?Wr(t):t;try{return parseInt(t.substr(0,2),16)+\".\"+parseInt(t.substr(2,2),16)+\".\"+parseInt(t.substr(4,2),16)+\".\"+parseInt(t.substr(6,2),16)}catch(t){throw e}}function Yr(t){return t.match(/.{4}/g).map((function e(t){var e=parseInt(t.substr(0,2),16),r=parseInt(t.substr(2),16);if(0==e&r<128)return String.fromCharCode(r);if(e<8){var n=128|63&r;return Dr((192|(7&e)<<3|(192&r)>>6).toString(16)+n.toString(16))}n=128|(15&e)<<2|(192&r)>>6;var i=128|63&r;return Dr((224|(240&e)>>4).toString(16)+n.toString(16)+i.toString(16))})).join(\"\")}function Gr(t){for(var e=encodeURIComponent(t),r=\"\",n=0;n\"7\"?\"00\"+t:t}Fr.getLblen=function(t,e){if(\"8\"!=t.substr(e+2,1))return 1;var r=parseInt(t.substr(e+3,1));return 0==r?-1:0=n)break}return s},Fr.getNthChildIdx=function(t,e,r){return Fr.getChildIdx(t,e)[r]},Fr.getIdxbyList=function(t,e,r,n){var i,o,s=Fr;return 0==r.length?void 0!==n&&t.substr(e,2)!==n?-1:e:(i=r.shift())>=(o=s.getChildIdx(t,e)).length?-1:s.getIdxbyList(t,o[i],r,n)},Fr.getIdxbyListEx=function(t,e,r,n){var i,o,s=Fr;if(0==r.length)return void 0!==n&&t.substr(e,2)!==n?-1:e;i=r.shift(),o=s.getChildIdx(t,e);for(var a=0,u=0;u=t.length?null:i.getTLV(t,o)},Fr.getTLVbyListEx=function(t,e,r,n){var i=Fr,o=i.getIdxbyListEx(t,e,r,n);return-1==o?null:i.getTLV(t,o)},Fr.getVbyList=function(t,e,r,n,i){var o,s,a=Fr;return-1==(o=a.getIdxbyList(t,e,r,n))||o>=t.length?null:(s=a.getV(t,o),!0===i&&(s=s.substr(2)),s)},Fr.getVbyListEx=function(t,e,r,n,i){var o,s,a=Fr;return-1==(o=a.getIdxbyListEx(t,e,r,n))?null:(s=a.getV(t,o),\"03\"==t.substr(o,2)&&!1!==i&&(s=s.substr(2)),s)},Fr.getInt=function(t,e,r){null==r&&(r=-1);try{var n=t.substr(e,2);if(\"02\"!=n&&\"03\"!=n)return r;var i=Fr.getV(t,e);return\"02\"==n?parseInt(i,16):function o(t){try{var e=t.substr(0,2);if(\"00\"==e)return parseInt(t.substr(2),16);var r=parseInt(e,16),n=t.substr(2),i=parseInt(n,16).toString(2);return\"0\"==i&&(i=\"00000000\"),i=i.slice(0,0-r),parseInt(i,2)}catch(t){return-1}}(i)}catch(t){return r}},Fr.getOID=function(t,e,r){null==r&&(r=null);try{return\"06\"!=t.substr(e,2)?r:function n(t){if(!Xr(t))return null;try{var e=[],r=t.substr(0,2),n=parseInt(r,16);e[0]=new String(Math.floor(n/40)),e[1]=new String(n%40);for(var i=t.substr(2),o=[],s=0;s0&&(c=c+\".\"+a.join(\".\")),c}catch(t){return null}}(Fr.getV(t,e))}catch(t){return r}},Fr.getOIDName=function(t,e,r){null==r&&(r=null);try{var n=Fr.getOID(t,e,r);if(n==r)return r;var i=Sr.asn1.x509.OID.oid2name(n);return\"\"==i?n:i}catch(t){return r}},Fr.getString=function(t,e,r){null==r&&(r=null);try{return Lr(Fr.getV(t,e))}catch(t){return r}},Fr.hextooidstr=function(t){var e=function t(e,r){return e.length>=r?e:new Array(r-e.length+1).join(\"0\")+e},r=[],n=t.substr(0,2),i=parseInt(n,16);r[0]=new String(Math.floor(i/40)),r[1]=new String(i%40);for(var o=t.substr(2),s=[],a=0;a0&&(h=h+\".\"+u.join(\".\")),h},Fr.dump=function(t,e,r,n){var i=Fr,o=i.getV,s=i.dump,a=i.getChildIdx,u=t;t instanceof Sr.asn1.ASN1Object&&(u=t.getEncodedHex());var c=function t(e,r){return e.length<=2*r?e:e.substr(0,r)+\"..(total \"+e.length/2+\"bytes)..\"+e.substr(e.length-r,r)};void 0===e&&(e={ommit_long_octet:32}),void 0===r&&(r=0),void 0===n&&(n=\"\");var h,l=e.ommit_long_octet;if(\"01\"==(h=u.substr(r,2)))return\"00\"==(f=o(u,r))?n+\"BOOLEAN FALSE\\n\":n+\"BOOLEAN TRUE\\n\";if(\"02\"==h)return n+\"INTEGER \"+c(f=o(u,r),l)+\"\\n\";if(\"03\"==h){var f=o(u,r);if(i.isASN1HEX(f.substr(2))){var g=n+\"BITSTRING, encapsulates\\n\";return g+=s(f.substr(2),e,0,n+\" \")}return n+\"BITSTRING \"+c(f,l)+\"\\n\"}if(\"04\"==h){f=o(u,r);if(i.isASN1HEX(f)){g=n+\"OCTETSTRING, encapsulates\\n\";return g+=s(f,e,0,n+\" \")}return n+\"OCTETSTRING \"+c(f,l)+\"\\n\"}if(\"05\"==h)return n+\"NULL\\n\";if(\"06\"==h){var d=o(u,r),p=Sr.asn1.ASN1Util.oidHexToInt(d),v=Sr.asn1.x509.OID.oid2name(p),y=p.replace(/\\./g,\" \");return\"\"!=v?n+\"ObjectIdentifier \"+v+\" (\"+y+\")\\n\":n+\"ObjectIdentifier (\"+y+\")\\n\"}if(\"0a\"==h)return n+\"ENUMERATED \"+parseInt(o(u,r))+\"\\n\";if(\"0c\"==h)return n+\"UTF8String '\"+Dr(o(u,r))+\"'\\n\";if(\"13\"==h)return n+\"PrintableString '\"+Dr(o(u,r))+\"'\\n\";if(\"14\"==h)return n+\"TeletexString '\"+Dr(o(u,r))+\"'\\n\";if(\"16\"==h)return n+\"IA5String '\"+Dr(o(u,r))+\"'\\n\";if(\"17\"==h)return n+\"UTCTime \"+Dr(o(u,r))+\"\\n\";if(\"18\"==h)return n+\"GeneralizedTime \"+Dr(o(u,r))+\"\\n\";if(\"1a\"==h)return n+\"VisualString '\"+Dr(o(u,r))+\"'\\n\";if(\"1e\"==h)return n+\"BMPString '\"+Yr(o(u,r))+\"'\\n\";if(\"30\"==h){if(\"3000\"==u.substr(r,4))return n+\"SEQUENCE {}\\n\";g=n+\"SEQUENCE\\n\";var m=e;if((2==(b=a(u,r)).length||3==b.length)&&\"06\"==u.substr(b[0],2)&&\"04\"==u.substr(b[b.length-1],2)){v=i.oidname(o(u,b[0]));var _=JSON.parse(JSON.stringify(e));_.x509ExtName=v,m=_}for(var S=0;S31)&&(128==(192&r)&&(31&r)==n))}catch(t){return!1}},Fr.isASN1HEX=function(t){var e=Fr;if(t.length%2==1)return!1;var r=e.getVblen(t,0),n=t.substr(0,2),i=e.getL(t,0);return t.length-n.length-i.length==2*r},Fr.checkStrictDER=function(t,e,r,n,i){var o=Fr;if(void 0===r){if(\"string\"!=typeof t)throw new Error(\"not hex string\");if(t=t.toLowerCase(),!Sr.lang.String.isHex(t))throw new Error(\"not hex string\");r=t.length,i=(n=t.length/2)<128?1:Math.ceil(n.toString(16))+1}if(o.getL(t,e).length>2*i)throw new Error(\"L of TLV too long: idx=\"+e);var s=o.getVblen(t,e);if(s>n)throw new Error(\"value of L too long than hex: idx=\"+e);var a=o.getTLV(t,e),u=a.length-2-o.getL(t,e).length;if(u!==2*s)throw new Error(\"V string length and L's value not the same:\"+u+\"/\"+2*s);if(0===e&&t.length!=a.length)throw new Error(\"total length and TLV length unmatch:\"+t.length+\"!=\"+a.length);var c=t.substr(e,2);if(\"02\"===c){var h=o.getVidx(t,e);if(\"00\"==t.substr(h,2)&&t.charCodeAt(h+2)<56)throw new Error(\"not least zeros for DER INTEGER\")}if(32&parseInt(c,16)){for(var l=o.getVblen(t,e),f=0,g=o.getChildIdx(t,e),d=0;d=r?e:new Array(r-e.length+1).join(n)+e};function Zr(t,e){var r=function t(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t,t.superclass=e.prototype,e.prototype.constructor==Object.prototype.constructor&&(e.prototype.constructor=e)}void 0!==Sr&&Sr||(e.KJUR=Sr={}),void 0!==Sr.crypto&&Sr.crypto||(Sr.crypto={}),Sr.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:\"3021300906052b0e03021a05000414\",sha224:\"302d300d06096086480165030402040500041c\",sha256:\"3031300d060960864801650304020105000420\",sha384:\"3041300d060960864801650304020205000430\",sha512:\"3051300d060960864801650304020305000440\",md2:\"3020300c06082a864886f70d020205000410\",md5:\"3020300c06082a864886f70d020505000410\",ripemd160:\"3021300906052b2403020105000414\"},this.DEFAULTPROVIDER={md5:\"cryptojs\",sha1:\"cryptojs\",sha224:\"cryptojs\",sha256:\"cryptojs\",sha384:\"cryptojs\",sha512:\"cryptojs\",ripemd160:\"cryptojs\",hmacmd5:\"cryptojs\",hmacsha1:\"cryptojs\",hmacsha224:\"cryptojs\",hmacsha256:\"cryptojs\",hmacsha384:\"cryptojs\",hmacsha512:\"cryptojs\",hmacripemd160:\"cryptojs\",MD5withRSA:\"cryptojs/jsrsa\",SHA1withRSA:\"cryptojs/jsrsa\",SHA224withRSA:\"cryptojs/jsrsa\",SHA256withRSA:\"cryptojs/jsrsa\",SHA384withRSA:\"cryptojs/jsrsa\",SHA512withRSA:\"cryptojs/jsrsa\",RIPEMD160withRSA:\"cryptojs/jsrsa\",MD5withECDSA:\"cryptojs/jsrsa\",SHA1withECDSA:\"cryptojs/jsrsa\",SHA224withECDSA:\"cryptojs/jsrsa\",SHA256withECDSA:\"cryptojs/jsrsa\",SHA384withECDSA:\"cryptojs/jsrsa\",SHA512withECDSA:\"cryptojs/jsrsa\",RIPEMD160withECDSA:\"cryptojs/jsrsa\",SHA1withDSA:\"cryptojs/jsrsa\",SHA224withDSA:\"cryptojs/jsrsa\",SHA256withDSA:\"cryptojs/jsrsa\",MD5withRSAandMGF1:\"cryptojs/jsrsa\",SHAwithRSAandMGF1:\"cryptojs/jsrsa\",SHA1withRSAandMGF1:\"cryptojs/jsrsa\",SHA224withRSAandMGF1:\"cryptojs/jsrsa\",SHA256withRSAandMGF1:\"cryptojs/jsrsa\",SHA384withRSAandMGF1:\"cryptojs/jsrsa\",SHA512withRSAandMGF1:\"cryptojs/jsrsa\",RIPEMD160withRSAandMGF1:\"cryptojs/jsrsa\"},this.CRYPTOJSMESSAGEDIGESTNAME={md5:v.algo.MD5,sha1:v.algo.SHA1,sha224:v.algo.SHA224,sha256:v.algo.SHA256,sha384:v.algo.SHA384,sha512:v.algo.SHA512,ripemd160:v.algo.RIPEMD160},this.getDigestInfoHex=function(t,e){if(void 0===this.DIGESTINFOHEAD[e])throw\"alg not supported in Util.DIGESTINFOHEAD: \"+e;return this.DIGESTINFOHEAD[e]+t},this.getPaddedDigestInfoHex=function(t,e,r){var n=this.getDigestInfoHex(t,e),i=r/4;if(n.length+22>i)throw\"key is too short for SigAlg: keylen=\"+r+\",\"+e;for(var o=\"0001\",s=\"00\"+n,a=\"\",u=i-o.length-s.length,c=0;c=0)return!1;if(n.compareTo(r.ONE)<0||n.compareTo(o)>=0)return!1;var a=n.modInverse(o),u=t.multiply(a).mod(o),c=e.multiply(a).mod(o);return s.multiply(u).add(i.multiply(c)).getX().toBigInteger().mod(o).equals(e)},this.serializeSig=function(t,e){var r=t.toByteArraySigned(),n=e.toByteArraySigned(),i=[];return i.push(2),i.push(r.length),(i=i.concat(r)).push(2),i.push(n.length),(i=i.concat(n)).unshift(i.length),i.unshift(48),i},this.parseSig=function(t){var e;if(48!=t[0])throw new Error(\"Signature not a valid DERSequence\");if(2!=t[e=2])throw new Error(\"First element in signature must be a DERInteger\");var n=t.slice(e+2,e+2+t[e+1]);if(2!=t[e+=2+t[e+1]])throw new Error(\"Second element in signature must be a DERInteger\");var i=t.slice(e+2,e+2+t[e+1]);return e+=2+t[e+1],{r:r.fromByteArrayUnsigned(n),s:r.fromByteArrayUnsigned(i)}},this.parseSigCompact=function(t){if(65!==t.length)throw\"Signature has the wrong length\";var e=t[0]-27;if(e<0||e>7)throw\"Invalid signature type\";var n=this.ecparams.n;return{r:r.fromByteArrayUnsigned(t.slice(1,33)).mod(n),s:r.fromByteArrayUnsigned(t.slice(33,65)).mod(n),i:e}},this.readPKCS5PrvKeyHex=function(t){if(!1===c(t))throw new Error(\"not ASN.1 hex string\");var e,r,n;try{e=u(t,0,[\"[0]\",0],\"06\"),r=u(t,0,[1],\"04\");try{n=u(t,0,[\"[1]\",0],\"03\")}catch(t){}}catch(t){throw new Error(\"malformed PKCS#1/5 plain ECC private key\")}if(this.curveName=s(e),void 0===this.curveName)throw\"unsupported curve name\";this.setNamedCurve(this.curveName),this.setPublicKeyHex(n),this.setPrivateKeyHex(r),this.isPublic=!1},this.readPKCS8PrvKeyHex=function(t){if(!1===c(t))throw new e(\"not ASN.1 hex string\");var r,n,i;try{u(t,0,[1,0],\"06\"),r=u(t,0,[1,1],\"06\"),n=u(t,0,[2,0,1],\"04\");try{i=u(t,0,[2,0,\"[1]\",0],\"03\")}catch(t){}}catch(t){throw new e(\"malformed PKCS#8 plain ECC private key\")}if(this.curveName=s(r),void 0===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i),this.setPrivateKeyHex(n),this.isPublic=!1},this.readPKCS8PubKeyHex=function(t){if(!1===c(t))throw new e(\"not ASN.1 hex string\");var r,n;try{u(t,0,[0,0],\"06\"),r=u(t,0,[0,1],\"06\"),n=u(t,0,[1],\"03\")}catch(t){throw new e(\"malformed PKCS#8 ECC public key\")}if(this.curveName=s(r),null===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(n)},this.readCertPubKeyHex=function(t,r){if(!1===c(t))throw new e(\"not ASN.1 hex string\");var n,i;try{n=u(t,0,[0,5,0,1],\"06\"),i=u(t,0,[0,5,1],\"03\")}catch(t){throw new e(\"malformed X.509 certificate ECC public key\")}if(this.curveName=s(n),null===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i)},void 0!==t&&void 0!==t.curve&&(this.curveName=t.curve),void 0===this.curveName&&(this.curveName=\"secp256r1\"),this.setNamedCurve(this.curveName),void 0!==t&&(void 0!==t.prv&&this.setPrivateKeyHex(t.prv),void 0!==t.pub&&this.setPublicKeyHex(t.pub))},Sr.crypto.ECDSA.parseSigHex=function(t){var e=Sr.crypto.ECDSA.parseSigHexInHexRS(t);return{r:new w(e.r,16),s:new w(e.s,16)}},Sr.crypto.ECDSA.parseSigHexInHexRS=function(t){var e=Fr,r=e.getChildIdx,n=e.getV;if(e.checkStrictDER(t,0),\"30\"!=t.substr(0,2))throw new Error(\"signature is not a ASN.1 sequence\");var i=r(t,0);if(2!=i.length)throw new Error(\"signature shall have two elements\");var o=i[0],s=i[1];if(\"02\"!=t.substr(o,2))throw new Error(\"1st item not ASN.1 integer\");if(\"02\"!=t.substr(s,2))throw new Error(\"2nd item not ASN.1 integer\");return{r:n(t,o),s:n(t,s)}},Sr.crypto.ECDSA.asn1SigToConcatSig=function(t){var e=Sr.crypto.ECDSA.parseSigHexInHexRS(t),r=e.r,n=e.s;if(\"00\"==r.substr(0,2)&&r.length%32==2&&(r=r.substr(2)),\"00\"==n.substr(0,2)&&n.length%32==2&&(n=n.substr(2)),r.length%32==30&&(r=\"00\"+r),n.length%32==30&&(n=\"00\"+n),r.length%32!=0)throw\"unknown ECDSA sig r length error\";if(n.length%32!=0)throw\"unknown ECDSA sig s length error\";return r+n},Sr.crypto.ECDSA.concatSigToASN1Sig=function(t){if(t.length/2*8%128!=0)throw\"unknown ECDSA concatinated r-s sig length error\";var e=t.substr(0,t.length/2),r=t.substr(t.length/2);return Sr.crypto.ECDSA.hexRSSigToASN1Sig(e,r)},Sr.crypto.ECDSA.hexRSSigToASN1Sig=function(t,e){var r=new w(t,16),n=new w(e,16);return Sr.crypto.ECDSA.biRSSigToASN1Sig(r,n)},Sr.crypto.ECDSA.biRSSigToASN1Sig=function(t,e){var r=Sr.asn1,n=new r.DERInteger({bigint:t}),i=new r.DERInteger({bigint:e});return new r.DERSequence({array:[n,i]}).getEncodedHex()},Sr.crypto.ECDSA.getName=function(t){return\"2b8104001f\"===t?\"secp192k1\":\"2a8648ce3d030107\"===t?\"secp256r1\":\"2b8104000a\"===t?\"secp256k1\":\"2b81040021\"===t?\"secp224r1\":\"2b81040022\"===t?\"secp384r1\":-1!==\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(t)?\"secp256r1\":-1!==\"|secp256k1|\".indexOf(t)?\"secp256k1\":-1!==\"|secp224r1|NIST P-224|P-224|\".indexOf(t)?\"secp224r1\":-1!==\"|secp384r1|NIST P-384|P-384|\".indexOf(t)?\"secp384r1\":null},void 0!==Sr&&Sr||(e.KJUR=Sr={}),void 0!==Sr.crypto&&Sr.crypto||(Sr.crypto={}),Sr.crypto.ECParameterDB=new function(){var t={},e={};function r(t){return new w(t,16)}this.getByName=function(r){var n=r;if(void 0!==e[n]&&(n=e[r]),void 0!==t[n])return t[n];throw\"unregistered EC curve name: \"+n},this.regist=function(n,i,o,s,a,u,c,h,l,f,g,d){t[n]={};var p=r(o),v=r(s),y=r(a),m=r(u),_=r(c),S=new Ke(p,v,y),b=S.decodePointHex(\"04\"+h+l);t[n].name=n,t[n].keylen=i,t[n].curve=S,t[n].G=b,t[n].n=m,t[n].h=_,t[n].oid=g,t[n].info=d;for(var w=0;w=2*u)break}var f={};return f.keyhex=c.substr(0,2*i[e].keylen),f.ivhex=c.substr(2*i[e].keylen,2*i[e].ivlen),f},a=function t(e,r,n,o){var s=v.enc.Base64.parse(e),a=v.enc.Hex.stringify(s);return(0,i[r].proc)(a,n,o)};return{version:\"1.0.0\",parsePKCS5PEM:function t(e){return o(e)},getKeyAndUnusedIvByPasscodeAndIvsalt:function t(e,r,n){return s(e,r,n)},decryptKeyB64:function t(e,r,n,i){return a(e,r,n,i)},getDecryptedKeyHex:function t(e,r){var n=o(e),i=(n.type,n.cipher),u=n.ivsalt,c=n.data,h=s(i,r,u).keyhex;return a(c,i,h,u)},getEncryptedPKCS5PEMFromPrvKeyHex:function t(e,r,n,o,a){var u=\"\";if(void 0!==o&&null!=o||(o=\"AES-256-CBC\"),void 0===i[o])throw new Error(\"KEYUTIL unsupported algorithm: \"+o);void 0!==a&&null!=a||(a=function t(e){var r=v.lib.WordArray.random(e);return v.enc.Hex.stringify(r)}(i[o].ivlen).toUpperCase());var c=function t(e,r,n,o){return(0,i[r].eproc)(e,n,o)}(r,o,s(o,n,a).keyhex,a);u=\"-----BEGIN \"+e+\" PRIVATE KEY-----\\r\\n\";return u+=\"Proc-Type: 4,ENCRYPTED\\r\\n\",u+=\"DEK-Info: \"+o+\",\"+a+\"\\r\\n\",u+=\"\\r\\n\",u+=c.replace(/(.{64})/g,\"$1\\r\\n\"),u+=\"\\r\\n-----END \"+e+\" PRIVATE KEY-----\\r\\n\"},parseHexOfEncryptedPKCS8:function t(e){var r=Fr,n=r.getChildIdx,i=r.getV,o={},s=n(e,0);if(2!=s.length)throw new Error(\"malformed format: SEQUENCE(0).items != 2: \"+s.length);o.ciphertext=i(e,s[1]);var a=n(e,s[0]);if(2!=a.length)throw new Error(\"malformed format: SEQUENCE(0.0).items != 2: \"+a.length);if(\"2a864886f70d01050d\"!=i(e,a[0]))throw new Error(\"this only supports pkcs5PBES2\");var u=n(e,a[1]);if(2!=a.length)throw new Error(\"malformed format: SEQUENCE(0.0.1).items != 2: \"+u.length);var c=n(e,u[1]);if(2!=c.length)throw new Error(\"malformed format: SEQUENCE(0.0.1.1).items != 2: \"+c.length);if(\"2a864886f70d0307\"!=i(e,c[0]))throw\"this only supports TripleDES\";o.encryptionSchemeAlg=\"TripleDES\",o.encryptionSchemeIV=i(e,c[1]);var h=n(e,u[0]);if(2!=h.length)throw new Error(\"malformed format: SEQUENCE(0.0.1.0).items != 2: \"+h.length);if(\"2a864886f70d01050c\"!=i(e,h[0]))throw new Error(\"this only supports pkcs5PBKDF2\");var l=n(e,h[1]);if(l.length<2)throw new Error(\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \"+l.length);o.pbkdf2Salt=i(e,l[0]);var f=i(e,l[1]);try{o.pbkdf2Iter=parseInt(f,16)}catch(t){throw new Error(\"malformed format pbkdf2Iter: \"+f)}return o},getPBKDF2KeyHexFromParam:function t(e,r){var n=v.enc.Hex.parse(e.pbkdf2Salt),i=e.pbkdf2Iter,o=v.PBKDF2(r,n,{keySize:6,iterations:i});return v.enc.Hex.stringify(o)},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function t(e,r){var n=Mr(e,\"ENCRYPTED PRIVATE KEY\"),i=this.parseHexOfEncryptedPKCS8(n),o=tn.getPBKDF2KeyHexFromParam(i,r),s={};s.ciphertext=v.enc.Hex.parse(i.ciphertext);var a=v.enc.Hex.parse(o),u=v.enc.Hex.parse(i.encryptionSchemeIV),c=v.TripleDES.decrypt(s,a,{iv:u});return v.enc.Hex.stringify(c)},getKeyFromEncryptedPKCS8PEM:function t(e,r){var n=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(e,r);return this.getKeyFromPlainPrivatePKCS8Hex(n)},parsePlainPrivatePKCS8Hex:function t(e){var r=Fr,n=r.getChildIdx,i=r.getV,o={algparam:null};if(\"30\"!=e.substr(0,2))throw new Error(\"malformed plain PKCS8 private key(code:001)\");var s=n(e,0);if(s.length<3)throw new Error(\"malformed plain PKCS8 private key(code:002)\");if(\"30\"!=e.substr(s[1],2))throw new Error(\"malformed PKCS8 private key(code:003)\");var a=n(e,s[1]);if(2!=a.length)throw new Error(\"malformed PKCS8 private key(code:004)\");if(\"06\"!=e.substr(a[0],2))throw new Error(\"malformed PKCS8 private key(code:005)\");if(o.algoid=i(e,a[0]),\"06\"==e.substr(a[1],2)&&(o.algparam=i(e,a[1])),\"04\"!=e.substr(s[2],2))throw new Error(\"malformed PKCS8 private key(code:006)\");return o.keyidx=r.getVidx(e,s[2]),o},getKeyFromPlainPrivatePKCS8PEM:function t(e){var r=Mr(e,\"PRIVATE KEY\");return this.getKeyFromPlainPrivatePKCS8Hex(r)},getKeyFromPlainPrivatePKCS8Hex:function t(e){var r,n=this.parsePlainPrivatePKCS8Hex(e);if(\"2a864886f70d010101\"==n.algoid)r=new Me;else if(\"2a8648ce380401\"==n.algoid)r=new Sr.crypto.DSA;else{if(\"2a8648ce3d0201\"!=n.algoid)throw new Error(\"unsupported private key algorithm\");r=new Sr.crypto.ECDSA}return r.readPKCS8PrvKeyHex(e),r},_getKeyFromPublicPKCS8Hex:function t(e){var r,n=Fr.getVbyList(e,0,[0,0],\"06\");if(\"2a864886f70d010101\"===n)r=new Me;else if(\"2a8648ce380401\"===n)r=new Sr.crypto.DSA;else{if(\"2a8648ce3d0201\"!==n)throw new Error(\"unsupported PKCS#8 public key hex\");r=new Sr.crypto.ECDSA}return r.readPKCS8PubKeyHex(e),r},parsePublicRawRSAKeyHex:function t(e){var r=Fr,n=r.getChildIdx,i=r.getV,o={};if(\"30\"!=e.substr(0,2))throw new Error(\"malformed RSA key(code:001)\");var s=n(e,0);if(2!=s.length)throw new Error(\"malformed RSA key(code:002)\");if(\"02\"!=e.substr(s[0],2))throw new Error(\"malformed RSA key(code:003)\");if(o.n=i(e,s[0]),\"02\"!=e.substr(s[1],2))throw new Error(\"malformed RSA key(code:004)\");return o.e=i(e,s[1]),o},parsePublicPKCS8Hex:function t(e){var r=Fr,n=r.getChildIdx,i=r.getV,o={algparam:null},s=n(e,0);if(2!=s.length)throw new Error(\"outer DERSequence shall have 2 elements: \"+s.length);var a=s[0];if(\"30\"!=e.substr(a,2))throw new Error(\"malformed PKCS8 public key(code:001)\");var u=n(e,a);if(2!=u.length)throw new Error(\"malformed PKCS8 public key(code:002)\");if(\"06\"!=e.substr(u[0],2))throw new Error(\"malformed PKCS8 public key(code:003)\");if(o.algoid=i(e,u[0]),\"06\"==e.substr(u[1],2)?o.algparam=i(e,u[1]):\"30\"==e.substr(u[1],2)&&(o.algparam={},o.algparam.p=r.getVbyList(e,u[1],[0],\"02\"),o.algparam.q=r.getVbyList(e,u[1],[1],\"02\"),o.algparam.g=r.getVbyList(e,u[1],[2],\"02\")),\"03\"!=e.substr(s[1],2))throw new Error(\"malformed PKCS8 public key(code:004)\");return o.key=i(e,s[1]).substr(2),o}}}();tn.getKey=function(t,e,r){var n=(v=Fr).getChildIdx,i=(v.getV,v.getVbyList),o=Sr.crypto,s=o.ECDSA,a=o.DSA,u=Me,c=Mr,h=tn;if(void 0!==u&&t instanceof u)return t;if(void 0!==s&&t instanceof s)return t;if(void 0!==a&&t instanceof a)return t;if(void 0!==t.curve&&void 0!==t.xy&&void 0===t.d)return new s({pub:t.xy,curve:t.curve});if(void 0!==t.curve&&void 0!==t.d)return new s({prv:t.d,curve:t.curve});if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(P=new u).setPublic(t.n,t.e),P;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.co&&void 0===t.qi)return(P=new u).setPrivateEx(t.n,t.e,t.d,t.p,t.q,t.dp,t.dq,t.co),P;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0===t.p)return(P=new u).setPrivate(t.n,t.e,t.d),P;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0===t.x)return(P=new a).setPublic(t.p,t.q,t.g,t.y),P;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0!==t.x)return(P=new a).setPrivate(t.p,t.q,t.g,t.y,t.x),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(P=new u).setPublic(Rr(t.n),Rr(t.e)),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.qi)return(P=new u).setPrivateEx(Rr(t.n),Rr(t.e),Rr(t.d),Rr(t.p),Rr(t.q),Rr(t.dp),Rr(t.dq),Rr(t.qi)),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d)return(P=new u).setPrivate(Rr(t.n),Rr(t.e),Rr(t.d)),P;if(\"EC\"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0===t.d){var l=(k=new s({curve:t.crv})).ecparams.keylen/4,f=\"04\"+(\"0000000000\"+Rr(t.x)).slice(-l)+(\"0000000000\"+Rr(t.y)).slice(-l);return k.setPublicKeyHex(f),k}if(\"EC\"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0!==t.d){l=(k=new s({curve:t.crv})).ecparams.keylen/4,f=\"04\"+(\"0000000000\"+Rr(t.x)).slice(-l)+(\"0000000000\"+Rr(t.y)).slice(-l);var g=(\"0000000000\"+Rr(t.d)).slice(-l);return k.setPublicKeyHex(f),k.setPrivateKeyHex(g),k}if(\"pkcs5prv\"===r){var d,p=t,v=Fr;if(9===(d=n(p,0)).length)(P=new u).readPKCS5PrvKeyHex(p);else if(6===d.length)(P=new a).readPKCS5PrvKeyHex(p);else{if(!(d.length>2&&\"04\"===p.substr(d[1],2)))throw new Error(\"unsupported PKCS#1/5 hexadecimal key\");(P=new s).readPKCS5PrvKeyHex(p)}return P}if(\"pkcs8prv\"===r)return P=h.getKeyFromPlainPrivatePKCS8Hex(t);if(\"pkcs8pub\"===r)return h._getKeyFromPublicPKCS8Hex(t);if(\"x509pub\"===r)return on.getPublicKeyFromCertHex(t);if(-1!=t.indexOf(\"-END CERTIFICATE-\",0)||-1!=t.indexOf(\"-END X509 CERTIFICATE-\",0)||-1!=t.indexOf(\"-END TRUSTED CERTIFICATE-\",0))return on.getPublicKeyFromCertPEM(t);if(-1!=t.indexOf(\"-END PUBLIC KEY-\")){var y=Mr(t,\"PUBLIC KEY\");return h._getKeyFromPublicPKCS8Hex(y)}if(-1!=t.indexOf(\"-END RSA PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){var m=c(t,\"RSA PRIVATE KEY\");return h.getKey(m,null,\"pkcs5prv\")}if(-1!=t.indexOf(\"-END DSA PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){var _=i(R=c(t,\"DSA PRIVATE KEY\"),0,[1],\"02\"),S=i(R,0,[2],\"02\"),b=i(R,0,[3],\"02\"),F=i(R,0,[4],\"02\"),E=i(R,0,[5],\"02\");return(P=new a).setPrivate(new w(_,16),new w(S,16),new w(b,16),new w(F,16),new w(E,16)),P}if(-1!=t.indexOf(\"-END EC PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){m=c(t,\"EC PRIVATE KEY\");return h.getKey(m,null,\"pkcs5prv\")}if(-1!=t.indexOf(\"-END PRIVATE KEY-\"))return h.getKeyFromPlainPrivatePKCS8PEM(t);if(-1!=t.indexOf(\"-END RSA PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var x=h.getDecryptedKeyHex(t,e),A=new Me;return A.readPKCS5PrvKeyHex(x),A}if(-1!=t.indexOf(\"-END EC PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var k,P=i(R=h.getDecryptedKeyHex(t,e),0,[1],\"04\"),C=i(R,0,[2,0],\"06\"),T=i(R,0,[3,0],\"03\").substr(2);if(void 0===Sr.crypto.OID.oidhex2name[C])throw new Error(\"undefined OID(hex) in KJUR.crypto.OID: \"+C);return(k=new s({curve:Sr.crypto.OID.oidhex2name[C]})).setPublicKeyHex(T),k.setPrivateKeyHex(P),k.isPublic=!1,k}if(-1!=t.indexOf(\"-END DSA PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var R;_=i(R=h.getDecryptedKeyHex(t,e),0,[1],\"02\"),S=i(R,0,[2],\"02\"),b=i(R,0,[3],\"02\"),F=i(R,0,[4],\"02\"),E=i(R,0,[5],\"02\");return(P=new a).setPrivate(new w(_,16),new w(S,16),new w(b,16),new w(F,16),new w(E,16)),P}if(-1!=t.indexOf(\"-END ENCRYPTED PRIVATE KEY-\"))return h.getKeyFromEncryptedPKCS8PEM(t,e);throw new Error(\"not supported argument\")},tn.generateKeypair=function(t,e){if(\"RSA\"==t){var r=e;(s=new Me).generate(r,\"10001\"),s.isPrivate=!0,s.isPublic=!0;var n=new Me,i=s.n.toString(16),o=s.e.toString(16);return n.setPublic(i,o),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}if(\"EC\"==t){var s,a,u=e,c=new Sr.crypto.ECDSA({curve:u}).generateKeyPairHex();return(s=new Sr.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),s.setPrivateKeyHex(c.ecprvhex),s.isPrivate=!0,s.isPublic=!1,(n=new Sr.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}throw new Error(\"unknown algorithm: \"+t)},tn.getPEM=function(t,e,r,n,i,o){var s=Sr,a=s.asn1,u=a.DERObjectIdentifier,c=a.DERInteger,h=a.ASN1Util.newObject,l=a.x509.SubjectPublicKeyInfo,f=s.crypto,g=f.DSA,d=f.ECDSA,p=Me;function y(t){return h({seq:[{int:0},{int:{bigint:t.n}},{int:t.e},{int:{bigint:t.d}},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.dmp1}},{int:{bigint:t.dmq1}},{int:{bigint:t.coeff}}]})}function m(t){return h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:[\"a0\",!0,{oid:{name:t.curveName}}]},{tag:[\"a1\",!0,{bitstr:{hex:\"00\"+t.pubKeyHex}}]}]})}function _(t){return h({seq:[{int:0},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}},{int:{bigint:t.y}},{int:{bigint:t.x}}]})}if((void 0!==p&&t instanceof p||void 0!==g&&t instanceof g||void 0!==d&&t instanceof d)&&1==t.isPublic&&(void 0===e||\"PKCS8PUB\"==e))return jr(F=new l(t).getEncodedHex(),\"PUBLIC KEY\");if(\"PKCS1PRV\"==e&&void 0!==p&&t instanceof p&&(void 0===r||null==r)&&1==t.isPrivate)return jr(F=y(t).getEncodedHex(),\"RSA PRIVATE KEY\");if(\"PKCS1PRV\"==e&&void 0!==d&&t instanceof d&&(void 0===r||null==r)&&1==t.isPrivate){var S=new u({name:t.curveName}).getEncodedHex(),b=m(t).getEncodedHex(),w=\"\";return w+=jr(S,\"EC PARAMETERS\"),w+=jr(b,\"EC PRIVATE KEY\")}if(\"PKCS1PRV\"==e&&void 0!==g&&t instanceof g&&(void 0===r||null==r)&&1==t.isPrivate)return jr(F=_(t).getEncodedHex(),\"DSA PRIVATE KEY\");if(\"PKCS5PRV\"==e&&void 0!==p&&t instanceof p&&void 0!==r&&null!=r&&1==t.isPrivate){var F=y(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\",F,r,n,o)}if(\"PKCS5PRV\"==e&&void 0!==d&&t instanceof d&&void 0!==r&&null!=r&&1==t.isPrivate){F=m(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\",F,r,n,o)}if(\"PKCS5PRV\"==e&&void 0!==g&&t instanceof g&&void 0!==r&&null!=r&&1==t.isPrivate){F=_(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\",F,r,n,o)}var E=function t(e,r){var n=x(e,r);return new h({seq:[{seq:[{oid:{name:\"pkcs5PBES2\"}},{seq:[{seq:[{oid:{name:\"pkcs5PBKDF2\"}},{seq:[{octstr:{hex:n.pbkdf2Salt}},{int:n.pbkdf2Iter}]}]},{seq:[{oid:{name:\"des-EDE3-CBC\"}},{octstr:{hex:n.encryptionSchemeIV}}]}]}]},{octstr:{hex:n.ciphertext}}]}).getEncodedHex()},x=function t(e,r){var n=v.lib.WordArray.random(8),i=v.lib.WordArray.random(8),o=v.PBKDF2(r,n,{keySize:6,iterations:100}),s=v.enc.Hex.parse(e),a=v.TripleDES.encrypt(s,o,{iv:i})+\"\",u={};return u.ciphertext=a,u.pbkdf2Salt=v.enc.Hex.stringify(n),u.pbkdf2Iter=100,u.encryptionSchemeAlg=\"DES-EDE3-CBC\",u.encryptionSchemeIV=v.enc.Hex.stringify(i),u};if(\"PKCS8PRV\"==e&&null!=p&&t instanceof p&&1==t.isPrivate){var A=y(t).getEncodedHex();F=h({seq:[{int:0},{seq:[{oid:{name:\"rsaEncryption\"}},{null:!0}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?jr(F,\"PRIVATE KEY\"):jr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}if(\"PKCS8PRV\"==e&&void 0!==d&&t instanceof d&&1==t.isPrivate){A=new h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:[\"a1\",!0,{bitstr:{hex:\"00\"+t.pubKeyHex}}]}]}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:\"ecPublicKey\"}},{oid:{name:t.curveName}}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?jr(F,\"PRIVATE KEY\"):jr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}if(\"PKCS8PRV\"==e&&void 0!==g&&t instanceof g&&1==t.isPrivate){A=new c({bigint:t.x}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:\"dsa\"}},{seq:[{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}}]}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?jr(F,\"PRIVATE KEY\"):jr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}throw new Error(\"unsupported object nor format\")},tn.getKeyFromCSRPEM=function(t){var e=Mr(t,\"CERTIFICATE REQUEST\");return tn.getKeyFromCSRHex(e)},tn.getKeyFromCSRHex=function(t){var e=tn.parseCSRHex(t);return tn.getKey(e.p8pubkeyhex,null,\"pkcs8pub\")},tn.parseCSRHex=function(t){var e=Fr,r=e.getChildIdx,n=e.getTLV,i={},o=t;if(\"30\"!=o.substr(0,2))throw new Error(\"malformed CSR(code:001)\");var s=r(o,0);if(s.length<1)throw new Error(\"malformed CSR(code:002)\");if(\"30\"!=o.substr(s[0],2))throw new Error(\"malformed CSR(code:003)\");var a=r(o,s[0]);if(a.length<3)throw new Error(\"malformed CSR(code:004)\");return i.p8pubkeyhex=n(o,a[2]),i},tn.getKeyID=function(t){var e=tn,r=Fr;\"string\"==typeof t&&-1!=t.indexOf(\"BEGIN \")&&(t=e.getKey(t));var n=Mr(e.getPEM(t)),i=r.getIdxbyList(n,0,[1]),o=r.getV(n,i).substring(2);return Sr.crypto.Util.hashHex(o,\"sha1\")},tn.getJWKFromKey=function(t){var e={};if(t instanceof Me&&t.isPrivate)return e.kty=\"RSA\",e.n=Tr(t.n.toString(16)),e.e=Tr(t.e.toString(16)),e.d=Tr(t.d.toString(16)),e.p=Tr(t.p.toString(16)),e.q=Tr(t.q.toString(16)),e.dp=Tr(t.dmp1.toString(16)),e.dq=Tr(t.dmq1.toString(16)),e.qi=Tr(t.coeff.toString(16)),e;if(t instanceof Me&&t.isPublic)return e.kty=\"RSA\",e.n=Tr(t.n.toString(16)),e.e=Tr(t.e.toString(16)),e;if(t instanceof Sr.crypto.ECDSA&&t.isPrivate){if(\"P-256\"!==(n=t.getShortNISTPCurveName())&&\"P-384\"!==n)throw new Error(\"unsupported curve name for JWT: \"+n);var r=t.getPublicKeyXYHex();return e.kty=\"EC\",e.crv=n,e.x=Tr(r.x),e.y=Tr(r.y),e.d=Tr(t.prvKeyHex),e}if(t instanceof Sr.crypto.ECDSA&&t.isPublic){var n;if(\"P-256\"!==(n=t.getShortNISTPCurveName())&&\"P-384\"!==n)throw new Error(\"unsupported curve name for JWT: \"+n);r=t.getPublicKeyXYHex();return e.kty=\"EC\",e.crv=n,e.x=Tr(r.x),e.y=Tr(r.y),e}throw new Error(\"not supported key object\")},Me.getPosArrayOfChildrenFromHex=function(t){return Fr.getChildIdx(t,0)},Me.getHexValueArrayOfChildrenFromHex=function(t){var e,r=Fr.getV,n=r(t,(e=Me.getPosArrayOfChildrenFromHex(t))[0]),i=r(t,e[1]),o=r(t,e[2]),s=r(t,e[3]),a=r(t,e[4]),u=r(t,e[5]),c=r(t,e[6]),h=r(t,e[7]),l=r(t,e[8]);return(e=new Array).push(n,i,o,s,a,u,c,h,l),e},Me.prototype.readPrivateKeyFromPEMString=function(t){var e=Mr(t),r=Me.getHexValueArrayOfChildrenFromHex(e);this.setPrivateEx(r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8])},Me.prototype.readPKCS5PrvKeyHex=function(t){var e=Me.getHexValueArrayOfChildrenFromHex(t);this.setPrivateEx(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},Me.prototype.readPKCS8PrvKeyHex=function(t){var e,r,n,i,o,s,a,u,c=Fr,h=c.getVbyListEx;if(!1===c.isASN1HEX(t))throw new Error(\"not ASN.1 hex string\");try{e=h(t,0,[2,0,1],\"02\"),r=h(t,0,[2,0,2],\"02\"),n=h(t,0,[2,0,3],\"02\"),i=h(t,0,[2,0,4],\"02\"),o=h(t,0,[2,0,5],\"02\"),s=h(t,0,[2,0,6],\"02\"),a=h(t,0,[2,0,7],\"02\"),u=h(t,0,[2,0,8],\"02\")}catch(t){throw new Error(\"malformed PKCS#8 plain RSA private key\")}this.setPrivateEx(e,r,n,i,o,s,a,u)},Me.prototype.readPKCS5PubKeyHex=function(t){var e=Fr,r=e.getV;if(!1===e.isASN1HEX(t))throw new Error(\"keyHex is not ASN.1 hex string\");var n=e.getChildIdx(t,0);if(2!==n.length||\"02\"!==t.substr(n[0],2)||\"02\"!==t.substr(n[1],2))throw new Error(\"wrong hex for PKCS#5 public key\");var i=r(t,n[0]),o=r(t,n[1]);this.setPublic(i,o)},Me.prototype.readPKCS8PubKeyHex=function(t){var e=Fr;if(!1===e.isASN1HEX(t))throw new Error(\"not ASN.1 hex string\");if(\"06092a864886f70d010101\"!==e.getTLVbyListEx(t,0,[0,0]))throw new Error(\"not PKCS8 RSA public key\");var r=e.getTLVbyListEx(t,0,[1,0]);this.readPKCS5PubKeyHex(r)},Me.prototype.readCertPubKeyHex=function(t,e){var r,n;(r=new on).readCertHex(t),n=r.getPublicKeyHex(),this.readPKCS8PubKeyHex(n)};new RegExp(\"[^0-9a-f]\",\"gi\");function en(t,e){for(var r=\"\",n=e/4-t.length,i=0;i>24,(16711680&i)>>16,(65280&i)>>8,255&i])))),i+=1;return n}function nn(t){for(var e in Sr.crypto.Util.DIGESTINFOHEAD){var r=Sr.crypto.Util.DIGESTINFOHEAD[e],n=r.length;if(t.substring(0,n)==r)return[e,t.substring(n)]}return[]}function on(t){var e,r=Fr,n=r.getChildIdx,i=r.getV,o=r.getTLV,s=r.getVbyList,a=r.getVbyListEx,u=r.getTLVbyList,c=r.getTLVbyListEx,h=r.getIdxbyList,l=r.getIdxbyListEx,f=r.getVidx,g=r.getInt,d=r.oidname,p=r.hextooidstr,v=Mr;try{e=Sr.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(t){}this.HEX2STAG={\"0c\":\"utf8\",13:\"prn\",16:\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"},this.hex=null,this.version=0,this.foffset=0,this.aExtInfo=null,this.getVersion=function(){if(null===this.hex||0!==this.version)return this.version;var t=u(this.hex,0,[0,0]);if(\"a0\"==t.substr(0,2)){var e=u(t,0,[0]),r=g(e,0);if(r<0||21){var a=o(t,s[1]),u=this.getGeneralName(a);null!=u.uri&&(i.uri=u.uri)}if(s.length>2){var c=o(t,s[2]);\"0101ff\"==c&&(i.reqauth=!0),\"010100\"==c&&(i.reqauth=!1)}return i},this.getX500NameRule=function(t){for(var e=null,r=[],n=0;n0&&(t.ext=this.getExtParamArray()),t.sighex=this.getSignatureValueHex(),t},this.getExtParamArray=function(t){null==t&&(-1!=l(this.hex,0,[0,\"[3]\"])&&(t=c(this.hex,0,[0,\"[3]\",0],\"30\")));for(var e=[],r=n(t,0),i=0;i0&&(c=new Array(r),(new Be).nextBytes(c),c=String.fromCharCode.apply(String,c));var h=Lr(u(Nr(\"\\0\\0\\0\\0\\0\\0\\0\\0\"+i+c))),l=[];for(n=0;n>8*a-s&255;for(d[0]&=~p,n=0;nn)return!1;var i=this.doPublic(r).toString(16);if(i.length+3!=n/4)return!1;var o=nn(i.replace(/^1f+00/,\"\"));if(0==o.length)return!1;var s=o[0];return o[1]==function t(e){return Sr.crypto.Util.hashString(e,s)}(t)},Me.prototype.verifyWithMessageHash=function(t,e){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var r=Oe(e,16);if(r.bitLength()>this.n.bitLength())return 0;var n=nn(this.doPublic(r).toString(16).replace(/^1f+00/,\"\"));if(0==n.length)return!1;n[0];return n[1]==t},Me.prototype.verifyPSS=function(t,e,r,n){var i=function t(e){return Sr.crypto.Util.hashHex(e,r)}(Nr(t));return void 0===n&&(n=-1),this.verifyWithMessageHashPSS(i,e,r,n)},Me.prototype.verifyWithMessageHashPSS=function(t,e,r,n){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var i,o=new w(e,16),s=function t(e){return Sr.crypto.Util.hashHex(e,r)},a=Lr(t),u=a.length,c=this.n.bitLength()-1,h=Math.ceil(c/8);if(-1===n||void 0===n)n=u;else if(-2===n)n=h-u-2;else if(n<-2)throw new Error(\"invalid salt length\");if(h>8*h-c&255;if(0!=(f.charCodeAt(0)&d))throw new Error(\"bits beyond keysize not zero\");var p=rn(g,f.length,s),v=[];for(i=0;i0)&&-1==(\":\"+r.join(\":\")+\":\").indexOf(\":\"+v+\":\"))throw\"algorithm '\"+v+\"' not accepted in the list\";if(\"none\"!=v&&null===e)throw\"key shall be specified to verify.\";if(\"string\"==typeof e&&-1!=e.indexOf(\"-----BEGIN \")&&(e=tn.getKey(e)),!(\"RS\"!=y&&\"PS\"!=y||e instanceof n))throw\"key shall be a RSAKey obj for RS* and PS* algs\";if(\"ES\"==y&&!(e instanceof u))throw\"key shall be a ECDSA obj for ES* algs\";var m=null;if(void 0===o.jwsalg2sigalg[p.alg])throw\"unsupported alg name: \"+v;if(\"none\"==(m=o.jwsalg2sigalg[v]))throw\"not supported\";if(\"Hmac\"==m.substr(0,4)){if(void 0===e)throw\"hexadecimal key shall be specified for HMAC\";var _=new c({alg:m,pass:e});return _.updateString(f),d==_.doFinal()}if(-1!=m.indexOf(\"withECDSA\")){var S,b=null;try{b=u.concatSigToASN1Sig(d)}catch(t){return!1}return(S=new h({alg:m})).init(e),S.updateString(f),S.verify(b)}return(S=new h({alg:m})).init(e),S.updateString(f),S.verify(d)},Sr.jws.JWS.parse=function(t){var e,r,n,i=t.split(\".\"),o={};if(2!=i.length&&3!=i.length)throw\"malformed sJWS: wrong number of '.' splitted elements\";return e=i[0],r=i[1],3==i.length&&(n=i[2]),o.headerObj=Sr.jws.JWS.readSafeJSONString(wr(e)),o.payloadObj=Sr.jws.JWS.readSafeJSONString(wr(r)),o.headerPP=JSON.stringify(o.headerObj,null,\" \"),null==o.payloadObj?o.payloadPP=wr(r):o.payloadPP=JSON.stringify(o.payloadObj,null,\" \"),void 0!==n&&(o.sigHex=Rr(n)),o},Sr.jws.JWS.verifyJWT=function(t,e,r){var n=Sr.jws,i=n.JWS,o=i.readSafeJSONString,s=i.inArray,a=i.includedArray,u=t.split(\".\"),c=u[0],h=u[1],l=(Rr(u[2]),o(wr(c))),f=o(wr(h));if(void 0===l.alg)return!1;if(void 0===r.alg)throw\"acceptField.alg shall be specified\";if(!s(l.alg,r.alg))return!1;if(void 0!==f.iss&&\"object\"===g(r.iss)&&!s(f.iss,r.iss))return!1;if(void 0!==f.sub&&\"object\"===g(r.sub)&&!s(f.sub,r.sub))return!1;if(void 0!==f.aud&&\"object\"===g(r.aud))if(\"string\"==typeof f.aud){if(!s(f.aud,r.aud))return!1}else if(\"object\"==g(f.aud)&&!a(f.aud,r.aud))return!1;var d=n.IntDate.getNow();return void 0!==r.verifyAt&&\"number\"==typeof r.verifyAt&&(d=r.verifyAt),void 0!==r.gracePeriod&&\"number\"==typeof r.gracePeriod||(r.gracePeriod=0),!(void 0!==f.exp&&\"number\"==typeof f.exp&&f.exp+r.gracePeriodr.length&&(n=r.length);for(var i=0;i\n * @license MIT\n */\nvar n=r(30),i=r(31),o=r(32);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+s().toString(16)+\" bytes\");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;\"string\"!=typeof t&&(t=\"\"+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return K(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return q(t).length;default:if(n)return K(t).length;e=(\"\"+e).toLowerCase(),n=!0}}function p(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return I(this,e,r);case\"utf8\":case\"utf-8\":return A(this,e,r);case\"ascii\":return T(this,e,r);case\"latin1\":case\"binary\":return R(this,e,r);case\"base64\":return x(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return D(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function v(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function y(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:m(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):m(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function m(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var h=-1;for(o=r;oa&&(r=a-u),o=r;o>=0;o--){for(var l=!0,f=0;fi&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError(\"Invalid hex string\");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function x(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function A(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+l<=r)switch(l){case 1:c<128&&(h=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(h=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(h=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(h=u)}null===h?(h=65533,l=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),i+=l}return function f(t){var e=t.length;if(e<=C)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;n0&&(r=this.toString(\"hex\",0,n).match(/.{2}/g).join(\" \"),this.length>n&&(r+=\" ... \")),\"\"},u.prototype.compare=function t(e,r,n,i,o){if(!u.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===r&&(r=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),r<0||n>e.length||i<0||o>this.length)throw new RangeError(\"out of range index\");if(i>=o&&r>=n)return 0;if(i>=o)return-1;if(r>=n)return 1;if(this===e)return 0;for(var s=(o>>>=0)-(i>>>=0),a=(n>>>=0)-(r>>>=0),c=Math.min(s,a),h=this.slice(i,o),l=e.slice(r,n),f=0;fo)&&(n=o),e.length>0&&(n<0||r<0)||r>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");i||(i=\"utf8\");for(var s=!1;;)switch(i){case\"hex\":return _(this,e,r,n);case\"utf8\":case\"utf-8\":return S(this,e,r,n);case\"ascii\":return b(this,e,r,n);case\"latin1\":case\"binary\":return w(this,e,r,n);case\"base64\":return F(this,e,r,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return E(this,e,r,n);default:if(s)throw new TypeError(\"Unknown encoding: \"+i);i=(\"\"+i).toLowerCase(),s=!0}},u.prototype.toJSON=function t(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function T(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i=\"\",o=e;or)throw new RangeError(\"Trying to access beyond buffer length\")}function N(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError(\"Index out of range\")}function U(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function B(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function O(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function j(t,e,r,n,o){return o||O(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function M(t,e,r,n,o){return o||O(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function t(e,r){var n,i=this.length;if((e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(r=void 0===r?i:~~r)<0?(r+=i)<0&&(r=0):r>i&&(r=i),r0&&(o*=256);)i+=this[e+--r]*o;return i},u.prototype.readUInt8=function t(e,r){return r||L(e,1,this.length),this[e]},u.prototype.readUInt16LE=function t(e,r){return r||L(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function t(e,r){return r||L(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function t(e,r){return r||L(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function t(e,r){return r||L(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=this[e],o=1,s=0;++s=(o*=128)&&(i-=Math.pow(2,8*r)),i},u.prototype.readIntBE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=r,o=1,s=this[e+--i];i>0&&(o*=256);)s+=this[e+--i]*o;return s>=(o*=128)&&(s-=Math.pow(2,8*r)),s},u.prototype.readInt8=function t(e,r){return r||L(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function t(e,r){r||L(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function t(e,r){r||L(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function t(e,r){return r||L(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function t(e,r){return r||L(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function t(e,r){return r||L(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function t(e,r){return r||L(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function t(e,r){return r||L(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function t(e,r){return r||L(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function t(e,r,n,i){(e=+e,r|=0,n|=0,i)||N(this,e,r,n,Math.pow(2,8*n)-1,0);var o=1,s=0;for(this[r]=255&e;++s=0&&(s*=256);)this[r+o]=e/s&255;return r+n},u.prototype.writeUInt8=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=255&e,r+1},u.prototype.writeUInt16LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):U(this,e,r,!0),r+2},u.prototype.writeUInt16BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):U(this,e,r,!1),r+2},u.prototype.writeUInt32LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=255&e):B(this,e,r,!0),r+4},u.prototype.writeUInt32BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):B(this,e,r,!1),r+4},u.prototype.writeIntLE=function t(e,r,n,i){if(e=+e,r|=0,!i){var o=Math.pow(2,8*n-1);N(this,e,r,n,o-1,-o)}var s=0,a=1,u=0;for(this[r]=255&e;++s>0)-u&255;return r+n},u.prototype.writeIntBE=function t(e,r,n,i){if(e=+e,r|=0,!i){var o=Math.pow(2,8*n-1);N(this,e,r,n,o-1,-o)}var s=n-1,a=1,u=0;for(this[r+s]=255&e;--s>=0&&(a*=256);)e<0&&0===u&&0!==this[r+s+1]&&(u=1),this[r+s]=(e/a>>0)-u&255;return r+n},u.prototype.writeInt8=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=255&e,r+1},u.prototype.writeInt16LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):U(this,e,r,!0),r+2},u.prototype.writeInt16BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):U(this,e,r,!1),r+2},u.prototype.writeInt32LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):B(this,e,r,!0),r+4},u.prototype.writeInt32BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):B(this,e,r,!1),r+4},u.prototype.writeFloatLE=function t(e,r,n){return j(this,e,r,!0,n)},u.prototype.writeFloatBE=function t(e,r,n){return j(this,e,r,!1,n)},u.prototype.writeDoubleLE=function t(e,r,n){return M(this,e,r,!0,n)},u.prototype.writeDoubleBE=function t(e,r,n){return M(this,e,r,!1,n)},u.prototype.copy=function t(e,r,n,i){if(n||(n=0),i||0===i||(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i=this.length)throw new RangeError(\"sourceStart out of bounds\");if(i<0)throw new RangeError(\"sourceEnd out of bounds\");i>this.length&&(i=this.length),e.length-r=0;--o)e[o+r]=this[o+n];else if(s<1e3||!u.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),\"number\"==typeof e)for(s=r;s55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function q(t){return n.toByteArray(function e(t){if((t=function e(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}(t).replace(H,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function J(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(29))},function(t,e){var r;r=function(){return this}();try{r=r||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e,r){\"use strict\";e.byteLength=function n(t){var e=f(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function i(t){var e,r,n=f(t),i=n[0],o=n[1],s=new u(function c(t,e,r){return 3*(e+r)/4-r}(0,i,o)),h=0,l=o>0?i-4:i;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;2===o&&(e=a[t.charCodeAt(r)]<<2|a[t.charCodeAt(r+1)]>>4,s[h++]=255&e);1===o&&(e=a[t.charCodeAt(r)]<<10|a[t.charCodeAt(r+1)]<<4|a[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e);return s},e.fromByteArray=function o(t){for(var e,r=t.length,n=r%3,i=[],o=16383,a=0,u=r-n;au?u:a+o));1===n?(e=t[r-1],i.push(s[e>>2]+s[e<<4&63]+\"==\")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(s[e>>10]+s[e>>4&63]+s[e<<2&63]+\"=\"));return i.join(\"\")};for(var s=[],a=[],u=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,c=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",h=0,l=c.length;h0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function g(t,e,r){for(var n,i,o=[],a=e;a>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return o.join(\"\")}a[\"-\".charCodeAt(0)]=62,a[\"_\".charCodeAt(0)]=63},function(t,e){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\ne.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<>1,h=-7,l=r?i-1:0,f=r?-1:1,g=t[e+l];for(l+=f,o=g&(1<<-h)-1,g>>=-h,h+=a;h>0;o=256*o+t[e+l],l+=f,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=n;h>0;s=256*s+t[e+l],l+=f,h-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(g?-1:1);s+=Math.pow(2,n),o-=c}return(g?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,h=(1<>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:o-1,d=n?1:-1,p=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=h):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+l>=1?f/u:f*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=h?(a=0,s=h):s+l>=1?(a=(e*u-1)*Math.pow(2,i),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,i),s=0));i>=8;t[r+g]=255&a,g+=d,a/=256,i-=8);for(s=s<0;t[r+g]=255&s,g+=d,s/=256,c-=8);t[r+g-d]|=128*p}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function n(t){var e=t.jws,r=t.KeyUtil,n=t.X509,o=t.crypto,s=t.hextob64u,a=t.b64tohex,u=t.AllowedSigningAlgs;return function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.parseJwt=function t(r){i.Log.debug(\"JoseUtil.parseJwt\");try{var n=e.JWS.parse(r);return{header:n.headerObj,payload:n.payloadObj}}catch(t){i.Log.error(t)}},t.validateJwt=function e(o,s,u,c,h,l,f){i.Log.debug(\"JoseUtil.validateJwt\");try{if(\"RSA\"===s.kty)if(s.e&&s.n)s=r.getKey(s);else{if(!s.x5c||!s.x5c.length)return i.Log.error(\"JoseUtil.validateJwt: RSA key missing key material\",s),Promise.reject(new Error(\"RSA key missing key material\"));var g=a(s.x5c[0]);s=n.getPublicKeyFromCertHex(g)}else{if(\"EC\"!==s.kty)return i.Log.error(\"JoseUtil.validateJwt: Unsupported key type\",s&&s.kty),Promise.reject(new Error(s.kty));if(!(s.crv&&s.x&&s.y))return i.Log.error(\"JoseUtil.validateJwt: EC key missing key material\",s),Promise.reject(new Error(\"EC key missing key material\"));s=r.getKey(s)}return t._validateJwt(o,s,u,c,h,l,f)}catch(t){return i.Log.error(t&&t.message||t),Promise.reject(\"JWT validation failed\")}},t.validateJwtAttributes=function e(r,n,o,s,a,u){s||(s=0),a||(a=parseInt(Date.now()/1e3));var c=t.parseJwt(r).payload;if(!c.iss)return i.Log.error(\"JoseUtil._validateJwt: issuer was not provided\"),Promise.reject(new Error(\"issuer was not provided\"));if(c.iss!==n)return i.Log.error(\"JoseUtil._validateJwt: Invalid issuer in token\",c.iss),Promise.reject(new Error(\"Invalid issuer in token: \"+c.iss));if(!c.aud)return i.Log.error(\"JoseUtil._validateJwt: aud was not provided\"),Promise.reject(new Error(\"aud was not provided\"));if(!(c.aud===o||Array.isArray(c.aud)&&c.aud.indexOf(o)>=0))return i.Log.error(\"JoseUtil._validateJwt: Invalid audience in token\",c.aud),Promise.reject(new Error(\"Invalid audience in token: \"+c.aud));if(c.azp&&c.azp!==o)return i.Log.error(\"JoseUtil._validateJwt: Invalid azp in token\",c.azp),Promise.reject(new Error(\"Invalid azp in token: \"+c.azp));if(!u){var h=a+s,l=a-s;if(!c.iat)return i.Log.error(\"JoseUtil._validateJwt: iat was not provided\"),Promise.reject(new Error(\"iat was not provided\"));if(h1&&void 0!==arguments[1]?arguments[1]:\"#\";o(this,t);var n=i.UrlUtility.parseUrlFragment(e,r);this.error=n.error,this.error_description=n.error_description,this.error_uri=n.error_uri,this.code=n.code,this.state=n.state,this.id_token=n.id_token,this.session_state=n.session_state,this.access_token=n.access_token,this.token_type=n.token_type,this.scope=n.scope,this.profile=void 0,this.expires_in=n.expires_in}return n(t,[{key:\"expires_in\",get:function t(){if(this.expires_at){var e=parseInt(Date.now()/1e3);return this.expires_at-e}},set:function t(e){var r=parseInt(e);if(\"number\"==typeof r&&r>0){var n=parseInt(Date.now()/1e3);this.expires_at=n+r}}},{key:\"expired\",get:function t(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:\"scopes\",get:function t(){return(this.scope||\"\").split(\" \")}},{key:\"isOpenIdConnect\",get:function t(){return this.scopes.indexOf(\"openid\")>=0||!!this.id_token}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SignoutRequest=void 0;var n=r(0),i=r(3),o=r(9);e.SignoutRequest=function t(e){var r=e.url,s=e.id_token_hint,a=e.post_logout_redirect_uri,u=e.data,c=e.extraQueryParams,h=e.request_type;if(function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),!r)throw n.Log.error(\"SignoutRequest.ctor: No url passed\"),new Error(\"url\");for(var f in s&&(r=i.UrlUtility.addQueryParam(r,\"id_token_hint\",s)),a&&(r=i.UrlUtility.addQueryParam(r,\"post_logout_redirect_uri\",a),u&&(this.state=new o.State({data:u,request_type:h}),r=i.UrlUtility.addQueryParam(r,\"state\",this.state.id))),c)r=i.UrlUtility.addQueryParam(r,f,c[f]);this.url=r}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SignoutResponse=void 0;var n=r(3);e.SignoutResponse=function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var i=n.UrlUtility.parseUrlFragment(e,\"?\");this.error=i.error,this.error_description=i.error_description,this.error_uri=i.error_uri,this.state=i.state}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InMemoryWebStorage=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.SilentRenewService,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.SessionMonitor,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:f.TokenRevocationClient,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:g.TokenClient,y=arguments.length>5&&void 0!==arguments[5]?arguments[5]:d.JoseUtil;p(this,e),r instanceof s.UserManagerSettings||(r=new s.UserManagerSettings(r));var m=v(this,t.call(this,r));return m._events=new u.UserManagerEvents(r),m._silentRenewService=new n(m),m.settings.automaticSilentRenew&&(i.Log.debug(\"UserManager.ctor: automaticSilentRenew is configured, setting up silent renew\"),m.startSilentRenew()),m.settings.monitorSession&&(i.Log.debug(\"UserManager.ctor: monitorSession is configured, setting up session monitor\"),m._sessionMonitor=new o(m)),m._tokenRevocationClient=new a(m._settings),m._tokenClient=new l(m._settings),m._joseUtil=y,m}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getUser=function t(){var e=this;return this._loadUser().then((function(t){return t?(i.Log.info(\"UserManager.getUser: user loaded\"),e._events.load(t,!1),t):(i.Log.info(\"UserManager.getUser: user not found in storage\"),null)}))},e.prototype.removeUser=function t(){var e=this;return this.storeUser(null).then((function(){i.Log.info(\"UserManager.removeUser: user removed from storage\"),e._events.unload()}))},e.prototype.signinRedirect=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"si:r\";var r={useReplaceToNavigate:e.useReplaceToNavigate};return this._signinStart(e,this._redirectNavigator,r).then((function(){i.Log.info(\"UserManager.signinRedirect: successful\")}))},e.prototype.signinRedirectCallback=function t(e){return this._signinEnd(e||this._redirectNavigator.url).then((function(t){return t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinRedirectCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinRedirectCallback: no sub\"),t}))},e.prototype.signinPopup=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"si:p\";var r=e.redirect_uri||this.settings.popup_redirect_uri||this.settings.redirect_uri;return r?(e.redirect_uri=r,e.display=\"popup\",this._signin(e,this._popupNavigator,{startUrl:r,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinPopup: signinPopup successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinPopup: no sub\")),t}))):(i.Log.error(\"UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured\"),Promise.reject(new Error(\"No popup_redirect_uri or redirect_uri configured\")))},e.prototype.signinPopupCallback=function t(e){return this._signinCallback(e,this._popupNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinPopupCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinPopupCallback: no sub\")),t})).catch((function(t){i.Log.error(t.message)}))},e.prototype.signinSilent=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r=Object.assign({},r),this._loadUser().then((function(t){return t&&t.refresh_token?(r.refresh_token=t.refresh_token,e._useRefreshToken(r)):(r.request_type=\"si:s\",r.id_token_hint=r.id_token_hint||e.settings.includeIdTokenInSilentRenew&&t&&t.id_token,t&&e._settings.validateSubOnSilentRenew&&(i.Log.debug(\"UserManager.signinSilent, subject prior to silent renew: \",t.profile.sub),r.current_sub=t.profile.sub),e._signinSilentIframe(r))}))},e.prototype._useRefreshToken=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._tokenClient.exchangeRefreshToken(r).then((function(t){return t?t.access_token?e._loadUser().then((function(r){if(r){var n=Promise.resolve();return t.id_token&&(n=e._validateIdTokenFromTokenRefreshToken(r.profile,t.id_token)),n.then((function(){return i.Log.debug(\"UserManager._useRefreshToken: refresh token response success\"),r.id_token=t.id_token||r.id_token,r.access_token=t.access_token,r.refresh_token=t.refresh_token||r.refresh_token,r.expires_in=t.expires_in,e.storeUser(r).then((function(){return e._events.load(r),r}))}))}return null})):(i.Log.error(\"UserManager._useRefreshToken: No access token returned from token endpoint\"),Promise.reject(\"No access token returned from token endpoint\")):(i.Log.error(\"UserManager._useRefreshToken: No response returned from token endpoint\"),Promise.reject(\"No response returned from token endpoint\"))}))},e.prototype._validateIdTokenFromTokenRefreshToken=function t(e,r){var n=this;return this._metadataService.getIssuer().then((function(t){return n.settings.getEpochTime().then((function(o){return n._joseUtil.validateJwtAttributes(r,t,n._settings.client_id,n._settings.clockSkew,o).then((function(t){return t?t.sub!==e.sub?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub\"),Promise.reject(new Error(\"sub in id_token does not match current sub\"))):t.auth_time&&t.auth_time!==e.auth_time?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time\"),Promise.reject(new Error(\"auth_time in id_token does not match original auth_time\"))):t.azp&&t.azp!==e.azp?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp\"),Promise.reject(new Error(\"azp in id_token does not match original azp\"))):!t.azp&&e.azp?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token\"),Promise.reject(new Error(\"azp not in id_token, but present in original id_token\"))):void 0:(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token\"),Promise.reject(new Error(\"Failed to validate id_token\")))}))}))}))},e.prototype._signinSilentIframe=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return r?(e.redirect_uri=r,e.prompt=e.prompt||\"none\",this._signin(e,this._iframeNavigator,{startUrl:r,silentRequestTimeout:e.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinSilent: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinSilent: no sub\")),t}))):(i.Log.error(\"UserManager.signinSilent: No silent_redirect_uri configured\"),Promise.reject(new Error(\"No silent_redirect_uri configured\")))},e.prototype.signinSilentCallback=function t(e){return this._signinCallback(e,this._iframeNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinSilentCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinSilentCallback: no sub\")),t}))},e.prototype.signinCallback=function t(e){var r=this;return this.readSigninResponseState(e).then((function(t){var n=t.state;t.response;return\"si:r\"===n.request_type?r.signinRedirectCallback(e):\"si:p\"===n.request_type?r.signinPopupCallback(e):\"si:s\"===n.request_type?r.signinSilentCallback(e):Promise.reject(new Error(\"invalid response_type in state\"))}))},e.prototype.signoutCallback=function t(e,r){var n=this;return this.readSignoutResponseState(e).then((function(t){var i=t.state,o=t.response;return i?\"so:r\"===i.request_type?n.signoutRedirectCallback(e):\"so:p\"===i.request_type?n.signoutPopupCallback(e,r):Promise.reject(new Error(\"invalid response_type in state\")):o}))},e.prototype.querySessionStatus=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).request_type=\"si:s\";var n=r.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return n?(r.redirect_uri=n,r.prompt=\"none\",r.response_type=r.response_type||this.settings.query_status_response_type,r.scope=r.scope||\"openid\",r.skipUserInfo=!0,this._signinStart(r,this._iframeNavigator,{startUrl:n,silentRequestTimeout:r.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return e.processSigninResponse(t.url).then((function(t){if(i.Log.debug(\"UserManager.querySessionStatus: got signin response\"),t.session_state&&t.profile.sub)return i.Log.info(\"UserManager.querySessionStatus: querySessionStatus success for sub: \",t.profile.sub),{session_state:t.session_state,sub:t.profile.sub,sid:t.profile.sid};i.Log.info(\"querySessionStatus successful, user not authenticated\")})).catch((function(t){if(t.session_state&&e.settings.monitorAnonymousSession&&(\"login_required\"==t.message||\"consent_required\"==t.message||\"interaction_required\"==t.message||\"account_selection_required\"==t.message))return i.Log.info(\"UserManager.querySessionStatus: querySessionStatus success for anonymous user\"),{session_state:t.session_state};throw t}))}))):(i.Log.error(\"UserManager.querySessionStatus: No silent_redirect_uri configured\"),Promise.reject(new Error(\"No silent_redirect_uri configured\")))},e.prototype._signin=function t(e,r){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signinStart(e,r,i).then((function(t){return n._signinEnd(t.url,e)}))},e.prototype._signinStart=function t(e,r){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.prepare(o).then((function(t){return i.Log.debug(\"UserManager._signinStart: got navigator window handle\"),n.createSigninRequest(e).then((function(e){return i.Log.debug(\"UserManager._signinStart: got signin request\"),o.url=e.url,o.id=e.state.id,t.navigate(o)})).catch((function(e){throw t.close&&(i.Log.debug(\"UserManager._signinStart: Error after preparing navigator, closing navigator window\"),t.close()),e}))}))},e.prototype._signinEnd=function t(e){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.processSigninResponse(e).then((function(t){i.Log.debug(\"UserManager._signinEnd: got signin response\");var e=new a.User(t);if(n.current_sub){if(n.current_sub!==e.profile.sub)return i.Log.debug(\"UserManager._signinEnd: current user does not match user returned from signin. sub from signin: \",e.profile.sub),Promise.reject(new Error(\"login_required\"));i.Log.debug(\"UserManager._signinEnd: current user matches user returned from signin\")}return r.storeUser(e).then((function(){return i.Log.debug(\"UserManager._signinEnd: user stored\"),r._events.load(e),e}))}))},e.prototype._signinCallback=function t(e,r){i.Log.debug(\"UserManager._signinCallback\");var n=\"query\"===this._settings.response_mode||!this._settings.response_mode&&l.SigninRequest.isCode(this._settings.response_type)?\"?\":\"#\";return r.callback(e,void 0,n)},e.prototype.signoutRedirect=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"so:r\";var r=e.post_logout_redirect_uri||this.settings.post_logout_redirect_uri;r&&(e.post_logout_redirect_uri=r);var n={useReplaceToNavigate:e.useReplaceToNavigate};return this._signoutStart(e,this._redirectNavigator,n).then((function(){i.Log.info(\"UserManager.signoutRedirect: successful\")}))},e.prototype.signoutRedirectCallback=function t(e){return this._signoutEnd(e||this._redirectNavigator.url).then((function(t){return i.Log.info(\"UserManager.signoutRedirectCallback: successful\"),t}))},e.prototype.signoutPopup=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"so:p\";var r=e.post_logout_redirect_uri||this.settings.popup_post_logout_redirect_uri||this.settings.post_logout_redirect_uri;return e.post_logout_redirect_uri=r,e.display=\"popup\",e.post_logout_redirect_uri&&(e.state=e.state||{}),this._signout(e,this._popupNavigator,{startUrl:r,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(){i.Log.info(\"UserManager.signoutPopup: successful\")}))},e.prototype.signoutPopupCallback=function t(e,r){void 0===r&&\"boolean\"==typeof e&&(r=e,e=null);return this._popupNavigator.callback(e,r,\"?\").then((function(){i.Log.info(\"UserManager.signoutPopupCallback: successful\")}))},e.prototype._signout=function t(e,r){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signoutStart(e,r,i).then((function(t){return n._signoutEnd(t.url)}))},e.prototype._signoutStart=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=this,n=arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.prepare(o).then((function(t){return i.Log.debug(\"UserManager._signoutStart: got navigator window handle\"),r._loadUser().then((function(n){return i.Log.debug(\"UserManager._signoutStart: loaded current user from storage\"),(r._settings.revokeAccessTokenOnSignout?r._revokeInternal(n):Promise.resolve()).then((function(){var s=e.id_token_hint||n&&n.id_token;return s&&(i.Log.debug(\"UserManager._signoutStart: Setting id_token into signout request\"),e.id_token_hint=s),r.removeUser().then((function(){return i.Log.debug(\"UserManager._signoutStart: user removed, creating signout request\"),r.createSignoutRequest(e).then((function(e){return i.Log.debug(\"UserManager._signoutStart: got signout request\"),o.url=e.url,e.state&&(o.id=e.state.id),t.navigate(o)}))}))}))})).catch((function(e){throw t.close&&(i.Log.debug(\"UserManager._signoutStart: Error after preparing navigator, closing navigator window\"),t.close()),e}))}))},e.prototype._signoutEnd=function t(e){return this.processSignoutResponse(e).then((function(t){return i.Log.debug(\"UserManager._signoutEnd: got signout response\"),t}))},e.prototype.revokeAccessToken=function t(){var e=this;return this._loadUser().then((function(t){return e._revokeInternal(t,!0).then((function(r){if(r)return i.Log.debug(\"UserManager.revokeAccessToken: removing token properties from user and re-storing\"),t.access_token=null,t.refresh_token=null,t.expires_at=null,t.token_type=null,e.storeUser(t).then((function(){i.Log.debug(\"UserManager.revokeAccessToken: user stored\"),e._events.load(t)}))}))})).then((function(){i.Log.info(\"UserManager.revokeAccessToken: access token revoked successfully\")}))},e.prototype._revokeInternal=function t(e,r){var n=this;if(e){var o=e.access_token,s=e.refresh_token;return this._revokeAccessTokenInternal(o,r).then((function(t){return n._revokeRefreshTokenInternal(s,r).then((function(e){return t||e||i.Log.debug(\"UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format\"),t||e}))}))}return Promise.resolve(!1)},e.prototype._revokeAccessTokenInternal=function t(e,r){return!e||e.indexOf(\".\")>=0?Promise.resolve(!1):this._tokenRevocationClient.revoke(e,r).then((function(){return!0}))},e.prototype._revokeRefreshTokenInternal=function t(e,r){return e?this._tokenRevocationClient.revoke(e,r,\"refresh_token\").then((function(){return!0})):Promise.resolve(!1)},e.prototype.startSilentRenew=function t(){this._silentRenewService.start()},e.prototype.stopSilentRenew=function t(){this._silentRenewService.stop()},e.prototype._loadUser=function t(){return this._userStore.get(this._userStoreKey).then((function(t){return t?(i.Log.debug(\"UserManager._loadUser: user storageString loaded\"),a.User.fromStorageString(t)):(i.Log.debug(\"UserManager._loadUser: no user storageString\"),null)}))},e.prototype.storeUser=function t(e){if(e){i.Log.debug(\"UserManager.storeUser: storing user\");var r=e.toStorageString();return this._userStore.set(this._userStoreKey,r)}return i.Log.debug(\"storeUser.storeUser: removing user\"),this._userStore.remove(this._userStoreKey)},n(e,[{key:\"_redirectNavigator\",get:function t(){return this.settings.redirectNavigator}},{key:\"_popupNavigator\",get:function t(){return this.settings.popupNavigator}},{key:\"_iframeNavigator\",get:function t(){return this.settings.iframeNavigator}},{key:\"_userStore\",get:function t(){return this.settings.userStore}},{key:\"events\",get:function t(){return this._events}},{key:\"_userStoreKey\",get:function t(){return\"user:\"+this.settings.authority+\":\"+this.settings.client_id}}]),e}(o.OidcClient)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserManagerSettings=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=r.popup_redirect_uri,i=r.popup_post_logout_redirect_uri,g=r.popupWindowFeatures,d=r.popupWindowTarget,p=r.silent_redirect_uri,v=r.silentRequestTimeout,y=r.automaticSilentRenew,m=void 0!==y&&y,_=r.validateSubOnSilentRenew,S=void 0!==_&&_,b=r.includeIdTokenInSilentRenew,w=void 0===b||b,F=r.monitorSession,E=void 0===F||F,x=r.monitorAnonymousSession,A=void 0!==x&&x,k=r.checkSessionInterval,P=void 0===k?2e3:k,C=r.stopCheckSessionOnError,T=void 0===C||C,R=r.query_status_response_type,I=r.revokeAccessTokenOnSignout,D=void 0!==I&&I,L=r.accessTokenExpiringNotificationTime,N=void 0===L?60:L,U=r.redirectNavigator,B=void 0===U?new o.RedirectNavigator:U,O=r.popupNavigator,j=void 0===O?new s.PopupNavigator:O,M=r.iframeNavigator,H=void 0===M?new a.IFrameNavigator:M,V=r.userStore,K=void 0===V?new u.WebStorageStateStore({store:c.Global.sessionStorage}):V;l(this,e);var q=f(this,t.call(this,arguments[0]));return q._popup_redirect_uri=n,q._popup_post_logout_redirect_uri=i,q._popupWindowFeatures=g,q._popupWindowTarget=d,q._silent_redirect_uri=p,q._silentRequestTimeout=v,q._automaticSilentRenew=m,q._validateSubOnSilentRenew=S,q._includeIdTokenInSilentRenew=w,q._accessTokenExpiringNotificationTime=N,q._monitorSession=E,q._monitorAnonymousSession=A,q._checkSessionInterval=P,q._stopCheckSessionOnError=T,R?q._query_status_response_type=R:arguments[0]&&arguments[0].response_type?q._query_status_response_type=h.SigninRequest.isOidc(arguments[0].response_type)?\"id_token\":\"code\":q._query_status_response_type=\"id_token\",q._revokeAccessTokenOnSignout=D,q._redirectNavigator=B,q._popupNavigator=j,q._iframeNavigator=H,q._userStore=K,q}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),n(e,[{key:\"popup_redirect_uri\",get:function t(){return this._popup_redirect_uri}},{key:\"popup_post_logout_redirect_uri\",get:function t(){return this._popup_post_logout_redirect_uri}},{key:\"popupWindowFeatures\",get:function t(){return this._popupWindowFeatures}},{key:\"popupWindowTarget\",get:function t(){return this._popupWindowTarget}},{key:\"silent_redirect_uri\",get:function t(){return this._silent_redirect_uri}},{key:\"silentRequestTimeout\",get:function t(){return this._silentRequestTimeout}},{key:\"automaticSilentRenew\",get:function t(){return this._automaticSilentRenew}},{key:\"validateSubOnSilentRenew\",get:function t(){return this._validateSubOnSilentRenew}},{key:\"includeIdTokenInSilentRenew\",get:function t(){return this._includeIdTokenInSilentRenew}},{key:\"accessTokenExpiringNotificationTime\",get:function t(){return this._accessTokenExpiringNotificationTime}},{key:\"monitorSession\",get:function t(){return this._monitorSession}},{key:\"monitorAnonymousSession\",get:function t(){return this._monitorAnonymousSession}},{key:\"checkSessionInterval\",get:function t(){return this._checkSessionInterval}},{key:\"stopCheckSessionOnError\",get:function t(){return this._stopCheckSessionOnError}},{key:\"query_status_response_type\",get:function t(){return this._query_status_response_type}},{key:\"revokeAccessTokenOnSignout\",get:function t(){return this._revokeAccessTokenOnSignout}},{key:\"redirectNavigator\",get:function t(){return this._redirectNavigator}},{key:\"popupNavigator\",get:function t(){return this._popupNavigator}},{key:\"iframeNavigator\",get:function t(){return this._iframeNavigator}},{key:\"userStore\",get:function t(){return this._userStore}}]),e}(i.OidcClientSettings)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RedirectNavigator=void 0;var n=function(){function t(t,e){for(var r=0;r1&&void 0!==arguments[1])||arguments[1];n.Log.debug(\"UserManagerEvents.load\"),t.prototype.load.call(this,r),i&&this._userLoaded.raise(r)},e.prototype.unload=function e(){n.Log.debug(\"UserManagerEvents.unload\"),t.prototype.unload.call(this),this._userUnloaded.raise()},e.prototype.addUserLoaded=function t(e){this._userLoaded.addHandler(e)},e.prototype.removeUserLoaded=function t(e){this._userLoaded.removeHandler(e)},e.prototype.addUserUnloaded=function t(e){this._userUnloaded.addHandler(e)},e.prototype.removeUserUnloaded=function t(e){this._userUnloaded.removeHandler(e)},e.prototype.addSilentRenewError=function t(e){this._silentRenewError.addHandler(e)},e.prototype.removeSilentRenewError=function t(e){this._silentRenewError.removeHandler(e)},e.prototype._raiseSilentRenewError=function t(e){n.Log.debug(\"UserManagerEvents._raiseSilentRenewError\",e.message),this._silentRenewError.raise(e)},e.prototype.addUserSignedIn=function t(e){this._userSignedIn.addHandler(e)},e.prototype.removeUserSignedIn=function t(e){this._userSignedIn.removeHandler(e)},e.prototype._raiseUserSignedIn=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSignedIn\"),this._userSignedIn.raise()},e.prototype.addUserSignedOut=function t(e){this._userSignedOut.addHandler(e)},e.prototype.removeUserSignedOut=function t(e){this._userSignedOut.removeHandler(e)},e.prototype._raiseUserSignedOut=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSignedOut\"),this._userSignedOut.raise()},e.prototype.addUserSessionChanged=function t(e){this._userSessionChanged.addHandler(e)},e.prototype.removeUserSessionChanged=function t(e){this._userSessionChanged.removeHandler(e)},e.prototype._raiseUserSessionChanged=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSessionChanged\"),this._userSessionChanged.raise()},e}(i.AccessTokenEvents)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Timer=void 0;var n=function(){function t(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:o.Global.timer,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;a(this,e);var s=u(this,t.call(this,r));return s._timer=n,s._nowFunc=i||function(){return Date.now()/1e3},s}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.init=function t(e){e<=0&&(e=1),e=parseInt(e);var r=this.now+e;if(this.expiration===r&&this._timerHandle)i.Log.debug(\"Timer.init timer \"+this._name+\" skipping initialization since already initialized for expiration:\",this.expiration);else{this.cancel(),i.Log.debug(\"Timer.init timer \"+this._name+\" for duration:\",e),this._expiration=r;var n=5;e {\n const {\n sorted, skipIndex, ignorenull, skipBracket, useDot, whitespace = '+'\n } = opts;\n\n const encode = value => String(value)\n .replace(/[^ !'()~*]/gu, encodeURIComponent)\n .replace(/ /g, whitespace)\n .replace(/[!'()~*]/g, ch =>\n `%${ch.charCodeAt().toString(16).slice(-2).toUpperCase()}`);\n\n const keys = (obj, keyarr = Object.keys(obj)) =>\n sorted ? keyarr.sort() : keyarr;\n\n const filterjoin = arr => arr.filter(e => e).join('&');\n\n const objnest = (name, obj) => filterjoin(keys(obj).map(key => useDot\n ? nest(`${name}.${key}`, obj[key])\n : nest(`${name}[${key}]`, obj[key])));\n\n const arrnest = (name, arr, brackets = skipBracket ? '' : '[]') => arr.length\n ? filterjoin(arr.map((elem, index) => skipIndex\n ? nest(name + brackets, elem)\n : nest(name + '[' + index + ']', elem)))\n : encode(name + brackets);\n\n const setnest = (name, set) => filterjoin(\n Array.from(set).map(elem => nest(name, elem)));\n\n const nest = (name, value, type = typeof value, f = null) => {\n if (value === f)\n f = ignorenull ? f : encode(name) + '=' + f;\n else if (/string|number|boolean/.test(type))\n f = encode(name) + '=' + encode(value);\n else if (Array.isArray(value))\n f = arrnest(name, value);\n else if (value instanceof Set)\n f = setnest(name, value);\n else if (type === 'object')\n f = objnest(name, value);\n\n return f;\n };\n\n return data && filterjoin(keys(data).map(key => nest(key, data[key])));\n};\n","import { OidcClient, WebStorageStateStore } from '@inrupt/oidc-client';\nexport { CordovaIFrameNavigator, CordovaPopupNavigator, InMemoryWebStorage, Log, OidcClient, SessionMonitor, User, UserManager, Version, WebStorageStateStore } from '@inrupt/oidc-client';\nimport { determineSigningAlg, PREFERRED_SIGNING_ALG, getWebidFromTokenPayload, OidcProviderError, InvalidResponseError, generateDpopKeyPair, createDpopHeader } from '@rubensworks/solid-client-authn-core';\nimport formurlencoded from 'form-urlencoded';\n\nfunction processErrorResponse(responseBody, options) {\r\n var _a, _b, _c, _d;\r\n if (responseBody.error === \"invalid_redirect_uri\") {\r\n throw new Error(`Dynamic client registration failed: the provided redirect uri [${(_a = options.redirectUrl) === null || _a === void 0 ? void 0 : _a.toString()}] is invalid - ${(_b = responseBody.error_description) !== null && _b !== void 0 ? _b : \"\"}`);\r\n }\r\n if (responseBody.error === \"invalid_client_metadata\") {\r\n throw new Error(`Dynamic client registration failed: the provided client metadata ${JSON.stringify(options)} is invalid - ${(_c = responseBody.error_description) !== null && _c !== void 0 ? _c : \"\"}`);\r\n }\r\n throw new Error(`Dynamic client registration failed: ${responseBody.error} - ${(_d = responseBody.error_description) !== null && _d !== void 0 ? _d : \"\"}`);\r\n}\r\nfunction validateRegistrationResponse(responseBody, options) {\r\n if (responseBody.client_id === undefined) {\r\n throw new Error(`Dynamic client registration failed: no client_id has been found on ${JSON.stringify(responseBody)}`);\r\n }\r\n if (options.redirectUrl &&\r\n (responseBody.redirect_uris === undefined ||\r\n responseBody.redirect_uris[0] !== options.redirectUrl.toString())) {\r\n throw new Error(`Dynamic client registration failed: the returned redirect URIs ${JSON.stringify(responseBody.redirect_uris)} don't match the provided ${JSON.stringify([\r\n options.redirectUrl.toString(),\r\n ])}`);\r\n }\r\n}\r\nasync function registerClient(options, issuerConfig) {\r\n var _a;\r\n if (!issuerConfig.registrationEndpoint) {\r\n throw new Error(\"Dynamic Registration could not be completed because the issuer has no registration endpoint.\");\r\n }\r\n if (!Array.isArray(issuerConfig.idTokenSigningAlgValuesSupported)) {\r\n throw new Error(\"The OIDC issuer discovery profile is missing the 'id_token_signing_alg_values_supported' value, which is mandatory.\");\r\n }\r\n const signingAlg = determineSigningAlg(issuerConfig.idTokenSigningAlgValuesSupported, PREFERRED_SIGNING_ALG);\r\n const config = {\r\n client_name: options.clientName,\r\n application_type: \"web\",\r\n redirect_uris: [(_a = options.redirectUrl) === null || _a === void 0 ? void 0 : _a.toString()],\r\n subject_type: \"public\",\r\n token_endpoint_auth_method: \"client_secret_basic\",\r\n id_token_signed_response_alg: signingAlg,\r\n grant_types: [\"authorization_code\", \"refresh_token\"],\r\n };\r\n const headers = {\r\n \"Content-Type\": \"application/json\",\r\n };\r\n if (options.registrationAccessToken) {\r\n headers.Authorization = `Bearer ${options.registrationAccessToken}`;\r\n }\r\n const registerResponse = await fetch(issuerConfig.registrationEndpoint.toString(), {\r\n method: \"POST\",\r\n headers,\r\n body: JSON.stringify(config),\r\n });\r\n if (registerResponse.ok) {\r\n const responseBody = await registerResponse.json();\r\n validateRegistrationResponse(responseBody, options);\r\n return {\r\n clientId: responseBody.client_id,\r\n clientSecret: responseBody.client_secret,\r\n idTokenSignedResponseAlg: responseBody.id_token_signed_response_alg,\r\n clientType: \"dynamic\",\r\n };\r\n }\r\n if (registerResponse.status === 400) {\r\n processErrorResponse(await registerResponse.json(), options);\r\n }\r\n throw new Error(`Dynamic client registration failed: the server returned ${registerResponse.status} ${registerResponse.statusText} - ${await registerResponse.text()}`);\r\n}\n\nfunction hasError(value) {\r\n return value.error !== undefined && typeof value.error === \"string\";\r\n}\r\nfunction hasErrorDescription(value) {\r\n return (value.error_description !== undefined &&\r\n typeof value.error_description === \"string\");\r\n}\r\nfunction hasErrorUri(value) {\r\n return value.error_uri !== undefined && typeof value.error_uri === \"string\";\r\n}\r\nfunction hasAccessToken(value) {\r\n return (value.access_token !== undefined && typeof value.access_token === \"string\");\r\n}\r\nfunction hasIdToken(value) {\r\n return value.id_token !== undefined && typeof value.id_token === \"string\";\r\n}\r\nfunction hasRefreshToken(value) {\r\n return (value.refresh_token !== undefined && typeof value.refresh_token === \"string\");\r\n}\r\nfunction hasTokenType(value) {\r\n return value.token_type !== undefined && typeof value.token_type === \"string\";\r\n}\r\nfunction hasExpiresIn(value) {\r\n return value.expires_in === undefined || typeof value.expires_in === \"number\";\r\n}\r\nfunction validatePreconditions(issuer, data) {\r\n if (data.grantType &&\r\n (!issuer.grantTypesSupported ||\r\n !issuer.grantTypesSupported.includes(data.grantType))) {\r\n throw new Error(`The issuer [${issuer.issuer}] does not support the [${data.grantType}] grant`);\r\n }\r\n if (!issuer.tokenEndpoint) {\r\n throw new Error(`This issuer [${issuer.issuer}] does not have a token endpoint`);\r\n }\r\n}\r\nfunction validateTokenEndpointResponse(tokenResponse, dpop) {\r\n if (hasError(tokenResponse)) {\r\n throw new OidcProviderError(`Token endpoint returned error [${tokenResponse.error}]${hasErrorDescription(tokenResponse)\r\n ? `: ${tokenResponse.error_description}`\r\n : \"\"}${hasErrorUri(tokenResponse) ? ` (see ${tokenResponse.error_uri})` : \"\"}`, tokenResponse.error, hasErrorDescription(tokenResponse)\r\n ? tokenResponse.error_description\r\n : undefined);\r\n }\r\n if (!hasAccessToken(tokenResponse)) {\r\n throw new InvalidResponseError([\"access_token\"]);\r\n }\r\n if (!hasIdToken(tokenResponse)) {\r\n throw new InvalidResponseError([\"id_token\"]);\r\n }\r\n if (!hasTokenType(tokenResponse)) {\r\n throw new InvalidResponseError([\"token_type\"]);\r\n }\r\n if (!hasExpiresIn(tokenResponse)) {\r\n throw new InvalidResponseError([\"expires_in\"]);\r\n }\r\n if (!dpop && tokenResponse.token_type.toLowerCase() !== \"bearer\") {\r\n throw new Error(`Invalid token endpoint response: requested a [Bearer] token, but got a 'token_type' value of [${tokenResponse.token_type}].`);\r\n }\r\n return tokenResponse;\r\n}\r\nasync function getTokens(issuer, client, data, dpop) {\r\n validatePreconditions(issuer, data);\r\n const headers = {\r\n \"content-type\": \"application/x-www-form-urlencoded\",\r\n };\r\n let dpopKey;\r\n if (dpop) {\r\n dpopKey = await generateDpopKeyPair();\r\n headers.DPoP = await createDpopHeader(issuer.tokenEndpoint, \"POST\", dpopKey);\r\n }\r\n if (client.clientSecret) {\r\n headers.Authorization = `Basic ${btoa(`${client.clientId}:${client.clientSecret}`)}`;\r\n }\r\n const tokenRequestInit = {\r\n method: \"POST\",\r\n headers,\r\n body: formurlencoded({\r\n grant_type: data.grantType,\r\n redirect_uri: data.redirectUrl,\r\n code: data.code,\r\n code_verifier: data.codeVerifier,\r\n client_id: client.clientId,\r\n }),\r\n };\r\n const rawTokenResponse = await await fetch(issuer.tokenEndpoint, tokenRequestInit);\r\n const jsonTokenResponse = (await rawTokenResponse.json());\r\n const tokenResponse = validateTokenEndpointResponse(jsonTokenResponse, dpop);\r\n const webId = await getWebidFromTokenPayload(tokenResponse.id_token, issuer.jwksUri, issuer.issuer, client.clientId);\r\n return {\r\n accessToken: tokenResponse.access_token,\r\n idToken: tokenResponse.id_token,\r\n refreshToken: hasRefreshToken(tokenResponse)\r\n ? tokenResponse.refresh_token\r\n : undefined,\r\n webId,\r\n dpopKey,\r\n expiresIn: tokenResponse.expires_in,\r\n };\r\n}\r\nasync function getBearerToken(redirectUrl) {\r\n let signinResponse;\r\n try {\r\n const client = new OidcClient({\r\n response_mode: \"query\",\r\n loadUserInfo: false,\r\n });\r\n signinResponse = await client.processSigninResponse(redirectUrl);\r\n if (client.settings.metadata === undefined) {\r\n throw new Error(\"Cannot retrieve issuer metadata from client information in storage.\");\r\n }\r\n if (client.settings.metadata.jwks_uri === undefined) {\r\n throw new Error(\"Missing some issuer metadata from client information in storage: 'jwks_uri' is undefined\");\r\n }\r\n if (client.settings.metadata.issuer === undefined) {\r\n throw new Error(\"Missing some issuer metadata from client information in storage: 'issuer' is undefined\");\r\n }\r\n if (client.settings.client_id === undefined) {\r\n throw new Error(\"Missing some client information in storage: 'client_id' is undefined\");\r\n }\r\n const webId = await getWebidFromTokenPayload(signinResponse.id_token, client.settings.metadata.jwks_uri, client.settings.metadata.issuer, client.settings.client_id);\r\n return {\r\n accessToken: signinResponse.access_token,\r\n idToken: signinResponse.id_token,\r\n webId,\r\n refreshToken: signinResponse.refresh_token,\r\n };\r\n }\r\n catch (err) {\r\n throw new Error(`Problem handling Auth Code Grant (Flow) redirect - URL [${redirectUrl}]: ${err}`);\r\n }\r\n}\r\nasync function getDpopToken(issuer, client, data) {\r\n return getTokens(issuer, client, data, true);\r\n}\n\nasync function refresh(refreshToken, issuer, client, dpopKey) {\r\n const requestBody = {\r\n grant_type: \"refresh_token\",\r\n refresh_token: refreshToken,\r\n scope: \"openid offline_access\",\r\n };\r\n let dpopHeader = {};\r\n if (dpopKey !== undefined) {\r\n dpopHeader = {\r\n DPoP: await createDpopHeader(issuer.tokenEndpoint, \"POST\", dpopKey),\r\n };\r\n }\r\n let authHeader = {};\r\n if (client.clientSecret !== undefined) {\r\n authHeader = {\r\n Authorization: `Basic ${btoa(`${client.clientId}:${client.clientSecret}`)}`,\r\n };\r\n }\r\n const rawResponse = await fetch(issuer.tokenEndpoint, {\r\n method: \"POST\",\r\n body: formurlencoded(requestBody),\r\n headers: {\r\n ...dpopHeader,\r\n ...authHeader,\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n },\r\n });\r\n let response;\r\n try {\r\n response = await rawResponse.json();\r\n }\r\n catch (e) {\r\n throw new Error(`The token endpoint of issuer ${issuer.issuer} returned a malformed response.`);\r\n }\r\n const validatedResponse = validateTokenEndpointResponse(response, dpopKey !== undefined);\r\n const webId = await getWebidFromTokenPayload(validatedResponse.id_token, issuer.jwksUri, issuer.issuer, client.clientId);\r\n return {\r\n accessToken: validatedResponse.access_token,\r\n idToken: validatedResponse.id_token,\r\n refreshToken: typeof validatedResponse.refresh_token === \"string\"\r\n ? validatedResponse.refresh_token\r\n : undefined,\r\n webId,\r\n dpopKey,\r\n expiresIn: validatedResponse.expires_in,\r\n };\r\n}\n\nfunction removeOidcQueryParam(redirectUrl) {\r\n const cleanedUrl = new URL(redirectUrl);\r\n cleanedUrl.searchParams.delete(\"code\");\r\n cleanedUrl.searchParams.delete(\"state\");\r\n cleanedUrl.hash = \"\";\r\n return cleanedUrl.toString();\r\n}\r\nasync function clearOidcPersistentStorage() {\r\n const client = new OidcClient({\r\n response_mode: \"query\",\r\n });\r\n await client.clearStaleState(new WebStorageStateStore({}));\r\n const myStorage = window.localStorage;\r\n const itemsToRemove = [];\r\n for (let i = 0; i <= myStorage.length; i += 1) {\r\n const key = myStorage.key(i);\r\n if (key &&\r\n (key.match(/^oidc\\..+$/) ||\r\n key.match(/^solidClientAuthenticationUser:.+$/))) {\r\n itemsToRemove.push(key);\r\n }\r\n }\r\n itemsToRemove.forEach((key) => myStorage.removeItem(key));\r\n}\n\nexport { clearOidcPersistentStorage, getBearerToken, getDpopToken, refresh, registerClient, removeOidcQueryParam };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nconst oidc_client_ext_1 = require(\"@rubensworks/oidc-client-ext\");\nconst jose_legacy_modules_1 = require(\"@inrupt/jose-legacy-modules\");\nconst constant_1 = require(\"./constant\");\nconst globalFetch = (request, init) => window.fetch(request, init);\nconst headersAuthenticatorDefault = () => Promise.reject(new Error(\"headersAuthenticator is not initialized yet\"));\nclass ClientAuthentication {\n constructor(loginHandler, redirectHandler, logoutHandler, sessionInfoManager, issuerConfigFetcher) {\n this.loginHandler = loginHandler;\n this.redirectHandler = redirectHandler;\n this.logoutHandler = logoutHandler;\n this.sessionInfoManager = sessionInfoManager;\n this.issuerConfigFetcher = issuerConfigFetcher;\n this.login = async (options, eventEmitter) => {\n var _a, _b;\n await this.sessionInfoManager.clear(options.sessionId);\n const redirectUrl = (0, oidc_client_ext_1.removeOidcQueryParam)((_a = options.redirectUrl) !== null && _a !== void 0 ? _a : window.location.href);\n await this.loginHandler.handle({\n ...options,\n redirectUrl,\n clientName: (_b = options.clientName) !== null && _b !== void 0 ? _b : options.clientId,\n eventEmitter,\n });\n };\n this.fetch = globalFetch;\n this.headersAuthenticator = headersAuthenticatorDefault;\n this.logout = async (sessionId) => {\n await this.logoutHandler.handle(sessionId);\n this.fetch = globalFetch;\n this.headersAuthenticator = headersAuthenticatorDefault;\n };\n this.getSessionInfo = async (sessionId) => {\n return this.sessionInfoManager.get(sessionId);\n };\n this.getAllSessionInfo = async () => {\n return this.sessionInfoManager.getAll();\n };\n this.validateCurrentSession = async () => {\n const currentSessionId = window.localStorage.getItem(constant_1.KEY_CURRENT_SESSION);\n if (currentSessionId === null) {\n return null;\n }\n const sessionInfo = await this.sessionInfoManager.get(currentSessionId);\n if (sessionInfo === undefined ||\n sessionInfo.idToken === undefined ||\n sessionInfo.clientAppId === undefined ||\n sessionInfo.issuer === undefined) {\n return null;\n }\n const issuerConfig = await this.issuerConfigFetcher.fetchConfig(sessionInfo.issuer);\n try {\n const jwk = await (0, solid_client_authn_core_1.fetchJwks)(issuerConfig.jwksUri, issuerConfig.issuer);\n await (0, jose_legacy_modules_1.jwtVerify)(sessionInfo.idToken, await (0, jose_legacy_modules_1.parseJwk)(jwk), {\n audience: sessionInfo.clientAppId,\n issuer: issuerConfig.issuer,\n });\n return sessionInfo;\n }\n catch (e) {\n }\n return null;\n };\n this.handleIncomingRedirect = async (url, eventEmitter) => {\n const redirectInfo = await this.redirectHandler.handle(url, eventEmitter);\n this.fetch = redirectInfo.fetch.bind(window);\n this.headersAuthenticator = redirectInfo.headersAuthenticator;\n const cleanedUpUrl = new URL(url);\n cleanedUpUrl.searchParams.delete(\"state\");\n cleanedUpUrl.searchParams.delete(\"code\");\n cleanedUpUrl.searchParams.delete(\"id_token\");\n cleanedUpUrl.searchParams.delete(\"access_token\");\n cleanedUpUrl.searchParams.delete(\"error\");\n cleanedUpUrl.searchParams.delete(\"error_description\");\n window.history.replaceState(null, \"\", cleanedUpUrl.toString());\n return {\n isLoggedIn: redirectInfo.isLoggedIn,\n webId: redirectInfo.webId,\n sessionId: redirectInfo.sessionId,\n expirationDate: redirectInfo.expirationDate,\n };\n };\n }\n}\nexports.default = ClientAuthentication;\n//# sourceMappingURL=ClientAuthentication.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Session = exports.silentlyAuthenticate = void 0;\nconst events_1 = require(\"events\");\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nconst uuid_1 = require(\"uuid\");\nconst dependencies_1 = require(\"./dependencies\");\nconst constant_1 = require(\"./constant\");\nconst iframe_1 = require(\"./iframe\");\nasync function silentlyAuthenticate(sessionId, clientAuthn, options = {\n inIframe: false,\n}, session) {\n var _a;\n const storedSessionInfo = await clientAuthn.validateCurrentSession();\n if (storedSessionInfo !== null) {\n window.localStorage.setItem(constant_1.KEY_CURRENT_URL, window.location.href);\n await clientAuthn.login({\n sessionId,\n prompt: \"none\",\n oidcIssuer: storedSessionInfo.issuer,\n redirectUrl: storedSessionInfo.redirectUrl,\n clientId: storedSessionInfo.clientAppId,\n clientSecret: storedSessionInfo.clientAppSecret,\n tokenType: (_a = storedSessionInfo.tokenType) !== null && _a !== void 0 ? _a : \"DPoP\",\n inIframe: options.inIframe,\n }, session);\n return true;\n }\n return false;\n}\nexports.silentlyAuthenticate = silentlyAuthenticate;\nfunction isLoggedIn(sessionInfo) {\n return !!(sessionInfo === null || sessionInfo === void 0 ? void 0 : sessionInfo.isLoggedIn);\n}\nclass Session extends events_1.EventEmitter {\n constructor(sessionOptions = {}, sessionId) {\n super();\n this.tokenRequestInProgress = false;\n this.tmpFetchWithCookies = false;\n this.login = async (options) => {\n var _a;\n await this.clientAuthentication.login({\n sessionId: this.info.sessionId,\n ...options,\n tokenType: (_a = options.tokenType) !== null && _a !== void 0 ? _a : \"DPoP\",\n }, this);\n return new Promise(() => undefined);\n };\n this.fetch = async (url, init) => {\n return this.clientAuthentication.fetch(url, {\n ...init,\n credentials: this.tmpFetchWithCookies\n ?\n \"include\"\n :\n init === null || init === void 0 ? void 0 : init.credentials,\n });\n };\n this.authenticateHeaders = (resource, method, headersUnauthenticated) => {\n return this.clientAuthentication.headersAuthenticator(resource, method, headersUnauthenticated);\n };\n this.logout = async () => {\n await this.clientAuthentication.logout(this.info.sessionId);\n this.info.isLoggedIn = false;\n this.tmpFetchWithCookies = false;\n this.emit(\"logout\");\n };\n this.handleIncomingRedirect = async (inputOptions = {}) => {\n var _a;\n if (this.info.isLoggedIn) {\n return this.info;\n }\n if (this.tokenRequestInProgress) {\n return undefined;\n }\n const options = typeof inputOptions === \"string\" ? { url: inputOptions } : inputOptions;\n const url = (_a = options.url) !== null && _a !== void 0 ? _a : window.location.href;\n if (window.frameElement !== null) {\n (0, iframe_1.postRedirectUrlToParent)(url);\n return undefined;\n }\n if (options.useEssSession !== true ||\n options.restorePreviousSession === true) {\n window.localStorage.setItem(\"tmp-resource-server-session-enabled\", \"false\");\n }\n else {\n window.localStorage.setItem(\"tmp-resource-server-session-enabled\", \"true\");\n }\n const storedSessionCookieReference = window.localStorage.getItem(\"tmp-resource-server-session-info\");\n if (typeof storedSessionCookieReference === \"string\" &&\n options.restorePreviousSession !== true &&\n options.useEssSession === true) {\n function isValidSessionCookieReference(reference) {\n var _a;\n const resourceServers = Object.keys((_a = reference.sessions) !== null && _a !== void 0 ? _a : {});\n return (typeof reference.webId === \"string\" &&\n resourceServers.length > 0 &&\n typeof reference.sessions[resourceServers[0]].expiration === \"number\");\n }\n const reference = JSON.parse(storedSessionCookieReference);\n if (isValidSessionCookieReference(reference)) {\n const resourceServers = Object.keys(reference.sessions);\n const webIdOrigin = new URL(reference.webId).hostname;\n const ownResourceServer = resourceServers.find((resourceServer) => {\n return new URL(resourceServer).hostname === webIdOrigin;\n });\n const relevantServer = ownResourceServer !== null && ownResourceServer !== void 0 ? ownResourceServer : resourceServers[0];\n if (reference.sessions[relevantServer].expiration - Date.now() >\n 5 * 60 * 1000) {\n this.info.isLoggedIn = true;\n this.info.webId = reference.webId;\n this.tmpFetchWithCookies = true;\n return this.info;\n }\n }\n }\n this.tokenRequestInProgress = true;\n const sessionInfo = await this.clientAuthentication.handleIncomingRedirect(url, this);\n if (isLoggedIn(sessionInfo)) {\n this.setSessionInfo(sessionInfo);\n const currentUrl = window.localStorage.getItem(constant_1.KEY_CURRENT_URL);\n if (currentUrl === null) {\n this.emit(\"login\");\n }\n else {\n window.localStorage.removeItem(constant_1.KEY_CURRENT_URL);\n this.emit(\"sessionRestore\", currentUrl);\n }\n }\n else if (options.restorePreviousSession === true) {\n const storedSessionId = window.localStorage.getItem(constant_1.KEY_CURRENT_SESSION);\n if (storedSessionId !== null) {\n const attemptedSilentAuthentication = await silentlyAuthenticate(storedSessionId, this.clientAuthentication, undefined, this);\n if (attemptedSilentAuthentication) {\n return new Promise(() => { });\n }\n }\n }\n this.tokenRequestInProgress = false;\n return sessionInfo;\n };\n if (sessionOptions.clientAuthentication) {\n this.clientAuthentication = sessionOptions.clientAuthentication;\n }\n else if (sessionOptions.secureStorage && sessionOptions.insecureStorage) {\n this.clientAuthentication = (0, dependencies_1.getClientAuthenticationWithDependencies)({\n secureStorage: sessionOptions.secureStorage,\n insecureStorage: sessionOptions.insecureStorage,\n });\n }\n else {\n this.clientAuthentication = (0, dependencies_1.getClientAuthenticationWithDependencies)({});\n }\n if (sessionOptions.sessionInfo) {\n this.info = {\n sessionId: sessionOptions.sessionInfo.sessionId,\n isLoggedIn: false,\n webId: sessionOptions.sessionInfo.webId,\n };\n }\n else {\n this.info = {\n sessionId: sessionId !== null && sessionId !== void 0 ? sessionId : (0, uuid_1.v4)(),\n isLoggedIn: false,\n };\n }\n (0, iframe_1.setupIframeListener)(async (redirectUrl) => {\n const sessionInfo = await this.clientAuthentication.handleIncomingRedirect(redirectUrl, this);\n if (!isLoggedIn(sessionInfo)) {\n return;\n }\n this.setSessionInfo(sessionInfo);\n });\n this.on(\"tokenRenewal\", () => silentlyAuthenticate(this.info.sessionId, this.clientAuthentication, {\n inIframe: true,\n }, this));\n }\n onLogin(callback) {\n this.on(\"login\", callback);\n }\n onLogout(callback) {\n this.on(\"logout\", callback);\n }\n onError(callback) {\n this.on(solid_client_authn_core_1.EVENTS.ERROR, callback);\n }\n onSessionRestore(callback) {\n this.on(\"sessionRestore\", callback);\n }\n onSessionExpiration(callback) {\n this.on(solid_client_authn_core_1.EVENTS.SESSION_EXPIRED, callback);\n }\n setSessionInfo(sessionInfo) {\n this.info.isLoggedIn = sessionInfo.isLoggedIn;\n this.info.webId = sessionInfo.webId;\n this.info.sessionId = sessionInfo.sessionId;\n this.info.expirationDate = sessionInfo.expirationDate;\n this.on(solid_client_authn_core_1.EVENTS.SESSION_EXTENDED, (expiresIn) => {\n this.info.expirationDate = Date.now() + expiresIn * 1000;\n });\n }\n}\nexports.Session = Session;\n//# sourceMappingURL=Session.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KEY_CURRENT_URL = exports.KEY_CURRENT_SESSION = void 0;\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nexports.KEY_CURRENT_SESSION = `${solid_client_authn_core_1.SOLID_CLIENT_AUTHN_KEY_PREFIX}currentSession`;\nexports.KEY_CURRENT_URL = `${solid_client_authn_core_1.SOLID_CLIENT_AUTHN_KEY_PREFIX}currentUrl`;\n//# sourceMappingURL=constant.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onSessionRestore = exports.onLogout = exports.onLogin = exports.handleIncomingRedirect = exports.logout = exports.login = exports.fetch = exports.getDefaultSession = void 0;\nconst Session_1 = require(\"./Session\");\nlet defaultSession;\nfunction getDefaultSession() {\n if (typeof defaultSession === \"undefined\") {\n defaultSession = new Session_1.Session();\n }\n return defaultSession;\n}\nexports.getDefaultSession = getDefaultSession;\nconst fetch = (...args) => {\n const session = getDefaultSession();\n return session.fetch(...args);\n};\nexports.fetch = fetch;\nconst login = (...args) => {\n const session = getDefaultSession();\n return session.login(...args);\n};\nexports.login = login;\nconst logout = (...args) => {\n const session = getDefaultSession();\n return session.logout(...args);\n};\nexports.logout = logout;\nconst handleIncomingRedirect = (...args) => {\n const session = getDefaultSession();\n return session.handleIncomingRedirect(...args);\n};\nexports.handleIncomingRedirect = handleIncomingRedirect;\nconst onLogin = (...args) => {\n const session = getDefaultSession();\n return session.onLogin(...args);\n};\nexports.onLogin = onLogin;\nconst onLogout = (...args) => {\n const session = getDefaultSession();\n return session.onLogout(...args);\n};\nexports.onLogout = onLogout;\nconst onSessionRestore = (...args) => {\n const session = getDefaultSession();\n return session.onSessionRestore(...args);\n};\nexports.onSessionRestore = onSessionRestore;\n//# sourceMappingURL=defaultSession.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getClientAuthenticationWithDependencies = void 0;\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nconst StorageUtility_1 = __importDefault(require(\"./storage/StorageUtility\"));\nconst ClientAuthentication_1 = __importDefault(require(\"./ClientAuthentication\"));\nconst OidcLoginHandler_1 = __importDefault(require(\"./login/oidc/OidcLoginHandler\"));\nconst AuthorizationCodeWithPkceOidcHandler_1 = __importDefault(require(\"./login/oidc/oidcHandlers/AuthorizationCodeWithPkceOidcHandler\"));\nconst IssuerConfigFetcher_1 = __importDefault(require(\"./login/oidc/IssuerConfigFetcher\"));\nconst FallbackRedirectHandler_1 = require(\"./login/oidc/redirectHandler/FallbackRedirectHandler\");\nconst GeneralLogoutHandler_1 = __importDefault(require(\"./logout/GeneralLogoutHandler\"));\nconst SessionInfoManager_1 = require(\"./sessionInfo/SessionInfoManager\");\nconst AuthCodeRedirectHandler_1 = require(\"./login/oidc/redirectHandler/AuthCodeRedirectHandler\");\nconst AggregateRedirectHandler_1 = __importDefault(require(\"./login/oidc/redirectHandler/AggregateRedirectHandler\"));\nconst BrowserStorage_1 = __importDefault(require(\"./storage/BrowserStorage\"));\nconst Redirector_1 = __importDefault(require(\"./login/oidc/Redirector\"));\nconst ClientRegistrar_1 = __importDefault(require(\"./login/oidc/ClientRegistrar\"));\nconst ErrorOidcHandler_1 = require(\"./login/oidc/redirectHandler/ErrorOidcHandler\");\nconst TokenRefresher_1 = __importDefault(require(\"./login/oidc/refresh/TokenRefresher\"));\nfunction getClientAuthenticationWithDependencies(dependencies) {\n const inMemoryStorage = new solid_client_authn_core_1.InMemoryStorage();\n const secureStorage = dependencies.secureStorage || inMemoryStorage;\n const insecureStorage = dependencies.insecureStorage || new BrowserStorage_1.default();\n const storageUtility = new StorageUtility_1.default(secureStorage, insecureStorage);\n const issuerConfigFetcher = new IssuerConfigFetcher_1.default(storageUtility);\n const clientRegistrar = new ClientRegistrar_1.default(storageUtility);\n const sessionInfoManager = new SessionInfoManager_1.SessionInfoManager(storageUtility);\n const tokenRefresher = new TokenRefresher_1.default(storageUtility, issuerConfigFetcher, clientRegistrar);\n const loginHandler = new OidcLoginHandler_1.default(storageUtility, new AuthorizationCodeWithPkceOidcHandler_1.default(storageUtility, new Redirector_1.default()), issuerConfigFetcher, clientRegistrar);\n const redirectHandler = new AggregateRedirectHandler_1.default([\n new ErrorOidcHandler_1.ErrorOidcHandler(),\n new AuthCodeRedirectHandler_1.AuthCodeRedirectHandler(storageUtility, sessionInfoManager, issuerConfigFetcher, clientRegistrar, tokenRefresher),\n new FallbackRedirectHandler_1.FallbackRedirectHandler(),\n ]);\n return new ClientAuthentication_1.default(loginHandler, redirectHandler, new GeneralLogoutHandler_1.default(sessionInfoManager), sessionInfoManager, issuerConfigFetcher);\n}\nexports.getClientAuthenticationWithDependencies = getClientAuthenticationWithDependencies;\n//# sourceMappingURL=dependencies.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.postRedirectUrlToParent = exports.setupIframeListener = exports.redirectInIframe = void 0;\nlet redirectIframe;\nfunction getRedirectIframe() {\n if (typeof redirectIframe === \"undefined\") {\n redirectIframe = window.document.createElement(\"iframe\");\n redirectIframe.setAttribute(\"hidden\", \"true\");\n redirectIframe.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin\");\n }\n return redirectIframe;\n}\nfunction redirectInIframe(redirectUrl) {\n const iframe = getRedirectIframe();\n window.document.body.appendChild(iframe);\n iframe.src = redirectUrl;\n}\nexports.redirectInIframe = redirectInIframe;\nfunction setupIframeListener(handleIframeRedirect) {\n if (typeof window === \"undefined\") {\n return;\n }\n window.addEventListener(\"message\", async (evt) => {\n const iframe = getRedirectIframe();\n if (evt.origin === window.location.origin &&\n evt.source === iframe.contentWindow) {\n if (typeof evt.data.redirectUrl === \"string\") {\n await handleIframeRedirect(evt.data.redirectUrl);\n }\n }\n if (window.document.body.contains(iframe)) {\n window.document.body.removeChild(iframe);\n }\n });\n}\nexports.setupIframeListener = setupIframeListener;\nfunction postRedirectUrlToParent(redirectUrl) {\n window.top.postMessage({\n redirectUrl,\n }, window.location.origin);\n}\nexports.postRedirectUrlToParent = postRedirectUrlToParent;\n//# sourceMappingURL=iframe.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InMemoryStorage = exports.ConfigurationError = exports.NotImplementedError = exports.getClientAuthenticationWithDependencies = exports.Session = void 0;\nvar Session_1 = require(\"./Session\");\nObject.defineProperty(exports, \"Session\", { enumerable: true, get: function () { return Session_1.Session; } });\nvar dependencies_1 = require(\"./dependencies\");\nObject.defineProperty(exports, \"getClientAuthenticationWithDependencies\", { enumerable: true, get: function () { return dependencies_1.getClientAuthenticationWithDependencies; } });\n__exportStar(require(\"./defaultSession\"), exports);\n__exportStar(require(\"./util/worker/WindowToWorkerHandler\"), exports);\n__exportStar(require(\"./util/worker/WorkerToWindowHandler\"), exports);\nvar solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nObject.defineProperty(exports, \"NotImplementedError\", { enumerable: true, get: function () { return solid_client_authn_core_1.NotImplementedError; } });\nObject.defineProperty(exports, \"ConfigurationError\", { enumerable: true, get: function () { return solid_client_authn_core_1.ConfigurationError; } });\nObject.defineProperty(exports, \"InMemoryStorage\", { enumerable: true, get: function () { return solid_client_authn_core_1.InMemoryStorage; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst oidc_client_ext_1 = require(\"@rubensworks/oidc-client-ext\");\nclass ClientRegistrar {\n constructor(storageUtility) {\n this.storageUtility = storageUtility;\n }\n async getClient(options, issuerConfig) {\n var _a;\n const [storedClientId, storedClientSecret,] = await Promise.all([\n this.storageUtility.getForUser(options.sessionId, \"clientId\", {\n secure: false,\n }),\n this.storageUtility.getForUser(options.sessionId, \"clientSecret\", {\n secure: false,\n }),\n ]);\n if (storedClientId) {\n return {\n clientId: storedClientId,\n clientSecret: storedClientSecret,\n clientType: \"dynamic\",\n };\n }\n const extendedOptions = { ...options };\n extendedOptions.registrationAccessToken =\n (_a = extendedOptions.registrationAccessToken) !== null && _a !== void 0 ? _a : (await this.storageUtility.getForUser(options.sessionId, \"registrationAccessToken\"));\n try {\n const registeredClient = await (0, oidc_client_ext_1.registerClient)(extendedOptions, issuerConfig);\n const infoToSave = {\n clientId: registeredClient.clientId,\n };\n if (registeredClient.clientSecret) {\n infoToSave.clientSecret = registeredClient.clientSecret;\n }\n if (registeredClient.idTokenSignedResponseAlg) {\n infoToSave.idTokenSignedResponseAlg =\n registeredClient.idTokenSignedResponseAlg;\n }\n await this.storageUtility.setForUser(extendedOptions.sessionId, infoToSave, {\n secure: false,\n });\n return registeredClient;\n }\n catch (error) {\n throw new Error(`Client registration failed: [${error}]`);\n }\n }\n}\nexports.default = ClientRegistrar;\n//# sourceMappingURL=ClientRegistrar.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WELL_KNOWN_OPENID_CONFIG = void 0;\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nconst urlPath_1 = require(\"../../util/urlPath\");\nexports.WELL_KNOWN_OPENID_CONFIG = \".well-known/openid-configuration\";\nconst issuerConfigKeyMap = {\n issuer: {\n toKey: \"issuer\",\n convertToUrl: true,\n },\n authorization_endpoint: {\n toKey: \"authorizationEndpoint\",\n convertToUrl: true,\n },\n token_endpoint: {\n toKey: \"tokenEndpoint\",\n convertToUrl: true,\n },\n userinfo_endpoint: {\n toKey: \"userinfoEndpoint\",\n convertToUrl: true,\n },\n jwks_uri: {\n toKey: \"jwksUri\",\n convertToUrl: true,\n },\n registration_endpoint: {\n toKey: \"registrationEndpoint\",\n convertToUrl: true,\n },\n scopes_supported: { toKey: \"scopesSupported\" },\n response_types_supported: { toKey: \"responseTypesSupported\" },\n response_modes_supported: { toKey: \"responseModesSupported\" },\n grant_types_supported: { toKey: \"grantTypesSupported\" },\n acr_values_supported: { toKey: \"acrValuesSupported\" },\n subject_types_supported: { toKey: \"subjectTypesSupported\" },\n id_token_signing_alg_values_supported: {\n toKey: \"idTokenSigningAlgValuesSupported\",\n },\n id_token_encryption_alg_values_supported: {\n toKey: \"idTokenEncryptionAlgValuesSupported\",\n },\n id_token_encryption_enc_values_supported: {\n toKey: \"idTokenEncryptionEncValuesSupported\",\n },\n userinfo_signing_alg_values_supported: {\n toKey: \"userinfoSigningAlgValuesSupported\",\n },\n userinfo_encryption_alg_values_supported: {\n toKey: \"userinfoEncryptionAlgValuesSupported\",\n },\n userinfo_encryption_enc_values_supported: {\n toKey: \"userinfoEncryptionEncValuesSupported\",\n },\n request_object_signing_alg_values_supported: {\n toKey: \"requestObjectSigningAlgValuesSupported\",\n },\n request_object_encryption_alg_values_supported: {\n toKey: \"requestObjectEncryptionAlgValuesSupported\",\n },\n request_object_encryption_enc_values_supported: {\n toKey: \"requestObjectEncryptionEncValuesSupported\",\n },\n token_endpoint_auth_methods_supported: {\n toKey: \"tokenEndpointAuthMethodsSupported\",\n },\n token_endpoint_auth_signing_alg_values_supported: {\n toKey: \"tokenEndpointAuthSigningAlgValuesSupported\",\n },\n display_values_supported: { toKey: \"displayValuesSupported\" },\n claim_types_supported: { toKey: \"claimTypesSupported\" },\n claims_supported: { toKey: \"claimsSupported\" },\n service_documentation: { toKey: \"serviceDocumentation\" },\n claims_locales_supported: { toKey: \"claimsLocalesSupported\" },\n ui_locales_supported: { toKey: \"uiLocalesSupported\" },\n claims_parameter_supported: { toKey: \"claimsParameterSupported\" },\n request_parameter_supported: { toKey: \"requestParameterSupported\" },\n request_uri_parameter_supported: { toKey: \"requestUriParameterSupported\" },\n require_request_uri_registration: { toKey: \"requireRequestUriRegistration\" },\n op_policy_uri: {\n toKey: \"opPolicyUri\",\n convertToUrl: true,\n },\n op_tos_uri: {\n toKey: \"opTosUri\",\n convertToUrl: true,\n },\n solid_oidc_supported: {\n toKey: \"solidOidcSupported\",\n },\n};\nfunction processConfig(config) {\n const parsedConfig = {};\n Object.keys(config).forEach((key) => {\n if (issuerConfigKeyMap[key]) {\n parsedConfig[issuerConfigKeyMap[key].toKey] = config[key];\n }\n });\n return parsedConfig;\n}\nclass IssuerConfigFetcher {\n constructor(storageUtility) {\n this.storageUtility = storageUtility;\n }\n static getLocalStorageKey(issuer) {\n return `issuerConfig:${issuer}`;\n }\n async fetchConfig(issuer) {\n let issuerConfig;\n const openIdConfigUrl = (0, urlPath_1.appendToUrlPathname)(issuer, exports.WELL_KNOWN_OPENID_CONFIG);\n const issuerConfigRequestBody = await window.fetch(openIdConfigUrl);\n try {\n issuerConfig = processConfig(await issuerConfigRequestBody.json());\n }\n catch (err) {\n throw new solid_client_authn_core_1.ConfigurationError(`[${issuer.toString()}] has an invalid configuration: ${err.message}`);\n }\n await this.storageUtility.set(IssuerConfigFetcher.getLocalStorageKey(issuer), JSON.stringify(issuerConfig));\n return issuerConfig;\n }\n}\nexports.default = IssuerConfigFetcher;\n//# sourceMappingURL=IssuerConfigFetcher.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nfunction hasIssuer(options) {\n return typeof options.oidcIssuer === \"string\";\n}\nfunction hasRedirectUrl(options) {\n return typeof options.redirectUrl === \"string\";\n}\nclass OidcLoginHandler {\n constructor(storageUtility, oidcHandler, issuerConfigFetcher, clientRegistrar) {\n this.storageUtility = storageUtility;\n this.oidcHandler = oidcHandler;\n this.issuerConfigFetcher = issuerConfigFetcher;\n this.clientRegistrar = clientRegistrar;\n }\n async canHandle(options) {\n return hasIssuer(options) && hasRedirectUrl(options);\n }\n async handle(options) {\n if (!hasIssuer(options)) {\n throw new solid_client_authn_core_1.ConfigurationError(`OidcLoginHandler requires an OIDC issuer: missing property 'oidcIssuer' in ${JSON.stringify(options)}`);\n }\n if (!hasRedirectUrl(options)) {\n throw new solid_client_authn_core_1.ConfigurationError(`OidcLoginHandler requires a redirect URL: missing property 'redirectUrl' in ${JSON.stringify(options)}`);\n }\n const issuerConfig = await this.issuerConfigFetcher.fetchConfig(options.oidcIssuer);\n const clientRegistration = await (0, solid_client_authn_core_1.handleRegistration)(options, issuerConfig, this.storageUtility, this.clientRegistrar);\n const OidcOptions = {\n issuer: issuerConfig.issuer,\n dpop: options.tokenType.toLowerCase() === \"dpop\",\n ...options,\n issuerConfiguration: issuerConfig,\n client: clientRegistration,\n };\n return this.oidcHandler.handle(OidcOptions);\n }\n}\nexports.default = OidcLoginHandler;\n//# sourceMappingURL=OidcLoginHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst iframe_1 = require(\"../../iframe\");\nclass Redirector {\n redirect(redirectUrl, options) {\n if (options && options.handleRedirect) {\n options.handleRedirect(redirectUrl);\n }\n else if (options && options.redirectByReplacingState) {\n window.history.replaceState({}, \"\", redirectUrl);\n }\n else if (options === null || options === void 0 ? void 0 : options.redirectInIframe) {\n (0, iframe_1.redirectInIframe)(redirectUrl);\n }\n else {\n window.location.href = redirectUrl;\n }\n }\n}\nexports.default = Redirector;\n//# sourceMappingURL=Redirector.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst oidc_client_ext_1 = require(\"@rubensworks/oidc-client-ext\");\nclass AuthorizationCodeWithPkceOidcHandler {\n constructor(storageUtility, redirector) {\n this.storageUtility = storageUtility;\n this.redirector = redirector;\n }\n async canHandle(oidcLoginOptions) {\n return !!(oidcLoginOptions.issuerConfiguration.grantTypesSupported &&\n oidcLoginOptions.issuerConfiguration.grantTypesSupported.indexOf(\"authorization_code\") > -1);\n }\n async handle(oidcLoginOptions) {\n var _a;\n const oidcOptions = {\n authority: oidcLoginOptions.issuer.toString(),\n client_id: oidcLoginOptions.client.clientId,\n client_secret: oidcLoginOptions.client.clientSecret,\n redirect_uri: oidcLoginOptions.redirectUrl.toString(),\n post_logout_redirect_uri: oidcLoginOptions.redirectUrl.toString(),\n response_type: \"code\",\n scope: \"openid offline_access\",\n filterProtocolClaims: true,\n loadUserInfo: false,\n code_verifier: true,\n prompt: (_a = oidcLoginOptions.prompt) !== null && _a !== void 0 ? _a : \"consent\",\n };\n const oidcClientLibrary = new oidc_client_ext_1.OidcClient(oidcOptions);\n const { redirector } = this;\n const storage = this.storageUtility;\n try {\n const signingRequest = await oidcClientLibrary.createSigninRequest();\n await Promise.all([\n storage.setForUser(signingRequest.state._id, {\n sessionId: oidcLoginOptions.sessionId,\n }),\n storage.setForUser(oidcLoginOptions.sessionId, {\n codeVerifier: signingRequest.state._code_verifier,\n issuer: oidcLoginOptions.issuer.toString(),\n redirectUrl: oidcLoginOptions.redirectUrl,\n dpop: oidcLoginOptions.dpop ? \"true\" : \"false\",\n }),\n ]);\n redirector.redirect(signingRequest.url.toString(), {\n handleRedirect: oidcLoginOptions.handleRedirect,\n redirectInIframe: oidcLoginOptions.inIframe,\n });\n }\n catch (err) {\n console.error(err);\n }\n return undefined;\n }\n}\nexports.default = AuthorizationCodeWithPkceOidcHandler;\n//# sourceMappingURL=AuthorizationCodeWithPkceOidcHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nclass AggregateRedirectHandler extends solid_client_authn_core_1.AggregateHandler {\n constructor(redirectHandlers) {\n super(redirectHandlers);\n }\n}\nexports.default = AggregateRedirectHandler;\n//# sourceMappingURL=AggregateRedirectHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AuthCodeRedirectHandler = exports.DEFAULT_LIFESPAN = void 0;\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nconst oidc_client_ext_1 = require(\"@rubensworks/oidc-client-ext\");\nconst constant_1 = require(\"../../../constant\");\nexports.DEFAULT_LIFESPAN = 30 * 60 * 1000;\nasync function setupResourceServerSession(webId, authenticatedFetch, storageUtility) {\n const webIdAsUrl = new URL(webId);\n const resourceServerIri = webIdAsUrl.origin;\n await authenticatedFetch(webId);\n try {\n const resourceServerResponse = await authenticatedFetch(`${resourceServerIri}/session`);\n if (resourceServerResponse.status === 200) {\n await storageUtility.storeResourceServerSessionInfo(webId, resourceServerIri, Date.now() + exports.DEFAULT_LIFESPAN);\n return;\n }\n await storageUtility.clearResourceServerSessionInfo(resourceServerIri);\n }\n catch (_e) {\n await storageUtility.clearResourceServerSessionInfo(resourceServerIri);\n }\n}\nclass AuthCodeRedirectHandler {\n constructor(storageUtility, sessionInfoManager, issuerConfigFetcher, clientRegistrar, tokerRefresher) {\n this.storageUtility = storageUtility;\n this.sessionInfoManager = sessionInfoManager;\n this.issuerConfigFetcher = issuerConfigFetcher;\n this.clientRegistrar = clientRegistrar;\n this.tokerRefresher = tokerRefresher;\n }\n async canHandle(redirectUrl) {\n try {\n const myUrl = new URL(redirectUrl);\n return (myUrl.searchParams.get(\"code\") !== null &&\n myUrl.searchParams.get(\"state\") !== null);\n }\n catch (e) {\n throw new Error(`[${redirectUrl}] is not a valid URL, and cannot be used as a redirect URL: ${e}`);\n }\n }\n async handle(redirectUrl, eventEmitter) {\n if (!(await this.canHandle(redirectUrl))) {\n throw new Error(`AuthCodeRedirectHandler cannot handle [${redirectUrl}]: it is missing one of [code, state].`);\n }\n const url = new URL(redirectUrl);\n const oauthState = url.searchParams.get(\"state\");\n const storedSessionId = (await this.storageUtility.getForUser(oauthState, \"sessionId\", {\n errorIfNull: true,\n }));\n const isDpop = (await this.storageUtility.getForUser(storedSessionId, \"dpop\")) ===\n \"true\";\n const issuer = (await this.storageUtility.getForUser(storedSessionId, \"issuer\", { errorIfNull: true }));\n window.localStorage.setItem(constant_1.KEY_CURRENT_SESSION, storedSessionId);\n const issuerConfig = await this.issuerConfigFetcher.fetchConfig(issuer);\n const client = await this.clientRegistrar.getClient({ sessionId: storedSessionId }, issuerConfig);\n let tokens;\n const referenceTime = Date.now();\n if (isDpop) {\n const codeVerifier = (await this.storageUtility.getForUser(storedSessionId, \"codeVerifier\", { errorIfNull: true }));\n const storedRedirectIri = (await this.storageUtility.getForUser(storedSessionId, \"redirectUrl\", { errorIfNull: true }));\n tokens = await (0, oidc_client_ext_1.getDpopToken)(issuerConfig, client, {\n grantType: \"authorization_code\",\n code: url.searchParams.get(\"code\"),\n codeVerifier,\n redirectUrl: storedRedirectIri,\n });\n }\n else {\n tokens = await (0, oidc_client_ext_1.getBearerToken)(url.toString());\n }\n let refreshOptions;\n if (tokens.refreshToken !== undefined) {\n refreshOptions = {\n sessionId: storedSessionId,\n refreshToken: tokens.refreshToken,\n tokenRefresher: this.tokerRefresher,\n };\n }\n const authFetch = await (0, solid_client_authn_core_1.buildAuthenticatedFetch)(fetch, tokens.accessToken, {\n dpopKey: tokens.dpopKey,\n refreshOptions,\n eventEmitter,\n expiresIn: tokens.expiresIn,\n });\n const headersAuthenticator = await (0, solid_client_authn_core_1.buildHeadersAuthenticator)(tokens.accessToken, {\n dpopKey: tokens.dpopKey,\n });\n await this.storageUtility.setForUser(storedSessionId, {\n refreshToken: \"\",\n webId: tokens.webId,\n isLoggedIn: \"true\",\n }, { secure: true });\n url.searchParams.delete(\"code\");\n await this.storageUtility.setForUser(storedSessionId, {\n redirectUrl: url.toString(),\n idToken: tokens.idToken,\n }, {\n secure: false,\n });\n const essWorkaroundDisabled = window.localStorage.getItem(\"tmp-resource-server-session-enabled\") ===\n \"false\";\n if (!essWorkaroundDisabled) {\n await setupResourceServerSession(tokens.webId, authFetch, this.storageUtility);\n }\n const sessionInfo = await this.sessionInfoManager.get(storedSessionId);\n if (!sessionInfo) {\n throw new Error(`Could not retrieve session: [${storedSessionId}].`);\n }\n return Object.assign(sessionInfo, {\n fetch: authFetch,\n headersAuthenticator,\n expirationDate: typeof tokens.expiresIn === \"number\"\n ? referenceTime + tokens.expiresIn * 1000\n : null,\n });\n }\n}\nexports.AuthCodeRedirectHandler = AuthCodeRedirectHandler;\n//# sourceMappingURL=AuthCodeRedirectHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorOidcHandler = void 0;\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nconst SessionInfoManager_1 = require(\"../../../sessionInfo/SessionInfoManager\");\nclass ErrorOidcHandler {\n async canHandle(redirectUrl) {\n try {\n return new URL(redirectUrl).searchParams.has(\"error\");\n }\n catch (e) {\n throw new Error(`[${redirectUrl}] is not a valid URL, and cannot be used as a redirect URL: ${e}`);\n }\n }\n async handle(redirectUrl, eventEmitter) {\n if (eventEmitter !== undefined) {\n const url = new URL(redirectUrl);\n const errorUrl = url.searchParams.get(\"error\");\n const errorDescriptionUrl = url.searchParams.get(\"error_description\");\n eventEmitter.emit(solid_client_authn_core_1.EVENTS.ERROR, errorUrl, errorDescriptionUrl);\n }\n return (0, SessionInfoManager_1.getUnauthenticatedSession)();\n }\n}\nexports.ErrorOidcHandler = ErrorOidcHandler;\n//# sourceMappingURL=ErrorOidcHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FallbackRedirectHandler = void 0;\nconst SessionInfoManager_1 = require(\"../../../sessionInfo/SessionInfoManager\");\nclass FallbackRedirectHandler {\n async canHandle(redirectUrl) {\n try {\n new URL(redirectUrl);\n return true;\n }\n catch (e) {\n throw new Error(`[${redirectUrl}] is not a valid URL, and cannot be used as a redirect URL: ${e}`);\n }\n }\n async handle(_redirectUrl) {\n return (0, SessionInfoManager_1.getUnauthenticatedSession)();\n }\n}\nexports.FallbackRedirectHandler = FallbackRedirectHandler;\n//# sourceMappingURL=FallbackRedirectHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nconst oidc_client_ext_1 = require(\"@rubensworks/oidc-client-ext\");\nclass TokenRefresher {\n constructor(storageUtility, issuerConfigFetcher, clientRegistrar) {\n this.storageUtility = storageUtility;\n this.issuerConfigFetcher = issuerConfigFetcher;\n this.clientRegistrar = clientRegistrar;\n }\n async refresh(sessionId, refreshToken, dpopKey, eventEmitter) {\n const oidcContext = await (0, solid_client_authn_core_1.loadOidcContextFromStorage)(sessionId, this.storageUtility, this.issuerConfigFetcher);\n const clientInfo = await this.clientRegistrar.getClient({ sessionId }, oidcContext.issuerConfig);\n if (refreshToken === undefined) {\n throw new Error(`Session [${sessionId}] has no refresh token to allow it to refresh its access token.`);\n }\n if (oidcContext.dpop && dpopKey === undefined) {\n throw new Error(`For session [${sessionId}], the key bound to the DPoP access token must be provided to refresh said access token.`);\n }\n const tokenSet = await (0, oidc_client_ext_1.refresh)(refreshToken, oidcContext.issuerConfig, clientInfo, dpopKey);\n if (tokenSet.refreshToken !== undefined) {\n eventEmitter === null || eventEmitter === void 0 ? void 0 : eventEmitter.emit(solid_client_authn_core_1.EVENTS.NEW_REFRESH_TOKEN, tokenSet.refreshToken);\n await this.storageUtility.setForUser(sessionId, {\n refreshToken: tokenSet.refreshToken,\n });\n }\n return tokenSet;\n }\n}\nexports.default = TokenRefresher;\n//# sourceMappingURL=TokenRefresher.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass GeneralLogoutHandler {\n constructor(sessionInfoManager) {\n this.sessionInfoManager = sessionInfoManager;\n }\n async canHandle() {\n return true;\n }\n async handle(userId) {\n await this.sessionInfoManager.clear(userId);\n }\n}\nexports.default = GeneralLogoutHandler;\n//# sourceMappingURL=GeneralLogoutHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionInfoManager = exports.clear = exports.getUnauthenticatedSession = void 0;\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nconst uuid_1 = require(\"uuid\");\nconst oidc_client_ext_1 = require(\"@rubensworks/oidc-client-ext\");\nfunction getUnauthenticatedSession() {\n return {\n isLoggedIn: false,\n sessionId: (0, uuid_1.v4)(),\n fetch,\n headersAuthenticator: async (resource, method, headers) => headers,\n };\n}\nexports.getUnauthenticatedSession = getUnauthenticatedSession;\nasync function clear(sessionId, storage) {\n const storedSessionCookieReference = await storage.get(\"tmp-resource-server-session-info\");\n const reference = JSON.parse(storedSessionCookieReference !== null && storedSessionCookieReference !== void 0 ? storedSessionCookieReference : \"{}\");\n const { webId } = reference;\n if (webId !== undefined) {\n const webIdAsUrl = new URL(webId);\n const resourceServerIri = webIdAsUrl.origin;\n await storage.clearResourceServerSessionInfo(resourceServerIri);\n }\n await Promise.all([\n storage.deleteAllUserData(sessionId, { secure: false }),\n storage.deleteAllUserData(sessionId, { secure: true }),\n storage.delete(\"clientKey\", { secure: false }),\n ]);\n await (0, oidc_client_ext_1.clearOidcPersistentStorage)();\n}\nexports.clear = clear;\nclass SessionInfoManager {\n constructor(storageUtility) {\n this.storageUtility = storageUtility;\n }\n update(_sessionId, _options) {\n throw new Error(\"Not Implemented\");\n }\n async get(sessionId) {\n var _a;\n const isLoggedIn = await this.storageUtility.getForUser(sessionId, \"isLoggedIn\", {\n secure: true,\n });\n const webId = await this.storageUtility.getForUser(sessionId, \"webId\", {\n secure: true,\n });\n const clientId = await this.storageUtility.getForUser(sessionId, \"clientId\", {\n secure: false,\n });\n const clientSecret = await this.storageUtility.getForUser(sessionId, \"clientSecret\", {\n secure: false,\n });\n const idToken = await this.storageUtility.getForUser(sessionId, \"idToken\", {\n secure: false,\n });\n const redirectUrl = await this.storageUtility.getForUser(sessionId, \"redirectUrl\", {\n secure: false,\n });\n const refreshToken = await this.storageUtility.getForUser(sessionId, \"refreshToken\", {\n secure: true,\n });\n const issuer = await this.storageUtility.getForUser(sessionId, \"issuer\", {\n secure: false,\n });\n const tokenType = (_a = (await this.storageUtility.getForUser(sessionId, \"tokenType\", {\n secure: false,\n }))) !== null && _a !== void 0 ? _a : \"DPoP\";\n if (!(0, solid_client_authn_core_1.isSupportedTokenType)(tokenType)) {\n throw new Error(`Tokens of type [${tokenType}] are not supported.`);\n }\n if (clientId === undefined &&\n idToken === undefined &&\n isLoggedIn === undefined &&\n webId === undefined &&\n refreshToken === undefined) {\n return undefined;\n }\n return {\n sessionId,\n webId,\n isLoggedIn: isLoggedIn === \"true\",\n redirectUrl,\n idToken,\n refreshToken,\n issuer,\n clientAppId: clientId,\n clientAppSecret: clientSecret,\n tokenType,\n };\n }\n async getAll() {\n throw new Error(\"Not implemented\");\n }\n async clear(sessionId) {\n return clear(sessionId, this.storageUtility);\n }\n async register(_sessionId) {\n throw new Error(\"Not implemented\");\n }\n async getRegisteredSessionIdAll() {\n throw new Error(\"Not implemented\");\n }\n async clearAll() {\n throw new Error(\"Not implemented\");\n }\n}\nexports.SessionInfoManager = SessionInfoManager;\n//# sourceMappingURL=SessionInfoManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass BrowserStorage {\n get storage() {\n return window.localStorage;\n }\n async get(key) {\n return this.storage.getItem(key) || undefined;\n }\n async set(key, value) {\n this.storage.setItem(key, value);\n }\n async delete(key) {\n this.storage.removeItem(key);\n }\n}\nexports.default = BrowserStorage;\n//# sourceMappingURL=BrowserStorage.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst solid_client_authn_core_1 = require(\"@rubensworks/solid-client-authn-core\");\nclass StorageUtilityBrowser extends solid_client_authn_core_1.StorageUtility {\n constructor(secureStorage, insecureStorage) {\n super(secureStorage, insecureStorage);\n }\n}\nexports.default = StorageUtilityBrowser;\n//# sourceMappingURL=StorageUtility.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendToUrlPathname = void 0;\nfunction appendToUrlPathname(url, append) {\n const parsedUrl = new URL(url);\n const path = parsedUrl.pathname;\n parsedUrl.pathname = `${path}${path.endsWith(\"/\") ? \"\" : \"/\"}${append.startsWith(\"/\") ? append.substring(1) : append}`;\n return parsedUrl.toString();\n}\nexports.appendToUrlPathname = appendToUrlPathname;\n//# sourceMappingURL=urlPath.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WindowToWorkerHandler = void 0;\nconst WorkerToWindowHandler_1 = require(\"./WorkerToWindowHandler\");\nclass WindowToWorkerHandler {\n constructor(windowSelf, worker, session) {\n this.windowSelf = windowSelf;\n this.worker = worker;\n this.session = session;\n }\n onmessage(messageEvent) {\n if (typeof messageEvent.data === \"object\" &&\n WorkerToWindowHandler_1.WorkerToWindowHandler.MESSAGE_KEY_POST in messageEvent.data) {\n const message = messageEvent.data[WorkerToWindowHandler_1.WorkerToWindowHandler.MESSAGE_KEY_POST];\n this.session\n .authenticateHeaders(message.resource, message.method, new Headers(message.headersUnauthenticatedRaw))\n .then((headersAuthenticated) => {\n const messageResponse = {\n messageId: message.messageId,\n headersAuthenticatedRaw: [...headersAuthenticated.entries()],\n };\n this.worker.postMessage({\n [WorkerToWindowHandler_1.WorkerToWindowHandler.MESSAGE_KEY_RESPONSE]: messageResponse,\n });\n })\n .catch((error) => {\n const messageResponse = {\n messageId: message.messageId,\n errorMessage: error.message,\n };\n this.worker.postMessage({\n [WorkerToWindowHandler_1.WorkerToWindowHandler.MESSAGE_KEY_RESPONSE]: messageResponse,\n });\n });\n return true;\n }\n return false;\n }\n}\nexports.WindowToWorkerHandler = WindowToWorkerHandler;\n//# sourceMappingURL=WindowToWorkerHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkerToWindowHandler = void 0;\nclass WorkerToWindowHandler {\n constructor(workerSelf) {\n this.workerSelf = workerSelf;\n this.messageCounter = 0;\n this.messageReceiveCallbackBuffer = {};\n }\n onmessage(messageEvent) {\n if (typeof messageEvent.data === \"object\" &&\n WorkerToWindowHandler.MESSAGE_KEY_RESPONSE in messageEvent.data) {\n const message = messageEvent.data[WorkerToWindowHandler.MESSAGE_KEY_RESPONSE];\n const callback = this.messageReceiveCallbackBuffer[message.messageId];\n if (!callback) {\n throw new Error(`Received unexpected authenticated headers response for id ${message.messageId}`);\n }\n if (message.errorMessage) {\n callback.reject(new Error(message.errorMessage));\n }\n else {\n callback.resolve(new Headers(message.headersAuthenticatedRaw));\n }\n delete this.messageReceiveCallbackBuffer[message.messageId];\n return true;\n }\n return false;\n }\n buildAuthenticatedFetch() {\n return async (input, init) => {\n const inputRaw = typeof input === \"string\";\n const headersAuthenticated = await this.authenticateHeaders(inputRaw ? input : input.url, (inputRaw ? init === null || init === void 0 ? void 0 : init.method : input.method) || \"get\", new Headers(inputRaw || !input.headers ? init === null || init === void 0 ? void 0 : init.headers : input.headers));\n if (typeof input !== \"string\") {\n return global.fetch({ ...input, headers: headersAuthenticated }, { ...init });\n }\n return global.fetch(input, { ...init, headers: headersAuthenticated });\n };\n }\n authenticateHeaders(resource, method, headers) {\n const messageId = this.messageCounter;\n const promise = new Promise((resolve, reject) => {\n this.messageReceiveCallbackBuffer[messageId] = { resolve, reject };\n });\n this.messageCounter += 1;\n const message = {\n messageId,\n resource,\n method,\n headersUnauthenticatedRaw: [...headers.entries()],\n };\n this.workerSelf.postMessage({\n [WorkerToWindowHandler.MESSAGE_KEY_POST]: message,\n });\n return promise;\n }\n}\nexports.WorkerToWindowHandler = WorkerToWindowHandler;\nWorkerToWindowHandler.MESSAGE_KEY_POST = \"solid-client-authn-js.requestUnauthenticated\";\nWorkerToWindowHandler.MESSAGE_KEY_RESPONSE = \"solid-client-authn-js.headersAuthenticated\";\n//# sourceMappingURL=WorkerToWindowHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateDpopKeyPair = exports.createDpopHeader = void 0;\nconst jose_legacy_modules_1 = require(\"@inrupt/jose-legacy-modules\");\nconst uuid_1 = require(\"uuid\");\nconst constant_1 = require(\"../constant\");\nfunction removeHashUsernameAndPassword(audience) {\n const cleanedAudience = new URL(audience);\n cleanedAudience.hash = \"\";\n cleanedAudience.username = \"\";\n cleanedAudience.password = \"\";\n return cleanedAudience.toString();\n}\nasync function createDpopHeader(audience, method, dpopKey) {\n return new jose_legacy_modules_1.SignJWT({\n htu: removeHashUsernameAndPassword(audience),\n htm: method.toUpperCase(),\n jti: (0, uuid_1.v4)(),\n })\n .setProtectedHeader({\n alg: constant_1.PREFERRED_SIGNING_ALG[0],\n jwk: dpopKey.publicKey,\n typ: \"dpop+jwt\",\n })\n .setIssuedAt()\n .sign(dpopKey.privateKey, {});\n}\nexports.createDpopHeader = createDpopHeader;\nasync function generateDpopKeyPair() {\n const { privateKey, publicKey } = await (0, jose_legacy_modules_1.generateKeyPair)(constant_1.PREFERRED_SIGNING_ALG[0]);\n const dpopKeyPair = {\n privateKey,\n publicKey: await (0, jose_legacy_modules_1.fromKeyLike)(publicKey),\n };\n [dpopKeyPair.publicKey.alg] = constant_1.PREFERRED_SIGNING_ALG;\n return dpopKeyPair;\n}\nexports.generateDpopKeyPair = generateDpopKeyPair;\n//# sourceMappingURL=dpopUtils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildHeadersAuthenticator = exports.buildAuthenticatedFetch = exports.DEFAULT_EXPIRATION_TIME_SECONDS = void 0;\nconst cross_fetch_1 = require(\"cross-fetch\");\nconst constant_1 = require(\"../constant\");\nconst dpopUtils_1 = require(\"./dpopUtils\");\nconst OidcProviderError_1 = require(\"../errors/OidcProviderError\");\nconst InvalidResponseError_1 = require(\"../errors/InvalidResponseError\");\nexports.DEFAULT_EXPIRATION_TIME_SECONDS = 600;\nfunction isExpectedAuthError(statusCode) {\n return [401, 403].includes(statusCode);\n}\nasync function buildDpopFetchOptions(targetUrl, authToken, dpopKey, defaultOptions) {\n var _a;\n const headers = new cross_fetch_1.Headers(defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.headers);\n headers.set(\"Authorization\", `DPoP ${authToken}`);\n headers.set(\"DPoP\", await (0, dpopUtils_1.createDpopHeader)(targetUrl, (_a = defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.method) !== null && _a !== void 0 ? _a : \"get\", dpopKey));\n return {\n ...defaultOptions,\n headers,\n };\n}\nasync function buildAuthenticatedHeaders(targetUrl, authToken, dpopKey, defaultOptions) {\n if (dpopKey !== undefined) {\n return buildDpopFetchOptions(targetUrl, authToken, dpopKey, defaultOptions);\n }\n const headers = new cross_fetch_1.Headers(defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.headers);\n headers.set(\"Authorization\", `Bearer ${authToken}`);\n return {\n ...defaultOptions,\n headers,\n };\n}\nasync function makeAuthenticatedRequest(unauthFetch, accessToken, url, defaultRequestInit, dpopKey) {\n return unauthFetch(url, await buildAuthenticatedHeaders(url.toString(), accessToken, dpopKey, defaultRequestInit));\n}\nasync function refreshAccessToken(refreshOptions, dpopKey, eventEmitter) {\n var _a;\n const tokenSet = await refreshOptions.tokenRefresher.refresh(refreshOptions.sessionId, refreshOptions.refreshToken, dpopKey);\n eventEmitter === null || eventEmitter === void 0 ? void 0 : eventEmitter.emit(constant_1.EVENTS.SESSION_EXTENDED, (_a = tokenSet.expiresIn) !== null && _a !== void 0 ? _a : exports.DEFAULT_EXPIRATION_TIME_SECONDS);\n if (typeof tokenSet.refreshToken === \"string\") {\n eventEmitter === null || eventEmitter === void 0 ? void 0 : eventEmitter.emit(constant_1.EVENTS.NEW_REFRESH_TOKEN, tokenSet.refreshToken);\n }\n return {\n accessToken: tokenSet.accessToken,\n refreshToken: tokenSet.refreshToken,\n expiresIn: tokenSet.expiresIn,\n };\n}\nconst computeRefreshDelay = (expiresIn) => {\n if (expiresIn !== undefined) {\n return expiresIn - constant_1.REFRESH_BEFORE_EXPIRATION_SECONDS > 0\n ?\n expiresIn - constant_1.REFRESH_BEFORE_EXPIRATION_SECONDS\n : expiresIn;\n }\n return exports.DEFAULT_EXPIRATION_TIME_SECONDS;\n};\nasync function buildAuthenticatedFetch(unauthFetch, accessToken, options) {\n var _a;\n let currentAccessToken = accessToken;\n let latestTimeout;\n const currentRefreshOptions = options === null || options === void 0 ? void 0 : options.refreshOptions;\n if (currentRefreshOptions !== undefined) {\n const proactivelyRefreshToken = async () => {\n var _a, _b, _c, _d;\n try {\n const { accessToken: refreshedAccessToken, refreshToken, expiresIn, } = await refreshAccessToken(currentRefreshOptions, options.dpopKey, options.eventEmitter);\n currentAccessToken = refreshedAccessToken;\n if (refreshToken !== undefined) {\n currentRefreshOptions.refreshToken = refreshToken;\n }\n clearTimeout(latestTimeout);\n latestTimeout = setTimeout(proactivelyRefreshToken, computeRefreshDelay(expiresIn) * 1000);\n (_a = options.eventEmitter) === null || _a === void 0 ? void 0 : _a.emit(constant_1.EVENTS.TIMEOUT_SET, latestTimeout);\n }\n catch (e) {\n if (e instanceof OidcProviderError_1.OidcProviderError) {\n (_b = options === null || options === void 0 ? void 0 : options.eventEmitter) === null || _b === void 0 ? void 0 : _b.emit(constant_1.EVENTS.ERROR, e.error, e.errorDescription);\n (_c = options === null || options === void 0 ? void 0 : options.eventEmitter) === null || _c === void 0 ? void 0 : _c.emit(constant_1.EVENTS.SESSION_EXPIRED);\n }\n if (e instanceof InvalidResponseError_1.InvalidResponseError &&\n e.missingFields.includes(\"access_token\")) {\n (_d = options === null || options === void 0 ? void 0 : options.eventEmitter) === null || _d === void 0 ? void 0 : _d.emit(constant_1.EVENTS.SESSION_EXPIRED);\n }\n }\n };\n latestTimeout = setTimeout(proactivelyRefreshToken, computeRefreshDelay(options.expiresIn) * 1000);\n (_a = options.eventEmitter) === null || _a === void 0 ? void 0 : _a.emit(constant_1.EVENTS.TIMEOUT_SET, latestTimeout);\n }\n else if (options !== undefined && options.eventEmitter !== undefined) {\n const expirationTimeout = setTimeout(() => {\n options.eventEmitter.emit(constant_1.EVENTS.SESSION_EXPIRED);\n }, computeRefreshDelay(options.expiresIn) * 1000);\n options.eventEmitter.emit(constant_1.EVENTS.TIMEOUT_SET, expirationTimeout);\n }\n return async (url, requestInit) => {\n let response = await makeAuthenticatedRequest(unauthFetch, currentAccessToken, url, requestInit, options === null || options === void 0 ? void 0 : options.dpopKey);\n const failedButNotExpectedAuthError = !response.ok && !isExpectedAuthError(response.status);\n if (response.ok || failedButNotExpectedAuthError) {\n return response;\n }\n const hasBeenRedirected = response.url !== url;\n if (hasBeenRedirected && (options === null || options === void 0 ? void 0 : options.dpopKey) !== undefined) {\n response = await makeAuthenticatedRequest(unauthFetch, currentAccessToken, response.url, requestInit, options.dpopKey);\n }\n return response;\n };\n}\nexports.buildAuthenticatedFetch = buildAuthenticatedFetch;\nasync function buildHeadersAuthenticator(accessToken, options) {\n return async (resource, method, headersUnauthenticated) => {\n const headersAuthenticated = new cross_fetch_1.Headers((await buildAuthenticatedHeaders(resource.toString(), accessToken, options === null || options === void 0 ? void 0 : options.dpopKey, { method })).headers);\n headersUnauthenticated.forEach((value, key) => {\n if (!headersAuthenticated.has(key)) {\n headersAuthenticated.set(key, value);\n }\n });\n return headersAuthenticated;\n };\n}\nexports.buildHeadersAuthenticator = buildHeadersAuthenticator;\n//# sourceMappingURL=fetchFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.REFRESH_BEFORE_EXPIRATION_SECONDS = exports.EVENTS = exports.PREFERRED_SIGNING_ALG = exports.SOLID_CLIENT_AUTHN_KEY_PREFIX = void 0;\nexports.SOLID_CLIENT_AUTHN_KEY_PREFIX = \"solidClientAuthn:\";\nexports.PREFERRED_SIGNING_ALG = [\"ES256\", \"RS256\"];\nexports.EVENTS = {\n NEW_REFRESH_TOKEN: \"newRefreshToken\",\n ERROR: \"onError\",\n SESSION_EXPIRED: \"sessionExpired\",\n SESSION_EXTENDED: \"sessionExtended\",\n TIMEOUT_SET: \"timeoutSet\",\n};\nexports.REFRESH_BEFORE_EXPIRATION_SECONDS = 5;\n//# sourceMappingURL=constant.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass ConfigurationError extends Error {\n constructor(message) {\n super(message);\n }\n}\nexports.default = ConfigurationError;\n//# sourceMappingURL=ConfigurationError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass InruptError extends Error {\n constructor(messageOrIri, messageParams, appendErrorIri = true) {\n super(typeof messageOrIri === \"string\"\n ? InruptError.substituteParams(messageOrIri, messageParams)\n : InruptError.appendErrorIri(InruptError.lookupErrorIri(messageOrIri, messageParams), messageOrIri, appendErrorIri));\n }\n httpResponse(httpErrorResponse, appendHttpDetails = true) {\n this.message = InruptError.appendHttpResponseDetails(this.message, httpErrorResponse, appendHttpDetails);\n this.httpErrorResponse = httpErrorResponse;\n return this;\n }\n hasHttpResponse() {\n return this.httpErrorResponse !== undefined;\n }\n getHttpResponse() {\n return this.httpErrorResponse;\n }\n getHttpStatusCode() {\n if (this.httpErrorResponse === undefined) {\n throw new InruptError(\"This InruptError was not provided with a HTTP response - so we can't get its HTTP Status Code.\");\n }\n return this.httpErrorResponse.status;\n }\n getHttpStatusText() {\n if (this.httpErrorResponse === undefined) {\n throw new InruptError(\"This InruptError was not provided with a HTTP response - so we can't get its HTTP Status Text!\");\n }\n return this.httpErrorResponse.statusText;\n }\n static determineIfVocabTerm(value) {\n if (value.strict !== undefined) {\n return true;\n }\n return false;\n }\n static lookupErrorIri(iri, messageParams) {\n if (InruptError.determineIfVocabTerm(iri)) {\n const message = messageParams === undefined\n ? iri.message\n : iri.messageParams(...messageParams);\n return message === undefined\n ? `Looked up error message IRI [${iri.value}], but found no message value.`\n : message;\n }\n return `Error message looked up at: [${iri.value}]${messageParams === undefined\n ? \"\"\n : `, with params [${messageParams.toString()}]`}`;\n }\n static appendHttpResponseDetails(message, response, append) {\n if (append && typeof response !== \"undefined\") {\n return `${message} HTTP details: status code [${response.status}], status text [${response.statusText}].`;\n }\n return message;\n }\n static appendErrorIri(message, iri, append) {\n return append ? `${message} Error IRI: [${iri.value}].` : message;\n }\n static substituteParams(message, params) {\n let fullMessage = message;\n if (params !== undefined) {\n const paramsRequired = message.split(\"{{\").length - 1;\n if (paramsRequired !== params.length) {\n throw new Error(`Setting parameters on message [${message}], but it requires [${paramsRequired}] params and we received [${params.length}].`);\n }\n for (let i = 0; i < params.length; i += 1) {\n const marker = `{{${i}}}`;\n fullMessage = fullMessage.replace(marker, params[i]);\n }\n }\n return fullMessage;\n }\n}\nexports.default = InruptError;\n//# sourceMappingURL=InruptError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidResponseError = void 0;\nclass InvalidResponseError extends Error {\n constructor(missingFields) {\n super(`Invalid response from OIDC provider: missing fields ${missingFields}`);\n this.missingFields = missingFields;\n }\n}\nexports.InvalidResponseError = InvalidResponseError;\n//# sourceMappingURL=InvalidResponseError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass NotImplementedError extends Error {\n constructor(methodName) {\n super(`[${methodName}] is not implemented`);\n }\n}\nexports.default = NotImplementedError;\n//# sourceMappingURL=NotImplementedError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OidcProviderError = void 0;\nclass OidcProviderError extends Error {\n constructor(message, error, errorDescription) {\n super(message);\n this.error = error;\n this.errorDescription = errorDescription;\n }\n}\nexports.OidcProviderError = OidcProviderError;\n//# sourceMappingURL=OidcProviderError.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StorageUtilityGetResponse = exports.StorageUtilityMock = exports.mockStorageUtility = exports.mockStorage = exports.buildHeadersAuthenticator = exports.buildAuthenticatedFetch = exports.generateDpopKeyPair = exports.createDpopHeader = exports.OidcProviderError = exports.InvalidResponseError = exports.NotImplementedError = exports.ConfigurationError = exports.InMemoryStorage = exports.getSessionIdFromOauthState = exports.saveSessionInfoToStorage = exports.loadOidcContextFromStorage = exports.StorageUtility = exports.determineSigningAlg = exports.handleRegistration = exports.USER_SESSION_PREFIX = exports.isSupportedTokenType = exports.fetchJwks = exports.getWebidFromTokenPayload = exports.AggregateHandler = void 0;\n__exportStar(require(\"./constant\"), exports);\nvar AggregateHandler_1 = require(\"./util/handlerPattern/AggregateHandler\");\nObject.defineProperty(exports, \"AggregateHandler\", { enumerable: true, get: function () { return __importDefault(AggregateHandler_1).default; } });\nvar IRedirectHandler_1 = require(\"./login/oidc/redirectHandler/IRedirectHandler\");\nObject.defineProperty(exports, \"getWebidFromTokenPayload\", { enumerable: true, get: function () { return IRedirectHandler_1.getWebidFromTokenPayload; } });\nObject.defineProperty(exports, \"fetchJwks\", { enumerable: true, get: function () { return IRedirectHandler_1.fetchJwks; } });\nvar ISessionInfo_1 = require(\"./sessionInfo/ISessionInfo\");\nObject.defineProperty(exports, \"isSupportedTokenType\", { enumerable: true, get: function () { return ISessionInfo_1.isSupportedTokenType; } });\nvar ISessionInfoManager_1 = require(\"./sessionInfo/ISessionInfoManager\");\nObject.defineProperty(exports, \"USER_SESSION_PREFIX\", { enumerable: true, get: function () { return ISessionInfoManager_1.USER_SESSION_PREFIX; } });\nvar IClientRegistrar_1 = require(\"./login/oidc/IClientRegistrar\");\nObject.defineProperty(exports, \"handleRegistration\", { enumerable: true, get: function () { return IClientRegistrar_1.handleRegistration; } });\nObject.defineProperty(exports, \"determineSigningAlg\", { enumerable: true, get: function () { return IClientRegistrar_1.determineSigningAlg; } });\nvar StorageUtility_1 = require(\"./storage/StorageUtility\");\nObject.defineProperty(exports, \"StorageUtility\", { enumerable: true, get: function () { return __importDefault(StorageUtility_1).default; } });\nObject.defineProperty(exports, \"loadOidcContextFromStorage\", { enumerable: true, get: function () { return StorageUtility_1.loadOidcContextFromStorage; } });\nObject.defineProperty(exports, \"saveSessionInfoToStorage\", { enumerable: true, get: function () { return StorageUtility_1.saveSessionInfoToStorage; } });\nObject.defineProperty(exports, \"getSessionIdFromOauthState\", { enumerable: true, get: function () { return StorageUtility_1.getSessionIdFromOauthState; } });\nvar InMemoryStorage_1 = require(\"./storage/InMemoryStorage\");\nObject.defineProperty(exports, \"InMemoryStorage\", { enumerable: true, get: function () { return __importDefault(InMemoryStorage_1).default; } });\nvar ConfigurationError_1 = require(\"./errors/ConfigurationError\");\nObject.defineProperty(exports, \"ConfigurationError\", { enumerable: true, get: function () { return __importDefault(ConfigurationError_1).default; } });\nvar NotImplementedError_1 = require(\"./errors/NotImplementedError\");\nObject.defineProperty(exports, \"NotImplementedError\", { enumerable: true, get: function () { return __importDefault(NotImplementedError_1).default; } });\nvar InvalidResponseError_1 = require(\"./errors/InvalidResponseError\");\nObject.defineProperty(exports, \"InvalidResponseError\", { enumerable: true, get: function () { return InvalidResponseError_1.InvalidResponseError; } });\nvar OidcProviderError_1 = require(\"./errors/OidcProviderError\");\nObject.defineProperty(exports, \"OidcProviderError\", { enumerable: true, get: function () { return OidcProviderError_1.OidcProviderError; } });\nvar dpopUtils_1 = require(\"./authenticatedFetch/dpopUtils\");\nObject.defineProperty(exports, \"createDpopHeader\", { enumerable: true, get: function () { return dpopUtils_1.createDpopHeader; } });\nObject.defineProperty(exports, \"generateDpopKeyPair\", { enumerable: true, get: function () { return dpopUtils_1.generateDpopKeyPair; } });\nvar fetchFactory_1 = require(\"./authenticatedFetch/fetchFactory\");\nObject.defineProperty(exports, \"buildAuthenticatedFetch\", { enumerable: true, get: function () { return fetchFactory_1.buildAuthenticatedFetch; } });\nObject.defineProperty(exports, \"buildHeadersAuthenticator\", { enumerable: true, get: function () { return fetchFactory_1.buildHeadersAuthenticator; } });\nvar StorageUtility_2 = require(\"./storage/__mocks__/StorageUtility\");\nObject.defineProperty(exports, \"mockStorage\", { enumerable: true, get: function () { return StorageUtility_2.mockStorage; } });\nObject.defineProperty(exports, \"mockStorageUtility\", { enumerable: true, get: function () { return StorageUtility_2.mockStorageUtility; } });\nObject.defineProperty(exports, \"StorageUtilityMock\", { enumerable: true, get: function () { return StorageUtility_2.StorageUtilityMock; } });\nObject.defineProperty(exports, \"StorageUtilityGetResponse\", { enumerable: true, get: function () { return StorageUtility_2.StorageUtilityGetResponse; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.handleRegistration = exports.determineSigningAlg = void 0;\nfunction isValidUrl(url) {\n try {\n new URL(url);\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction determineSigningAlg(supported, preferred) {\n var _a;\n return ((_a = preferred.find((signingAlg) => {\n return supported.includes(signingAlg);\n })) !== null && _a !== void 0 ? _a : null);\n}\nexports.determineSigningAlg = determineSigningAlg;\nfunction determineClientType(options, issuerConfig) {\n if (options.clientId !== undefined && !isValidUrl(options.clientId)) {\n return \"static\";\n }\n if (issuerConfig.solidOidcSupported ===\n \"https://solidproject.org/TR/solid-oidc\" &&\n options.clientId !== undefined &&\n isValidUrl(options.clientId)) {\n return \"solid-oidc\";\n }\n return \"dynamic\";\n}\nasync function handleRegistration(options, issuerConfig, storageUtility, clientRegistrar) {\n const clientType = determineClientType(options, issuerConfig);\n if (clientType === \"dynamic\") {\n return clientRegistrar.getClient({\n sessionId: options.sessionId,\n clientName: options.clientName,\n redirectUrl: options.redirectUrl,\n }, issuerConfig);\n }\n await storageUtility.setForUser(options.sessionId, {\n clientId: options.clientId,\n });\n if (options.clientSecret) {\n await storageUtility.setForUser(options.sessionId, {\n clientSecret: options.clientSecret,\n });\n }\n if (options.clientName) {\n await storageUtility.setForUser(options.sessionId, {\n clientName: options.clientName,\n });\n }\n return {\n clientId: options.clientId,\n clientSecret: options.clientSecret,\n clientName: options.clientName,\n clientType,\n };\n}\nexports.handleRegistration = handleRegistration;\n//# sourceMappingURL=IClientRegistrar.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getWebidFromTokenPayload = exports.fetchJwks = void 0;\nconst cross_fetch_1 = require(\"cross-fetch\");\nconst jose_legacy_modules_1 = require(\"@inrupt/jose-legacy-modules\");\nasync function fetchJwks(jwksIri, issuerIri) {\n const jwksResponse = await (0, cross_fetch_1.fetch)(jwksIri);\n if (jwksResponse.status !== 200) {\n throw new Error(`Could not fetch JWKS for [${issuerIri}] at [${jwksIri}]: ${jwksResponse.status} ${jwksResponse.statusText}`);\n }\n let jwk;\n try {\n jwk = (await jwksResponse.json()).keys[0];\n }\n catch (e) {\n throw new Error(`Malformed JWKS for [${issuerIri}] at [${jwksIri}]: ${e.message}`);\n }\n return jwk;\n}\nexports.fetchJwks = fetchJwks;\nasync function getWebidFromTokenPayload(idToken, jwksIri, issuerIri, clientId) {\n const jwk = await fetchJwks(jwksIri, issuerIri);\n let payload;\n try {\n const { payload: verifiedPayload } = await (0, jose_legacy_modules_1.jwtVerify)(idToken, await (0, jose_legacy_modules_1.parseJwk)(jwk), {\n issuer: issuerIri,\n audience: clientId,\n });\n payload = verifiedPayload;\n }\n catch (e) {\n throw new Error(`ID token verification failed: ${e.stack}`);\n }\n if (typeof payload.webid === \"string\") {\n return payload.webid;\n }\n if (typeof payload.sub !== \"string\") {\n throw new Error(`The ID token ${JSON.stringify(payload)} is invalid: it has no 'webid' claim and no 'sub' claim.`);\n }\n try {\n new URL(payload.sub);\n return payload.sub;\n }\n catch (e) {\n throw new Error(`The ID token has no 'webid' claim, and its 'sub' claim of [${payload.sub}] is invalid as a URL - error [${e}].`);\n }\n}\nexports.getWebidFromTokenPayload = getWebidFromTokenPayload;\n//# sourceMappingURL=IRedirectHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSupportedTokenType = void 0;\nfunction isSupportedTokenType(token) {\n return typeof token === \"string\" && [\"DPoP\", \"Bearer\"].includes(token);\n}\nexports.isSupportedTokenType = isSupportedTokenType;\n//# sourceMappingURL=ISessionInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.USER_SESSION_PREFIX = void 0;\nexports.USER_SESSION_PREFIX = \"solidClientAuthenticationUser\";\n//# sourceMappingURL=ISessionInfoManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass InMemoryStorage {\n constructor() {\n this.map = {};\n }\n async get(key) {\n return this.map[key] || undefined;\n }\n async set(key, value) {\n this.map[key] = value;\n }\n async delete(key) {\n delete this.map[key];\n }\n}\nexports.default = InMemoryStorage;\n//# sourceMappingURL=InMemoryStorage.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.saveSessionInfoToStorage = exports.loadOidcContextFromStorage = exports.getSessionIdFromOauthState = void 0;\nconst jose_legacy_modules_1 = require(\"@inrupt/jose-legacy-modules\");\nconst InruptError_1 = __importDefault(require(\"../errors/InruptError\"));\nasync function getSessionIdFromOauthState(storageUtility, oauthState) {\n return storageUtility.getForUser(oauthState, \"sessionId\");\n}\nexports.getSessionIdFromOauthState = getSessionIdFromOauthState;\nasync function loadOidcContextFromStorage(sessionId, storageUtility, configFetcher) {\n try {\n const [issuerIri, codeVerifier, storedRedirectIri, dpop] = await Promise.all([\n storageUtility.getForUser(sessionId, \"issuer\", {\n errorIfNull: true,\n }),\n storageUtility.getForUser(sessionId, \"codeVerifier\"),\n storageUtility.getForUser(sessionId, \"redirectUrl\"),\n storageUtility.getForUser(sessionId, \"dpop\", { errorIfNull: true }),\n ]);\n const issuerConfig = await configFetcher.fetchConfig(issuerIri);\n return {\n codeVerifier,\n redirectUrl: storedRedirectIri,\n issuerConfig,\n dpop: dpop === \"true\",\n };\n }\n catch (e) {\n throw new Error(`Failed to retrieve OIDC context from storage associated with session [${sessionId}]: ${e}`);\n }\n}\nexports.loadOidcContextFromStorage = loadOidcContextFromStorage;\nasync function saveSessionInfoToStorage(storageUtility, sessionId, idToken, webId, isLoggedIn, refreshToken, secure, dpopKey) {\n if (refreshToken !== undefined) {\n await storageUtility.setForUser(sessionId, { refreshToken }, { secure });\n }\n if (idToken !== undefined) {\n await storageUtility.setForUser(sessionId, { idToken }, { secure });\n }\n if (webId !== undefined) {\n await storageUtility.setForUser(sessionId, { webId }, { secure });\n }\n if (isLoggedIn !== undefined) {\n await storageUtility.setForUser(sessionId, { isLoggedIn }, { secure });\n }\n if (dpopKey !== undefined) {\n await storageUtility.setForUser(sessionId, {\n publicKey: JSON.stringify(dpopKey.publicKey),\n privateKey: JSON.stringify(await (0, jose_legacy_modules_1.fromKeyLike)(dpopKey.privateKey)),\n }, { secure });\n }\n}\nexports.saveSessionInfoToStorage = saveSessionInfoToStorage;\nclass StorageUtility {\n constructor(secureStorage, insecureStorage) {\n this.secureStorage = secureStorage;\n this.insecureStorage = insecureStorage;\n this.RESOURCE_SERVER_SESSION_INFORMATION_KEY = \"tmp-resource-server-session-info\";\n }\n getKey(userId) {\n return `solidClientAuthenticationUser:${userId}`;\n }\n async getUserData(userId, secure) {\n const stored = await (secure\n ? this.secureStorage\n : this.insecureStorage).get(this.getKey(userId));\n if (stored === undefined) {\n return {};\n }\n try {\n return JSON.parse(stored);\n }\n catch (err) {\n throw new InruptError_1.default(`Data for user [${userId}] in [${secure ? \"secure\" : \"unsecure\"}] storage is corrupted - expected valid JSON, but got: ${stored}`);\n }\n }\n async setUserData(userId, data, secure) {\n await (secure ? this.secureStorage : this.insecureStorage).set(this.getKey(userId), JSON.stringify(data));\n }\n async get(key, options) {\n const value = await ((options === null || options === void 0 ? void 0 : options.secure)\n ? this.secureStorage\n : this.insecureStorage).get(key);\n if (value === undefined && (options === null || options === void 0 ? void 0 : options.errorIfNull)) {\n throw new InruptError_1.default(`[${key}] is not stored`);\n }\n return value;\n }\n async set(key, value, options) {\n return ((options === null || options === void 0 ? void 0 : options.secure) ? this.secureStorage : this.insecureStorage).set(key, value);\n }\n async delete(key, options) {\n return ((options === null || options === void 0 ? void 0 : options.secure) ? this.secureStorage : this.insecureStorage).delete(key);\n }\n async getForUser(userId, key, options) {\n const userData = await this.getUserData(userId, options === null || options === void 0 ? void 0 : options.secure);\n let value;\n if (!userData || !userData[key]) {\n value = undefined;\n }\n value = userData[key];\n if (value === undefined && (options === null || options === void 0 ? void 0 : options.errorIfNull)) {\n throw new InruptError_1.default(`Field [${key}] for user [${userId}] is not stored`);\n }\n return value || undefined;\n }\n async setForUser(userId, values, options) {\n let userData;\n try {\n userData = await this.getUserData(userId, options === null || options === void 0 ? void 0 : options.secure);\n }\n catch (_a) {\n userData = {};\n }\n await this.setUserData(userId, { ...userData, ...values }, options === null || options === void 0 ? void 0 : options.secure);\n }\n async deleteForUser(userId, key, options) {\n const userData = await this.getUserData(userId, options === null || options === void 0 ? void 0 : options.secure);\n delete userData[key];\n await this.setUserData(userId, userData, options === null || options === void 0 ? void 0 : options.secure);\n }\n async deleteAllUserData(userId, options) {\n await ((options === null || options === void 0 ? void 0 : options.secure) ? this.secureStorage : this.insecureStorage).delete(this.getKey(userId));\n }\n async storeResourceServerSessionInfo(webId, resourceServerIri, expiration) {\n var _a;\n const sessions = JSON.parse((_a = (await this.insecureStorage.get(this.RESOURCE_SERVER_SESSION_INFORMATION_KEY))) !== null && _a !== void 0 ? _a : \"{}\");\n if (sessions.webId !== webId) {\n sessions.sessions = {};\n }\n sessions.webId = webId;\n sessions.sessions[resourceServerIri] = {\n expiration,\n };\n await this.insecureStorage.set(this.RESOURCE_SERVER_SESSION_INFORMATION_KEY, JSON.stringify(sessions));\n }\n async clearResourceServerSessionInfo(resourceServerIri) {\n var _a;\n const sessions = JSON.parse((_a = (await this.insecureStorage.get(this.RESOURCE_SERVER_SESSION_INFORMATION_KEY))) !== null && _a !== void 0 ? _a : \"{}\");\n if (sessions.sessions !== undefined) {\n delete sessions.sessions[resourceServerIri];\n if (Object.keys(sessions.sessions).length === 0) {\n await this.insecureStorage.set(this.RESOURCE_SERVER_SESSION_INFORMATION_KEY, \"{}\");\n }\n else {\n await this.insecureStorage.set(this.RESOURCE_SERVER_SESSION_INFORMATION_KEY, JSON.stringify(sessions));\n }\n }\n }\n}\nexports.default = StorageUtility;\n//# sourceMappingURL=StorageUtility.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mockStorageUtility = exports.mockStorage = exports.StorageUtilityMock = exports.StorageUtilityGetResponse = void 0;\nconst __1 = require(\"../..\");\nexports.StorageUtilityGetResponse = \"getResponse\";\nexports.StorageUtilityMock = {\n get: async (key, options) => exports.StorageUtilityGetResponse,\n set: async (key, value) => {\n },\n delete: async (key) => {\n },\n getForUser: async (userId, key, options) => exports.StorageUtilityGetResponse,\n setForUser: async (userId, values, options) => {\n },\n deleteForUser: async (userId, key, options) => {\n },\n deleteAllUserData: async (userId, options) => {\n },\n storeResourceServerSessionInfo: async (_webId, _resourceServerIri, _sessionExpires) => {\n },\n clearResourceServerSessionInfo: async (_resourceServerIri) => {\n },\n};\nconst mockStorage = (stored) => {\n const store = stored;\n return {\n get: async (key) => {\n if (store[key] === undefined) {\n return undefined;\n }\n if (typeof store[key] === \"string\") {\n return store[key];\n }\n return JSON.stringify(store[key]);\n },\n set: async (key, value) => {\n store[key] = value;\n },\n delete: async (key) => {\n delete store[key];\n },\n };\n};\nexports.mockStorage = mockStorage;\nconst mockStorageUtility = (stored, isSecure = false) => {\n if (isSecure) {\n return new __1.StorageUtility((0, exports.mockStorage)(stored), (0, exports.mockStorage)({}));\n }\n return new __1.StorageUtility((0, exports.mockStorage)({}), (0, exports.mockStorage)(stored));\n};\nexports.mockStorageUtility = mockStorageUtility;\n//# sourceMappingURL=StorageUtility.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst InruptError_1 = __importDefault(require(\"../../errors/InruptError\"));\nclass AggregateHandler {\n constructor(handleables) {\n this.handleables = handleables;\n }\n async getProperHandler(params) {\n const canHandleList = await Promise.all(this.handleables.map((handleable) => handleable.canHandle(...params)));\n for (let i = 0; i < canHandleList.length; i += 1) {\n if (canHandleList[i]) {\n return this.handleables[i];\n }\n }\n return null;\n }\n async canHandle(...params) {\n return (await this.getProperHandler(params)) !== null;\n }\n async handle(...params) {\n const handler = await this.getProperHandler(params);\n if (handler) {\n return handler.handle(...params);\n }\n throw new InruptError_1.default(`[${this.constructor.name}] cannot find a suitable handler for: ${params\n .map((param) => {\n try {\n return JSON.stringify(param);\n }\n catch (err) {\n return param.toString();\n }\n })\n .join(\", \")}`);\n }\n}\nexports.default = AggregateHandler;\n//# sourceMappingURL=AggregateHandler.js.map","'use strict'\n\nvar Parser = require('jsonparse')\n , through = require('through')\n\nvar bufferFrom = Buffer.from && Buffer.from !== Uint8Array.from\n\n/*\n\n the value of this.stack that creationix's jsonparse has is weird.\n\n it makes this code ugly, but his problem is way harder that mine,\n so i'll forgive him.\n\n*/\n\nexports.parse = function (path, map) {\n var header, footer\n var parser = new Parser()\n var stream = through(function (chunk) {\n if('string' === typeof chunk)\n chunk = bufferFrom ? Buffer.from(chunk) : new Buffer(chunk)\n parser.write(chunk)\n },\n function (data) {\n if(data)\n stream.write(data)\n if (header)\n stream.emit('header', header)\n if (footer)\n stream.emit('footer', footer)\n stream.queue(null)\n })\n\n if('string' === typeof path)\n path = path.split('.').map(function (e) {\n if (e === '$*')\n return {emitKey: true}\n else if (e === '*')\n return true\n else if (e === '') // '..'.split('.') returns an empty string\n return {recurse: true}\n else\n return e\n })\n\n\n var count = 0, _key\n if(!path || !path.length)\n path = null\n\n parser.onValue = function (value) {\n if (!this.root)\n stream.root = value\n\n if(! path) return\n\n var i = 0 // iterates on path\n var j = 0 // iterates on stack\n var emitKey = false;\n var emitPath = false;\n while (i < path.length) {\n var key = path[i]\n var c\n j++\n\n if (key && !key.recurse) {\n c = (j === this.stack.length) ? this : this.stack[j]\n if (!c) return\n if (! check(key, c.key)) {\n setHeaderFooter(c.key, value)\n return\n }\n emitKey = !!key.emitKey;\n emitPath = !!key.emitPath;\n i++\n } else {\n i++\n var nextKey = path[i]\n if (! nextKey) return\n while (true) {\n c = (j === this.stack.length) ? this : this.stack[j]\n if (!c) return\n if (check(nextKey, c.key)) {\n i++;\n if (!Object.isFrozen(this.stack[j]))\n this.stack[j].value = null\n break\n } else {\n setHeaderFooter(c.key, value)\n }\n j++\n }\n }\n\n }\n\n // emit header\n if (header) {\n stream.emit('header', header);\n header = false;\n }\n if (j !== this.stack.length) return\n\n count ++\n var actualPath = this.stack.slice(1).map(function(element) { return element.key }).concat([this.key])\n var data = value\n if(null != data)\n if(null != (data = map ? map(data, actualPath) : data)) {\n if (emitKey || emitPath) {\n data = { value: data };\n if (emitKey)\n data[\"key\"] = this.key;\n if (emitPath)\n data[\"path\"] = actualPath;\n }\n\n stream.queue(data)\n }\n if (this.value) delete this.value[this.key]\n for(var k in this.stack)\n if (!Object.isFrozen(this.stack[k]))\n this.stack[k].value = null\n }\n parser._onToken = parser.onToken;\n\n parser.onToken = function (token, value) {\n parser._onToken(token, value);\n if (this.stack.length === 0) {\n if (stream.root) {\n if(!path)\n stream.queue(stream.root)\n count = 0;\n stream.root = null;\n }\n }\n }\n\n parser.onError = function (err) {\n if(err.message.indexOf(\"at position\") > -1)\n err.message = \"Invalid JSON (\" + err.message + \")\";\n stream.emit('error', err)\n }\n\n return stream\n\n function setHeaderFooter(key, value) {\n // header has not been emitted yet\n if (header !== false) {\n header = header || {}\n header[key] = value\n }\n\n // footer has not been emitted yet but header has\n if (footer !== false && header === false) {\n footer = footer || {}\n footer[key] = value\n }\n }\n}\n\nfunction check (x, y) {\n if ('string' === typeof x)\n return y == x\n else if (x && 'function' === typeof x.exec)\n return x.exec(y)\n else if ('boolean' === typeof x || 'object' === typeof x)\n return x\n else if ('function' === typeof x)\n return x(y)\n return false\n}\n\nexports.stringify = function (op, sep, cl, indent) {\n indent = indent || 0\n if (op === false){\n op = ''\n sep = '\\n'\n cl = ''\n } else if (op == null) {\n\n op = '[\\n'\n sep = '\\n,\\n'\n cl = '\\n]\\n'\n\n }\n\n //else, what ever you like\n\n var stream\n , first = true\n , anyData = false\n stream = through(function (data) {\n anyData = true\n try {\n var json = JSON.stringify(data, null, indent)\n } catch (err) {\n return stream.emit('error', err)\n }\n if(first) { first = false ; stream.queue(op + json)}\n else stream.queue(sep + json)\n },\n function (data) {\n if(!anyData)\n stream.queue(op)\n stream.queue(cl)\n stream.queue(null)\n })\n\n return stream\n}\n\nexports.stringifyObject = function (op, sep, cl, indent) {\n indent = indent || 0\n if (op === false){\n op = ''\n sep = '\\n'\n cl = ''\n } else if (op == null) {\n\n op = '{\\n'\n sep = '\\n,\\n'\n cl = '\\n}\\n'\n\n }\n\n //else, what ever you like\n\n var first = true\n var anyData = false\n var stream = through(function (data) {\n anyData = true\n var json = JSON.stringify(data[0]) + ':' + JSON.stringify(data[1], null, indent)\n if(first) { first = false ; this.queue(op + json)}\n else this.queue(sep + json)\n },\n function (data) {\n if(!anyData) this.queue(op)\n this.queue(cl)\n\n this.queue(null)\n })\n\n return stream\n}\n\n\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * 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 * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\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 // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\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(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(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 interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(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(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\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(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(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.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 buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.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 === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let 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 (!Array.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 let 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 const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\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 (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let 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 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) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let 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 coercion 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// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let 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 const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let 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 const length = this.length\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.toLocaleString = Buffer.prototype.toString\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 let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\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 let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let 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 (numberIsNaN(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 (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 let indexSize = 1\n let arrLength = arr.length\n let 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 let i\n if (dir) {\n let 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 let found = true\n for (let 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 const 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 const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(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 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 } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const 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 let 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 case 'latin1':\n case 'binary':\n return asciiWrite(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 const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let 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\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const 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 let res = ''\n let 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 let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; 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 const 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 const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\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 =\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 let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\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 let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\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 =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\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.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\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 let val = this[offset]\n let mul = 1\n let 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 let i = byteLength\n let mul = 1\n let 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 offset = offset >>> 0\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 offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\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 offset = offset >>> 0\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.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let 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 =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let 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 =\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 this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\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 this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\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 this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\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 this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let 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 const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let 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 (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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\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 this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\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 this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\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 value = +value\n offset = offset >>> 0\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 value = +value\n offset = offset >>> 0\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 (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\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('Index out of range')\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 const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\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 (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 if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\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 let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().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 utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let 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 const byteArray = []\n for (let 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 let c, hi, lo\n const byteArray = []\n for (let 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 let i\n for (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\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","// 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\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\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.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\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 setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n if ((a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n for (i of a.entries())\n if (!equal(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if ((a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar 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\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/**\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT 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 OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n return { value: false };\n}\n\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n}\n\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\n\nIterator.prototype.toString = function toString () {\n return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n}\n\nfunction iteratorDone() {\n return { value: undefined, done: true };\n}\n\nfunction hasIterator(maybeIterable) {\n if (Array.isArray(maybeIterable)) {\n // IE11 trick as it does not support `Symbol.iterator`\n return true;\n }\n\n return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nfunction isEntriesIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.entries;\n}\n\nfunction isKeysIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.keys;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n}\n\nvar Seq = /*@__PURE__*/(function (Collection) {\n function Seq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection ) Seq.__proto__ = Collection;\n Seq.prototype = Object.create( Collection && Collection.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === null || value === undefined\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (\n isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n}\n\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n}\n\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return isEntriesIterable(value)\n ? seq.fromEntrySeq()\n : isKeysIterable(value)\n ? seq.toSetSeq()\n : seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n}\n\nvar imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n if (o == null) {\n return hashNullish(o);\n }\n\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n\n var v = valueOf(o);\n\n if (v == null) {\n return hashNullish(v);\n }\n\n switch (typeof v) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return v ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(v);\n case 'string':\n return v.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(v)\n : hashString(v);\n case 'object':\n case 'function':\n return hashJSObj(v);\n case 'symbol':\n return hashSymbol(v);\n default:\n if (typeof v.toString === 'function') {\n return hashString(v.toString());\n }\n throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n }\n}\n\nfunction hashNullish(nullish) {\n return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n}\n\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n}\n\nfunction hashSymbol(sym) {\n var hashed = symbolMap[sym];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = nextHash();\n\n symbolMap[sym] = hashed;\n\n return hashed;\n}\n\nfunction hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = nextHash();\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function () {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = (function () {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n}\n\nfunction valueOf(obj) {\n return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'\n ? obj.valueOf(obj)\n : obj;\n}\n\nfunction nextHash() {\n var nextHash = ++_objHashUID;\n if (_objHashUID & 0x40000000) {\n _objHashUID = 0;\n }\n return nextHash;\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\n\nvar symbolMap = Object.create(null);\n\nvar _objHashUID = 0;\n\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;\n ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;\n ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;\n ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;\n FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function () {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function (type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n var this$1$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function (type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&\n fn(v, iterations++, this$1$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries\n .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })\n .forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function (fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function (type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(\n null,\n steps.map(function (s) { return s.value; })\n )\n );\n });\n };\n return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\n\nfunction collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n}\n\nfunction makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n}\n\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n}\n\nfunction invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n}\n\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isPlainObject(value) {\n // The base prototype's toString deals with Argument objects and native namespaces like Math\n if (\n !value ||\n typeof value !== 'object' ||\n toString.call(value) !== '[object Object]'\n ) {\n return false;\n }\n\n var proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n\n // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n var parentProto = proto;\n var nextProto = Object.getPrototypeOf(proto);\n while (nextProto !== null) {\n parentProto = nextProto;\n nextProto = Object.getPrototypeOf(parentProto);\n }\n return parentProto === proto;\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObject(value))\n );\n}\n\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\n\nfunction has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n}\n\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n}\n\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\n\nfunction updateIn$1(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n}\n\nfunction setIn$1(collection, keyPath, value) {\n return updateIn$1(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn(keyPath, v) {\n return setIn$1(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n return updateIn$1(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\n\nfunction update$1(collection, key, notSetValue, updater) {\n return updateIn$1(collection, [key], notSetValue, updater);\n}\n\nfunction update(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update$1(this, key, notSetValue, updater);\n}\n\nfunction updateIn(keyPath, notSetValue, updater) {\n return updateIn$1(this, keyPath, notSetValue, updater);\n}\n\nfunction merge$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\n\nfunction merge(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection(sources[i]).forEach(mergeItem);\n }\n return merged;\n}\n\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) &&\n isDataStructure(newValue) &&\n areMergeable(oldValue, newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n}\n\n/**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\nfunction areMergeable(oldDataStructure, newDataStructure) {\n var oldSeq = Seq(oldDataStructure);\n var newSeq = Seq(newDataStructure);\n // This logic assumes that a sequence can only fall into one of the three\n // categories mentioned above (since there's no `isSetLike()` method).\n return (\n isIndexed(oldSeq) === isIndexed(newSeq) &&\n isKeyed(oldSeq) === isKeyed(newSeq)\n );\n}\n\nfunction mergeDeep() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\nfunction mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n}\n\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n return this.__altered;\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection) {\n function Map(value) {\n return value === null || value === undefined\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection ) Map.__proto__ = KeyedCollection;\n Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, this$1$1));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update;\nMapPrototype.updateIn = updateIn;\nMapPrototype.merge = MapPrototype.concat = merge$1;\nMapPrototype.mergeWith = mergeWith$1;\nMapPrototype.mergeDeep = mergeDeep;\nMapPrototype.mergeDeepWith = mergeDeepWith;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function (result, arr) {\n return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =\n function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n };\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =\n function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n };\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator ) MapIterator.__proto__ = Iterator;\n MapIterator.prototype = Object.create( Iterator && Iterator.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n}\n\nfunction makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n}\n\nfunction isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection) {\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection ) List.__proto__ = IndexedCollection;\n List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update;\nListPrototype.updateIn = updateIn;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function (result, arr) {\n return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\n\nvar EMPTY_LIST;\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n}\n\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map) {\n function OrderedMap(value) {\n return value === null || value === undefined\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map ) OrderedMap.__proto__ = Map;\n OrderedMap.prototype = Object.create( Map && Map.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n this.__altered = true;\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n omap.__altered = false;\n return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n omap.__altered = true;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection) {\n function Stack(value) {\n return value === null || value === undefined\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;\n Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function (result, arr) {\n return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n}\n\nfunction mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\n\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection) {\n function Set(value) {\n return value === null || value === undefined\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection ) Set.__proto__ = SetCollection;\n Set.prototype = Object.create( SetCollection && SetCollection.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n // keep track if the set is altered by the map function\n var didChanges = false;\n\n var newMap = updateSet(\n this,\n this._map.mapEntries(function (ref) {\n var v = ref[1];\n\n var mapped = mapper.call(context, v, v, this$1$1);\n\n if (mapped !== v) {\n didChanges = true;\n }\n\n return [mapped, mapped];\n }, context)\n );\n\n return didChanges ? newMap : this;\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function (result, arr) {\n return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq ) Range.__proto__ = IndexedSeq;\n Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nfunction getIn$1(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n}\n\nfunction getIn(searchKeyPath, notSetValue) {\n return getIn$1(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn$1(collection, keyPath) {\n return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn(searchKeyPath) {\n return hasIn$1(this, searchKeyPath);\n}\n\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq().map(this.__toStringMapper).join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq().reverse().first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })\n .flip()\n );\n },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n this.size === Infinity ||\n (this.size !== undefined && index > this.size)\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n});\n\nvar SetCollectionPrototype = SetCollection.prototype;\nSetCollectionPrototype.has = CollectionPrototype.includes;\nSetCollectionPrototype.contains = SetCollectionPrototype.includes;\nSetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollectionPrototype);\nmixin(IndexedSeq, IndexedCollectionPrototype);\nmixin(SetSeq, SetCollectionPrototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n}\n\nfunction keyMapper(v, k) {\n return k;\n}\n\nfunction entryMapper(v, k) {\n return [k, v];\n}\n\nfunction not(predicate) {\n return function () {\n return !predicate.apply(this, arguments);\n };\n}\n\nfunction neg(predicate) {\n return function () {\n return -predicate.apply(this, arguments);\n };\n}\n\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n}\n\nfunction hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set) {\n function OrderedSet(value) {\n return value === null || value === undefined\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set ) OrderedSet.__proto__ = Set;\n OrderedSet.prototype = Object.create( Set && Set.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n}\n\nfunction throwOnInvalidDefaultValues(defaultValues) {\n if (isRecord(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'\n );\n }\n\n if (isImmutable(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'\n );\n }\n\n if (defaultValues === null || typeof defaultValues !== 'object') {\n throw new Error(\n 'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'\n );\n }\n}\n\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n throwOnInvalidDefaultValues(defaultValues);\n\n var RecordType = function Record(values) {\n var this$1$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n });\n });\n return this;\n };\n\n var RecordTypePrototype = (RecordType.prototype =\n Object.create(RecordPrototype));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n return (\n this === other || (other && recordSeq(this).equals(recordSeq(other)))\n );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge$1;\nRecordPrototype.mergeWith = mergeWith$1;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep;\nRecordPrototype.mergeDeepWith = mergeDeepWith;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn;\nRecordPrototype.update = update;\nRecordPrototype.updateIn = updateIn;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\n\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function () {\n return this.get(name);\n },\n set: function (value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;\n Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n if (\n typeof value !== 'string' &&\n !isImmutable(value) &&\n (isArrayLike(value) || hasIterator(value) || isPlainObject(value))\n ) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n}\n\nfunction defaultConverter(k, v) {\n // Effectively the opposite of \"Collection.toSeq()\"\n return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n}\n\nvar version = \"4.0.0\";\n\nvar Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isPlainObject: isPlainObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn$1,\n has: has,\n hasIn: hasIn$1,\n merge: merge,\n mergeDeep: mergeDeep$1,\n mergeWith: mergeWith,\n mergeDeepWith: mergeDeepWith$1,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn$1,\n update: update$1,\n updateIn: updateIn$1,\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport default Immutable;\nexport { Collection, Iterable, List, Map, OrderedMap, OrderedSet, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn$1 as getIn, has, hasIn$1 as hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep$1 as mergeDeep, mergeDeepWith$1 as mergeDeepWith, mergeWith, remove, removeIn, set, setIn$1 as setIn, update$1 as update, updateIn$1 as updateIn, version };\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (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 };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (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","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n","/*global Buffer*/\n// Named constants with unique integer values\nvar C = {};\n// Tokens\nvar LEFT_BRACE = C.LEFT_BRACE = 0x1;\nvar RIGHT_BRACE = C.RIGHT_BRACE = 0x2;\nvar LEFT_BRACKET = C.LEFT_BRACKET = 0x3;\nvar RIGHT_BRACKET = C.RIGHT_BRACKET = 0x4;\nvar COLON = C.COLON = 0x5;\nvar COMMA = C.COMMA = 0x6;\nvar TRUE = C.TRUE = 0x7;\nvar FALSE = C.FALSE = 0x8;\nvar NULL = C.NULL = 0x9;\nvar STRING = C.STRING = 0xa;\nvar NUMBER = C.NUMBER = 0xb;\n// Tokenizer States\nvar START = C.START = 0x11;\nvar STOP = C.STOP = 0x12;\nvar TRUE1 = C.TRUE1 = 0x21;\nvar TRUE2 = C.TRUE2 = 0x22;\nvar TRUE3 = C.TRUE3 = 0x23;\nvar FALSE1 = C.FALSE1 = 0x31;\nvar FALSE2 = C.FALSE2 = 0x32;\nvar FALSE3 = C.FALSE3 = 0x33;\nvar FALSE4 = C.FALSE4 = 0x34;\nvar NULL1 = C.NULL1 = 0x41;\nvar NULL2 = C.NULL2 = 0x42;\nvar NULL3 = C.NULL3 = 0x43;\nvar NUMBER1 = C.NUMBER1 = 0x51;\nvar NUMBER3 = C.NUMBER3 = 0x53;\nvar STRING1 = C.STRING1 = 0x61;\nvar STRING2 = C.STRING2 = 0x62;\nvar STRING3 = C.STRING3 = 0x63;\nvar STRING4 = C.STRING4 = 0x64;\nvar STRING5 = C.STRING5 = 0x65;\nvar STRING6 = C.STRING6 = 0x66;\n// Parser States\nvar VALUE = C.VALUE = 0x71;\nvar KEY = C.KEY = 0x72;\n// Parser Modes\nvar OBJECT = C.OBJECT = 0x81;\nvar ARRAY = C.ARRAY = 0x82;\n// Character constants\nvar BACK_SLASH = \"\\\\\".charCodeAt(0);\nvar FORWARD_SLASH = \"\\/\".charCodeAt(0);\nvar BACKSPACE = \"\\b\".charCodeAt(0);\nvar FORM_FEED = \"\\f\".charCodeAt(0);\nvar NEWLINE = \"\\n\".charCodeAt(0);\nvar CARRIAGE_RETURN = \"\\r\".charCodeAt(0);\nvar TAB = \"\\t\".charCodeAt(0);\n\nvar STRING_BUFFER_SIZE = 64 * 1024;\n\nfunction Parser() {\n this.tState = START;\n this.value = undefined;\n\n this.string = undefined; // string data\n this.stringBuffer = Buffer.alloc ? Buffer.alloc(STRING_BUFFER_SIZE) : new Buffer(STRING_BUFFER_SIZE);\n this.stringBufferOffset = 0;\n this.unicode = undefined; // unicode escapes\n this.highSurrogate = undefined;\n\n this.key = undefined;\n this.mode = undefined;\n this.stack = [];\n this.state = VALUE;\n this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n this.temp_buffs = { \"2\": new Buffer(2), \"3\": new Buffer(3), \"4\": new Buffer(4) }; // for rebuilding chars split before boundary is reached\n\n // Stream offset\n this.offset = -1;\n}\n\n// Slow code to string converter (only used when throwing syntax errors)\nParser.toknam = function (code) {\n var keys = Object.keys(C);\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n if (C[key] === code) { return key; }\n }\n return code && (\"0x\" + code.toString(16));\n};\n\nvar proto = Parser.prototype;\nproto.onError = function (err) { throw err; };\nproto.charError = function (buffer, i) {\n this.tState = STOP;\n this.onError(new Error(\"Unexpected \" + JSON.stringify(String.fromCharCode(buffer[i])) + \" at position \" + i + \" in state \" + Parser.toknam(this.tState)));\n};\nproto.appendStringChar = function (char) {\n if (this.stringBufferOffset >= STRING_BUFFER_SIZE) {\n this.string += this.stringBuffer.toString('utf8');\n this.stringBufferOffset = 0;\n }\n\n this.stringBuffer[this.stringBufferOffset++] = char;\n};\nproto.appendStringBuf = function (buf, start, end) {\n var size = buf.length;\n if (typeof start === 'number') {\n if (typeof end === 'number') {\n if (end < 0) {\n // adding a negative end decreeses the size\n size = buf.length - start + end;\n } else {\n size = end - start;\n }\n } else {\n size = buf.length - start;\n }\n }\n\n if (size < 0) {\n size = 0;\n }\n\n if (this.stringBufferOffset + size > STRING_BUFFER_SIZE) {\n this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset);\n this.stringBufferOffset = 0;\n }\n\n buf.copy(this.stringBuffer, this.stringBufferOffset, start, end);\n this.stringBufferOffset += size;\n};\nproto.write = function (buffer) {\n if (typeof buffer === \"string\") buffer = new Buffer(buffer);\n var n;\n for (var i = 0, l = buffer.length; i < l; i++) {\n if (this.tState === START){\n n = buffer[i];\n this.offset++;\n if(n === 0x7b){ this.onToken(LEFT_BRACE, \"{\"); // {\n }else if(n === 0x7d){ this.onToken(RIGHT_BRACE, \"}\"); // }\n }else if(n === 0x5b){ this.onToken(LEFT_BRACKET, \"[\"); // [\n }else if(n === 0x5d){ this.onToken(RIGHT_BRACKET, \"]\"); // ]\n }else if(n === 0x3a){ this.onToken(COLON, \":\"); // :\n }else if(n === 0x2c){ this.onToken(COMMA, \",\"); // ,\n }else if(n === 0x74){ this.tState = TRUE1; // t\n }else if(n === 0x66){ this.tState = FALSE1; // f\n }else if(n === 0x6e){ this.tState = NULL1; // n\n }else if(n === 0x22){ // \"\n this.string = \"\";\n this.stringBufferOffset = 0;\n this.tState = STRING1;\n }else if(n === 0x2d){ this.string = \"-\"; this.tState = NUMBER1; // -\n }else{\n if (n >= 0x30 && n < 0x40) { // 1-9\n this.string = String.fromCharCode(n); this.tState = NUMBER3;\n } else if (n === 0x20 || n === 0x09 || n === 0x0a || n === 0x0d) {\n // whitespace\n } else {\n return this.charError(buffer, i);\n }\n }\n }else if (this.tState === STRING1){ // After open quote\n n = buffer[i]; // get current byte from buffer\n // check for carry over of a multi byte char split between data chunks\n // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n if (this.bytes_remaining > 0) {\n for (var j = 0; j < this.bytes_remaining; j++) {\n this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = buffer[j];\n }\n\n this.appendStringBuf(this.temp_buffs[this.bytes_in_sequence]);\n this.bytes_in_sequence = this.bytes_remaining = 0;\n i = i + j - 1;\n } else if (this.bytes_remaining === 0 && n >= 128) { // else if no remainder bytes carried over, parse multi byte (>=128) chars one at a time\n if (n <= 193 || n > 244) {\n return this.onError(new Error(\"Invalid UTF-8 character at position \" + i + \" in state \" + Parser.toknam(this.tState)));\n }\n if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2;\n if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3;\n if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4;\n if ((this.bytes_in_sequence + i) > buffer.length) { // if bytes needed to complete char fall outside buffer length, we have a boundary split\n for (var k = 0; k <= (buffer.length - 1 - i); k++) {\n this.temp_buffs[this.bytes_in_sequence][k] = buffer[i + k]; // fill temp buffer of correct size with bytes available in this chunk\n }\n this.bytes_remaining = (i + this.bytes_in_sequence) - buffer.length;\n i = buffer.length - 1;\n } else {\n this.appendStringBuf(buffer, i, i + this.bytes_in_sequence);\n i = i + this.bytes_in_sequence - 1;\n }\n } else if (n === 0x22) {\n this.tState = START;\n this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset);\n this.stringBufferOffset = 0;\n this.onToken(STRING, this.string);\n this.offset += Buffer.byteLength(this.string, 'utf8') + 1;\n this.string = undefined;\n }\n else if (n === 0x5c) {\n this.tState = STRING2;\n }\n else if (n >= 0x20) { this.appendStringChar(n); }\n else {\n return this.charError(buffer, i);\n }\n }else if (this.tState === STRING2){ // After backslash\n n = buffer[i];\n if(n === 0x22){ this.appendStringChar(n); this.tState = STRING1;\n }else if(n === 0x5c){ this.appendStringChar(BACK_SLASH); this.tState = STRING1;\n }else if(n === 0x2f){ this.appendStringChar(FORWARD_SLASH); this.tState = STRING1;\n }else if(n === 0x62){ this.appendStringChar(BACKSPACE); this.tState = STRING1;\n }else if(n === 0x66){ this.appendStringChar(FORM_FEED); this.tState = STRING1;\n }else if(n === 0x6e){ this.appendStringChar(NEWLINE); this.tState = STRING1;\n }else if(n === 0x72){ this.appendStringChar(CARRIAGE_RETURN); this.tState = STRING1;\n }else if(n === 0x74){ this.appendStringChar(TAB); this.tState = STRING1;\n }else if(n === 0x75){ this.unicode = \"\"; this.tState = STRING3;\n }else{\n return this.charError(buffer, i);\n }\n }else if (this.tState === STRING3 || this.tState === STRING4 || this.tState === STRING5 || this.tState === STRING6){ // unicode hex codes\n n = buffer[i];\n // 0-9 A-F a-f\n if ((n >= 0x30 && n < 0x40) || (n > 0x40 && n <= 0x46) || (n > 0x60 && n <= 0x66)) {\n this.unicode += String.fromCharCode(n);\n if (this.tState++ === STRING6) {\n var intVal = parseInt(this.unicode, 16);\n this.unicode = undefined;\n if (this.highSurrogate !== undefined && intVal >= 0xDC00 && intVal < (0xDFFF + 1)) { //<56320,57343> - lowSurrogate\n this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate, intVal)));\n this.highSurrogate = undefined;\n } else if (this.highSurrogate === undefined && intVal >= 0xD800 && intVal < (0xDBFF + 1)) { //<55296,56319> - highSurrogate\n this.highSurrogate = intVal;\n } else {\n if (this.highSurrogate !== undefined) {\n this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate)));\n this.highSurrogate = undefined;\n }\n this.appendStringBuf(new Buffer(String.fromCharCode(intVal)));\n }\n this.tState = STRING1;\n }\n } else {\n return this.charError(buffer, i);\n }\n } else if (this.tState === NUMBER1 || this.tState === NUMBER3) {\n n = buffer[i];\n\n switch (n) {\n case 0x30: // 0\n case 0x31: // 1\n case 0x32: // 2\n case 0x33: // 3\n case 0x34: // 4\n case 0x35: // 5\n case 0x36: // 6\n case 0x37: // 7\n case 0x38: // 8\n case 0x39: // 9\n case 0x2e: // .\n case 0x65: // e\n case 0x45: // E\n case 0x2b: // +\n case 0x2d: // -\n this.string += String.fromCharCode(n);\n this.tState = NUMBER3;\n break;\n default:\n this.tState = START;\n var result = Number(this.string);\n\n if (isNaN(result)){\n return this.charError(buffer, i);\n }\n\n if ((this.string.match(/[0-9]+/) == this.string) && (result.toString() != this.string)) {\n // Long string of digits which is an ID string and not valid and/or safe JavaScript integer Number\n this.onToken(STRING, this.string);\n } else {\n this.onToken(NUMBER, result);\n }\n\n this.offset += this.string.length - 1;\n this.string = undefined;\n i--;\n break;\n }\n }else if (this.tState === TRUE1){ // r\n if (buffer[i] === 0x72) { this.tState = TRUE2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === TRUE2){ // u\n if (buffer[i] === 0x75) { this.tState = TRUE3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === TRUE3){ // e\n if (buffer[i] === 0x65) { this.tState = START; this.onToken(TRUE, true); this.offset+= 3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE1){ // a\n if (buffer[i] === 0x61) { this.tState = FALSE2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE2){ // l\n if (buffer[i] === 0x6c) { this.tState = FALSE3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE3){ // s\n if (buffer[i] === 0x73) { this.tState = FALSE4; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === FALSE4){ // e\n if (buffer[i] === 0x65) { this.tState = START; this.onToken(FALSE, false); this.offset+= 4; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL1){ // u\n if (buffer[i] === 0x75) { this.tState = NULL2; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL2){ // l\n if (buffer[i] === 0x6c) { this.tState = NULL3; }\n else { return this.charError(buffer, i); }\n }else if (this.tState === NULL3){ // l\n if (buffer[i] === 0x6c) { this.tState = START; this.onToken(NULL, null); this.offset += 3; }\n else { return this.charError(buffer, i); }\n }\n }\n};\nproto.onToken = function (token, value) {\n // Override this to get events\n};\n\nproto.parseError = function (token, value) {\n this.tState = STOP;\n this.onError(new Error(\"Unexpected \" + Parser.toknam(token) + (value ? (\"(\" + JSON.stringify(value) + \")\") : \"\") + \" in state \" + Parser.toknam(this.state)));\n};\nproto.push = function () {\n this.stack.push({value: this.value, key: this.key, mode: this.mode});\n};\nproto.pop = function () {\n var value = this.value;\n var parent = this.stack.pop();\n this.value = parent.value;\n this.key = parent.key;\n this.mode = parent.mode;\n this.emit(value);\n if (!this.mode) { this.state = VALUE; }\n};\nproto.emit = function (value) {\n if (this.mode) { this.state = COMMA; }\n this.onValue(value);\n};\nproto.onValue = function (value) {\n // Override me\n};\nproto.onToken = function (token, value) {\n if(this.state === VALUE){\n if(token === STRING || token === NUMBER || token === TRUE || token === FALSE || token === NULL){\n if (this.value) {\n this.value[this.key] = value;\n }\n this.emit(value);\n }else if(token === LEFT_BRACE){\n this.push();\n if (this.value) {\n this.value = this.value[this.key] = {};\n } else {\n this.value = {};\n }\n this.key = undefined;\n this.state = KEY;\n this.mode = OBJECT;\n }else if(token === LEFT_BRACKET){\n this.push();\n if (this.value) {\n this.value = this.value[this.key] = [];\n } else {\n this.value = [];\n }\n this.key = 0;\n this.mode = ARRAY;\n this.state = VALUE;\n }else if(token === RIGHT_BRACE){\n if (this.mode === OBJECT) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else if(token === RIGHT_BRACKET){\n if (this.mode === ARRAY) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else{\n return this.parseError(token, value);\n }\n }else if(this.state === KEY){\n if (token === STRING) {\n this.key = value;\n this.state = COLON;\n } else if (token === RIGHT_BRACE) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else if(this.state === COLON){\n if (token === COLON) { this.state = VALUE; }\n else { return this.parseError(token, value); }\n }else if(this.state === COMMA){\n if (token === COMMA) {\n if (this.mode === ARRAY) { this.key++; this.state = VALUE; }\n else if (this.mode === OBJECT) { this.state = KEY; }\n\n } else if (token === RIGHT_BRACKET && this.mode === ARRAY || token === RIGHT_BRACE && this.mode === OBJECT) {\n this.pop();\n } else {\n return this.parseError(token, value);\n }\n }else{\n return this.parseError(token, value);\n }\n};\n\nParser.C = C;\n\nmodule.exports = Parser;\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","// 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","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/BlankNode\"), exports);\n__exportStar(require(\"./lib/DataFactory\"), exports);\n__exportStar(require(\"./lib/DefaultGraph\"), exports);\n__exportStar(require(\"./lib/Literal\"), exports);\n__exportStar(require(\"./lib/NamedNode\"), exports);\n__exportStar(require(\"./lib/Quad\"), exports);\n__exportStar(require(\"./lib/Variable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNode = void 0;\n/**\n * A term that represents an RDF blank node with a label.\n */\nclass BlankNode {\n constructor(value) {\n this.termType = 'BlankNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNode = BlankNode;\n//# sourceMappingURL=BlankNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataFactory = void 0;\nconst BlankNode_1 = require(\"./BlankNode\");\nconst DefaultGraph_1 = require(\"./DefaultGraph\");\nconst Literal_1 = require(\"./Literal\");\nconst NamedNode_1 = require(\"./NamedNode\");\nconst Quad_1 = require(\"./Quad\");\nconst Variable_1 = require(\"./Variable\");\nlet dataFactoryCounter = 0;\n/**\n * A factory for instantiating RDF terms and quads.\n */\nclass DataFactory {\n constructor(options) {\n this.blankNodeCounter = 0;\n options = options || {};\n this.blankNodePrefix = options.blankNodePrefix || `df_${dataFactoryCounter++}_`;\n }\n /**\n * @param value The IRI for the named node.\n * @return A new instance of NamedNode.\n * @see NamedNode\n */\n namedNode(value) {\n return new NamedNode_1.NamedNode(value);\n }\n /**\n * @param value The optional blank node identifier.\n * @return A new instance of BlankNode.\n * If the `value` parameter is undefined a new identifier\n * for the blank node is generated for each call.\n * @see BlankNode\n */\n blankNode(value) {\n return new BlankNode_1.BlankNode(value || `${this.blankNodePrefix}${this.blankNodeCounter++}`);\n }\n /**\n * @param value The literal value.\n * @param languageOrDatatype The optional language or datatype.\n * If `languageOrDatatype` is a NamedNode,\n * then it is used for the value of `NamedNode.datatype`.\n * Otherwise `languageOrDatatype` is used for the value\n * of `NamedNode.language`.\n * @return A new instance of Literal.\n * @see Literal\n */\n literal(value, languageOrDatatype) {\n return new Literal_1.Literal(value, languageOrDatatype);\n }\n /**\n * This method is optional.\n * @param value The variable name\n * @return A new instance of Variable.\n * @see Variable\n */\n variable(value) {\n return new Variable_1.Variable(value);\n }\n /**\n * @return An instance of DefaultGraph.\n */\n defaultGraph() {\n return DefaultGraph_1.DefaultGraph.INSTANCE;\n }\n /**\n * @param subject The quad subject term.\n * @param predicate The quad predicate term.\n * @param object The quad object term.\n * @param graph The quad graph term.\n * @return A new instance of Quad.\n * @see Quad\n */\n quad(subject, predicate, object, graph) {\n return new Quad_1.Quad(subject, predicate, object, graph || this.defaultGraph());\n }\n /**\n * Create a deep copy of the given term using this data factory.\n * @param original An RDF term.\n * @return A deep copy of the given term.\n */\n fromTerm(original) {\n // TODO: remove nasty any casts when this TS bug has been fixed:\n // https://github.com/microsoft/TypeScript/issues/26933\n switch (original.termType) {\n case 'NamedNode':\n return this.namedNode(original.value);\n case 'BlankNode':\n return this.blankNode(original.value);\n case 'Literal':\n if (original.language) {\n return this.literal(original.value, original.language);\n }\n if (!original.datatype.equals(Literal_1.Literal.XSD_STRING)) {\n return this.literal(original.value, this.fromTerm(original.datatype));\n }\n return this.literal(original.value);\n case 'Variable':\n return this.variable(original.value);\n case 'DefaultGraph':\n return this.defaultGraph();\n case 'Quad':\n return this.quad(this.fromTerm(original.subject), this.fromTerm(original.predicate), this.fromTerm(original.object), this.fromTerm(original.graph));\n }\n }\n /**\n * Create a deep copy of the given quad using this data factory.\n * @param original An RDF quad.\n * @return A deep copy of the given quad.\n */\n fromQuad(original) {\n return this.fromTerm(original);\n }\n /**\n * Reset the internal blank node counter.\n */\n resetBlankNodeCounter() {\n this.blankNodeCounter = 0;\n }\n}\nexports.DataFactory = DataFactory;\n//# sourceMappingURL=DataFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultGraph = void 0;\n/**\n * A singleton term instance that represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass DefaultGraph {\n constructor() {\n this.termType = 'DefaultGraph';\n this.value = '';\n // Private constructor\n }\n equals(other) {\n return !!other && other.termType === 'DefaultGraph';\n }\n}\nexports.DefaultGraph = DefaultGraph;\nDefaultGraph.INSTANCE = new DefaultGraph();\n//# sourceMappingURL=DefaultGraph.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Literal = void 0;\nconst NamedNode_1 = require(\"./NamedNode\");\n/**\n * A term that represents an RDF literal, containing a string with an optional language tag or datatype.\n */\nclass Literal {\n constructor(value, languageOrDatatype) {\n this.termType = 'Literal';\n this.value = value;\n if (typeof languageOrDatatype === 'string') {\n this.language = languageOrDatatype;\n this.datatype = Literal.RDF_LANGUAGE_STRING;\n }\n else if (languageOrDatatype) {\n this.language = '';\n this.datatype = languageOrDatatype;\n }\n else {\n this.language = '';\n this.datatype = Literal.XSD_STRING;\n }\n }\n equals(other) {\n return !!other && other.termType === 'Literal' && other.value === this.value &&\n other.language === this.language && other.datatype.equals(this.datatype);\n }\n}\nexports.Literal = Literal;\nLiteral.RDF_LANGUAGE_STRING = new NamedNode_1.NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');\nLiteral.XSD_STRING = new NamedNode_1.NamedNode('http://www.w3.org/2001/XMLSchema#string');\n//# sourceMappingURL=Literal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NamedNode = void 0;\n/**\n * A term that contains an IRI.\n */\nclass NamedNode {\n constructor(value) {\n this.termType = 'NamedNode';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'NamedNode' && other.value === this.value;\n }\n}\nexports.NamedNode = NamedNode;\n//# sourceMappingURL=NamedNode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Quad = void 0;\n/**\n * An instance of DefaultGraph represents the default graph.\n * It's only allowed to assign a DefaultGraph to the .graph property of a Quad.\n */\nclass Quad {\n constructor(subject, predicate, object, graph) {\n this.termType = 'Quad';\n this.value = '';\n this.subject = subject;\n this.predicate = predicate;\n this.object = object;\n this.graph = graph;\n }\n equals(other) {\n // `|| !other.termType` is for backwards-compatibility with old factories without RDF* support.\n return !!other && (other.termType === 'Quad' || !other.termType) &&\n this.subject.equals(other.subject) &&\n this.predicate.equals(other.predicate) &&\n this.object.equals(other.object) &&\n this.graph.equals(other.graph);\n }\n}\nexports.Quad = Quad;\n//# sourceMappingURL=Quad.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Variable = void 0;\n/**\n * A term that represents a variable.\n */\nclass Variable {\n constructor(value) {\n this.termType = 'Variable';\n this.value = value;\n }\n equals(other) {\n return !!other && other.termType === 'Variable' && other.value === this.value;\n }\n}\nexports.Variable = Variable;\n//# sourceMappingURL=Variable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/RdfIsomorphic\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTermGrounded = exports.termToSignature = exports.quadToSignature = exports.sha1hex = exports.hashTerm = exports.hashTerms = exports.getGraphBlankNodes = exports.uniqGraph = exports.deindexGraph = exports.indexGraph = exports.getQuadsWithoutBlankNodes = exports.getQuadsWithBlankNodes = exports.hasValue = exports.hashValues = exports.getBijectionInner = exports.getBijection = exports.isomorphic = void 0;\nconst hash_js_1 = require(\"hash.js\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\n/**\n * Determines if the two given graphs are isomorphic.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {boolean} If the two given graphs are isomorphic.\n */\nfunction isomorphic(graphA, graphB) {\n return !!getBijection(graphA, graphB);\n}\nexports.isomorphic = isomorphic;\n/**\n * Calculate a hash of graphA blank nodes to graphB blank nodes.\n * This represents a bijection from graphA's blank nodes to graphB's blank nodes.\n *\n * @param {Quad[]} graphA An array of quads, order is not important.\n * @param {Quad[]} graphB An array of quads, order is not important.\n * @return {IBijection} A hash representing a bijection, or null if none could be found.\n */\nfunction getBijection(graphA, graphB) {\n // Check if all (non-blanknode-containing) quads in the two graphs are equal.\n // We do this by creating a hash-based index for both graphs.\n const nonBlankIndexA = indexGraph(getQuadsWithoutBlankNodes(graphA));\n const nonBlankIndexB = indexGraph(getQuadsWithoutBlankNodes(graphB));\n if (Object.keys(nonBlankIndexA).length !== Object.keys(nonBlankIndexB).length) {\n return null;\n }\n for (const key in nonBlankIndexA) {\n if (nonBlankIndexA[key] !== nonBlankIndexB[key]) {\n return null;\n }\n }\n // Pre-process data that needs to be present in each iteration of getBijectionInner.\n const blankQuadsA = uniqGraph(getQuadsWithBlankNodes(graphA));\n const blankQuadsB = uniqGraph(getQuadsWithBlankNodes(graphB));\n const blankNodesA = getGraphBlankNodes(graphA);\n const blankNodesB = getGraphBlankNodes(graphB);\n return getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB);\n}\nexports.getBijection = getBijection;\nfunction getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, groundedHashesA, groundedHashesB) {\n if (!groundedHashesA) {\n groundedHashesA = {};\n }\n if (!groundedHashesB) {\n groundedHashesB = {};\n }\n // Hash every term based on the signature of the quads if appears in.\n const [hashesA, ungroundedHashesA] = hashTerms(blankQuadsA, blankNodesA, groundedHashesA);\n const [hashesB, ungroundedHashesB] = hashTerms(blankQuadsB, blankNodesB, groundedHashesB);\n // Break quickly if a graph contains a grounded node that is not contained in the other graph.\n if (Object.keys(hashesA).length !== Object.keys(hashesB).length) {\n return null;\n }\n for (const hashKeyA in hashesA) {\n if (!hasValue(hashesB, hashesA[hashKeyA])) {\n return null;\n }\n }\n // Map the blank nodes from graph A to the blank nodes of graph B using the created hashes.\n // Grounded hashes will also be equal, but not needed here, we will need them in the next recursion\n // (as we only recurse on grounded nodes).\n let bijection = {};\n for (const blankNodeA of blankNodesA) {\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n const blankNodeAHash = ungroundedHashesA[blankNodeAString];\n for (const blankNodeBString in ungroundedHashesB) {\n if (ungroundedHashesB[blankNodeBString] === blankNodeAHash) {\n bijection[blankNodeAString] = blankNodeBString;\n delete ungroundedHashesB[blankNodeBString];\n break;\n }\n }\n }\n // Check if all nodes from graph A and B are present in the bijection,\n // if not, speculatively mark pairs with matching ungrounded hashes as bijected, and recurse.\n if (!arraysEqual(Object.keys(bijection).sort(), blankNodesA.map(rdf_string_1.termToString).sort())\n || !arraysEqual(hashValues(bijection).sort(), blankNodesB.map(rdf_string_1.termToString).sort())) {\n // I have not yet been able to find any pathological cases where this code is reached.\n // This may be removable, but let's wait until someone proves that.\n bijection = null;\n for (const blankNodeA of blankNodesA) {\n // Only replace ungrounded node hashes\n const blankNodeAString = rdf_string_1.termToString(blankNodeA);\n if (!hashesA[blankNodeAString]) {\n for (const blankNodeB of blankNodesB) {\n // Only replace ungrounded node hashes\n const blankNodeBString = rdf_string_1.termToString(blankNodeB);\n if (!hashesB[blankNodeBString]) {\n if (ungroundedHashesA[blankNodeAString] === ungroundedHashesB[blankNodeBString]) {\n const hash = sha1hex(blankNodeAString);\n bijection = getBijectionInner(blankQuadsA, blankQuadsB, blankNodesA, blankNodesB, Object.assign(Object.assign({}, hashesA), { [blankNodeAString]: hash }), Object.assign(Object.assign({}, hashesB), { [blankNodeBString]: hash }));\n }\n }\n }\n }\n }\n }\n return bijection;\n}\nexports.getBijectionInner = getBijectionInner;\nfunction arraysEqual(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = array1.length; i--;) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Get all values from the given hash\n * @param hash A hash.\n * @return {any[]} The array of values.\n */\nfunction hashValues(hash) {\n const arr = [];\n for (const e in hash) {\n arr.push(hash[e]);\n }\n return arr;\n}\nexports.hashValues = hashValues;\n/**\n * Check if the given hash contains the given value.\n * @param hash A hash.\n * @param {string} value A value.\n * @return {boolean} If it contains the value.\n */\nfunction hasValue(hash, value) {\n for (const hashValue in hash) {\n if (hash[hashValue] === value) {\n return true;\n }\n }\n return false;\n}\nexports.hasValue = hasValue;\n/**\n * Get all quads with blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads with blank nodes\n */\nfunction getQuadsWithBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.someTerms(quad, (value) => {\n return value.termType === 'BlankNode'\n || (value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithBlankNodes = getQuadsWithBlankNodes;\n/**\n * Get all quads without blank nodes.\n * @param {Quad[]} graph An array of quads.\n * @return {Quad[]} An array of quads without blank nodes\n */\nfunction getQuadsWithoutBlankNodes(graph) {\n return graph.filter((quad) => rdf_terms_1.everyTerms(quad, (value) => {\n return value.termType !== 'BlankNode'\n && !(value.termType === 'Quad' && rdf_terms_1.getTermsNested(value).some(term => term.termType === 'BlankNode'));\n }));\n}\nexports.getQuadsWithoutBlankNodes = getQuadsWithoutBlankNodes;\n/**\n * Create a hash-based index of the given graph.\n * @param {Quad[]} graph An array of quads, the order does not matter.\n * @return {{[p: string]: boolean}} A hash-based datastructure representing the graph.\n */\nfunction indexGraph(graph) {\n const index = {};\n for (const quad of graph) {\n index[JSON.stringify(rdf_string_1.quadToStringQuad(quad))] = true;\n }\n return index;\n}\nexports.indexGraph = indexGraph;\n/**\n * Create a graph from the given hash-based index.\n * @param {{[p: string]: boolean}} indexedGraph A hash-based datastructure representing the graph.\n * @return {Quad[]} An array of quads, the order does not matter.\n */\nfunction deindexGraph(indexedGraph) {\n return Object.keys(indexedGraph).map((str) => rdf_string_1.stringQuadToQuad(JSON.parse(str)));\n}\nexports.deindexGraph = deindexGraph;\n/**\n * Unique-ify the given RDF graph based on strict equality.\n * The output graph will consist of new quad and term instances.\n * @param {Quad[]} graph An input graph.\n * @return {Quad[]} The input graph without duplicates.\n */\nfunction uniqGraph(graph) {\n return deindexGraph(indexGraph(graph));\n}\nexports.uniqGraph = uniqGraph;\n/**\n * Find all blank nodes in the given graph.\n * @param {Quad[]} graph An array of quads.\n * @return {BlankNode[]} A list of (unique) blank nodes.\n */\nfunction getGraphBlankNodes(graph) {\n return rdf_terms_1.uniqTerms(graph.map((quad) => rdf_terms_1.getBlankNodes(rdf_terms_1.getTermsNested(quad)))\n .reduce((acc, val) => acc.concat(val), []));\n}\nexports.getGraphBlankNodes = getGraphBlankNodes;\n/**\n * Create term hashes for the given set of quads and blank node terms.\n *\n * @param {Quad[]} quads A set of quads.\n * @param {Term[]} terms Blank node terms.\n * @param {ITermHash} groundedHashes Grounded term hashes that are used to create more specific signatures\n * of other terms, because they are based on non-blank nodes and grounded blank nodes.\n * @return {[ITermHash]} A tuple of grounded and ungrounded hashes.\n */\nfunction hashTerms(quads, terms, groundedHashes) {\n const hashes = Object.assign({}, groundedHashes);\n const ungroundedHashes = {};\n let hashNeeded = true;\n // Iteratively mark nodes as grounded.\n // If a node is marked as grounded, then the next iteration can lead to new grounded states\n while (hashNeeded) {\n const initialGroundedNodesCount = Object.keys(hashes).length;\n for (const term of terms) {\n const termString = rdf_string_1.termToString(term);\n if (!hashes[termString]) {\n const [grounded, hash] = hashTerm(term, quads, hashes);\n if (grounded) {\n hashes[termString] = hash;\n }\n ungroundedHashes[termString] = hash;\n }\n }\n // All terms that have a unique hash at this point can be marked as grounded\n const uniques = {};\n for (const termKey in ungroundedHashes) {\n const hash = ungroundedHashes[termKey];\n if (uniques[hash] === undefined) {\n uniques[hash] = termKey;\n }\n else {\n uniques[hash] = false;\n }\n }\n for (const hash in uniques) {\n const value = uniques[hash];\n if (value) {\n hashes[value] = hash;\n }\n }\n // Check if the loop needs to terminate\n hashNeeded = initialGroundedNodesCount !== Object.keys(hashes).length;\n }\n return [hashes, ungroundedHashes];\n}\nexports.hashTerms = hashTerms;\n/**\n * Generate a hash for the given term based on the signature of the quads it appears in.\n *\n * Signatures are made up of grounded terms in quads that are associated with a term,\n * i.e., everything except for ungrounded blank nodes.\n * The hash is created by hashing a sorted list of each quad's signature,\n * where each quad signature is a concatenation of the signature of all grounded terms.\n *\n * Terms are considered grounded if they are a member in the given hash AND if they are not the given term.\n *\n * @param {Term} term The term to get the hash around.\n * @param {Quad[]} quads The quads to include in the hashing.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {[boolean , string]} A tuple indicating if the given term is grounded in all the given quads, and the hash.\n */\nfunction hashTerm(term, quads, hashes) {\n const quadSignatures = [];\n let grounded = true;\n for (const quad of quads) {\n const terms = rdf_terms_1.getTermsNested(quad);\n if (terms.some((quadTerm) => quadTerm.equals(term))) {\n quadSignatures.push(quadToSignature(quad, hashes, term));\n for (const quadTerm of terms) {\n if (!isTermGrounded(quadTerm, hashes) && !quadTerm.equals(term)) {\n grounded = false;\n }\n }\n }\n }\n const hash = sha1hex(quadSignatures.sort().join(''));\n return [grounded, hash];\n}\nexports.hashTerm = hashTerm;\n/**\n * Create a hash using sha1 as a hex digest.\n * @param {string | Buffer | NodeJS.TypedArray | DataView} data Something to hash.\n * @return {string} A hash string.\n */\nfunction sha1hex(data) {\n return hash_js_1.sha1().update(data).digest('hex');\n}\nexports.sha1hex = sha1hex;\n/**\n * Convert the given quad to a string signature so that it can be used in the hash structure.\n * @param {Quad} quad A quad.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} term A target term to compare with.\n * @return {string} A string signature.\n */\nfunction quadToSignature(quad, hashes, term) {\n return rdf_terms_1.getTerms(quad).map((quadTerm) => termToSignature(quadTerm, hashes, term)).join('|');\n}\nexports.quadToSignature = quadToSignature;\n/**\n * Convert the given term to a string signature so that it can be used in the hash structure.\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @param {Term} target A target term to compare with.\n * @return {string} A string signature.\n */\nfunction termToSignature(term, hashes, target) {\n if (term.equals(target)) {\n return '@self';\n }\n else if (term.termType === 'BlankNode') {\n return hashes[rdf_string_1.termToString(term)] || '@blank';\n }\n else if (term.termType === 'Quad') {\n return `<${quadToSignature(term, hashes, target)}>`;\n }\n else {\n return rdf_string_1.termToString(term);\n }\n}\nexports.termToSignature = termToSignature;\n/**\n * Check if a term is grounded.\n *\n * A term is grounded if it is not a blank node\n * or if it included in the given hash of grounded nodes.\n *\n * @param {Term} term A term.\n * @param {ITermHash} hashes A grounded term hash object.\n * @return {boolean} If the given term is grounded.\n */\nfunction isTermGrounded(term, hashes) {\n return (term.termType !== 'BlankNode'\n && !(term.termType === 'Quad' && rdf_terms_1.getTermsNested(term).some(subTerm => !isTermGrounded(subTerm, hashes)))) || !!hashes[rdf_string_1.termToString(term)];\n}\nexports.isTermGrounded = isTermGrounded;\n//# sourceMappingURL=RdfIsomorphic.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSupportedJavaScriptPrimitives = exports.getSupportedRdfDatatypes = exports.getTermRaw = exports.toRdf = exports.fromRdf = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst handler_1 = require(\"./lib/handler\");\nconst Translator_1 = require(\"./lib/Translator\");\n__exportStar(require(\"./lib/handler\"), exports);\n__exportStar(require(\"./lib/ITypeHandler\"), exports);\n__exportStar(require(\"./lib/Translator\"), exports);\nconst DF = new rdf_data_factory_1.DataFactory();\n// Construct translator with built-in handlers\nconst translator = new Translator_1.Translator();\ntranslator.registerHandler(new handler_1.TypeHandlerString(), handler_1.TypeHandlerString.TYPES.map(t => DF.namedNode(t)), ['string']);\ntranslator.registerHandler(new handler_1.TypeHandlerBoolean(), [handler_1.TypeHandlerBoolean.TYPE].map(t => DF.namedNode(t)), ['boolean']);\ntranslator.registerHandler(new handler_1.TypeHandlerNumberDouble(), handler_1.TypeHandlerNumberDouble.TYPES.map(t => DF.namedNode(t)), ['number']);\ntranslator.registerHandler(new handler_1.TypeHandlerNumberInteger(), handler_1.TypeHandlerNumberInteger.TYPES.map(t => DF.namedNode(t)), ['number']);\ntranslator.registerHandler(new handler_1.TypeHandlerDate(), handler_1.TypeHandlerDate.TYPES.map(t => DF.namedNode(t)), ['object']);\n/**\n * Convert the given RDF literal to an JavaScript primitive.\n * @param {Literal} literal An RDF literal value.\n * @param {boolean} validate If the literal value should be validated against the datatype.\n * @return {any} A JavaScript primitive value.\n */\nfunction fromRdf(literal, validate) {\n return translator.fromRdf(literal, validate);\n}\nexports.fromRdf = fromRdf;\n/**\n * Convert the given JavaScript primitive to an RDF literal.\n * @param value A JavaScript primitive value.\n * @param options Options for RDF conversion. May also be a data factory.\n * @return {Literal} An RDF literal value.\n */\nfunction toRdf(value, options) {\n // Backwards-compatibility to accept data factory as option arg.\n if (options && 'namedNode' in options) {\n options = { dataFactory: options };\n }\n // Set default data factory\n options = options || {};\n if (options && !options.dataFactory) {\n options.dataFactory = DF;\n }\n return translator.toRdf(value, options);\n}\nexports.toRdf = toRdf;\n/**\n * Get the raw value of the given term.\n * If it is a literal, {@link fromRdf} will be called.\n * Otherwise {@link .value} will be returned.\n * @param {Term} term Any RDF term.\n * @param {boolean} validate If the literal value should be validated against the datatype.\n * @return {any} A JavaScript primitive value.\n */\nfunction getTermRaw(term, validate) {\n if (term.termType === 'Literal') {\n return fromRdf(term, validate);\n }\n return term.value;\n}\nexports.getTermRaw = getTermRaw;\n/**\n * @return {NamedNode[]} An array of all supported RDF datatypes.\n */\nfunction getSupportedRdfDatatypes() {\n return translator.getSupportedRdfDatatypes();\n}\nexports.getSupportedRdfDatatypes = getSupportedRdfDatatypes;\n/**\n * @return {string[]} An array of all supported JavaScript types.\n */\nfunction getSupportedJavaScriptPrimitives() {\n return translator.getSupportedJavaScriptPrimitives();\n}\nexports.getSupportedJavaScriptPrimitives = getSupportedJavaScriptPrimitives;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ITypeHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Translator = void 0;\n/**\n * Translates between an RDF literal and a JavaScript primitive.\n */\nclass Translator {\n constructor() {\n this.supportedRdfDatatypes = [];\n this.fromRdfHandlers = {};\n this.toRdfHandlers = {};\n }\n static incorrectRdfDataType(literal) {\n throw new Error(`Invalid RDF ${literal.datatype.value} value: '${literal.value}'`);\n }\n registerHandler(handler, rdfDatatypes, javaScriptDataTypes) {\n for (const rdfDatatype of rdfDatatypes) {\n this.supportedRdfDatatypes.push(rdfDatatype);\n this.fromRdfHandlers[rdfDatatype.value] = handler;\n }\n for (const javaScriptDataType of javaScriptDataTypes) {\n let existingToRdfHandlers = this.toRdfHandlers[javaScriptDataType];\n if (!existingToRdfHandlers) {\n this.toRdfHandlers[javaScriptDataType] = existingToRdfHandlers = [];\n }\n existingToRdfHandlers.push(handler);\n }\n }\n fromRdf(literal, validate) {\n const handler = this.fromRdfHandlers[literal.datatype.value];\n if (handler) {\n return handler.fromRdf(literal, validate);\n }\n else {\n return literal.value;\n }\n }\n toRdf(value, options) {\n const handlers = this.toRdfHandlers[typeof value];\n if (handlers) {\n for (const handler of handlers) {\n const ret = handler.toRdf(value, options);\n if (ret) {\n return ret;\n }\n }\n }\n throw new Error(`Invalid JavaScript value: '${value}'`);\n }\n /**\n * @return {NamedNode[]} An array of all supported RDF datatypes.\n */\n getSupportedRdfDatatypes() {\n return this.supportedRdfDatatypes;\n }\n /**\n * @return {string[]} An array of all supported JavaScript types.\n */\n getSupportedJavaScriptPrimitives() {\n return Object.keys(this.toRdfHandlers);\n }\n}\nexports.Translator = Translator;\n//# sourceMappingURL=Translator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerBoolean = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates booleans.\n */\nclass TypeHandlerBoolean {\n fromRdf(literal, validate) {\n switch (literal.value) {\n case 'true':\n return true;\n case 'false':\n return false;\n case '1':\n return true;\n case '0':\n return false;\n }\n if (validate) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n return false;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(value ? 'true' : 'false', datatype || dataFactory.namedNode(TypeHandlerBoolean.TYPE));\n }\n}\nexports.TypeHandlerBoolean = TypeHandlerBoolean;\nTypeHandlerBoolean.TYPE = 'http://www.w3.org/2001/XMLSchema#boolean';\n//# sourceMappingURL=TypeHandlerBoolean.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerDate = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates dates.\n */\nclass TypeHandlerDate {\n fromRdf(literal, validate) {\n if (validate && !literal.value.match(TypeHandlerDate\n .VALIDATORS[literal.datatype.value.substr(33, literal.datatype.value.length)])) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n switch (literal.datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#gDay':\n return new Date(0, 0, parseInt(literal.value, 10));\n case 'http://www.w3.org/2001/XMLSchema#gMonthDay':\n const partsMonthDay = literal.value.split('-');\n return new Date(0, parseInt(partsMonthDay[0], 10) - 1, parseInt(partsMonthDay[1], 10));\n case 'http://www.w3.org/2001/XMLSchema#gYear':\n return new Date(literal.value + '-01-01');\n case 'http://www.w3.org/2001/XMLSchema#gYearMonth':\n return new Date(literal.value + '-01');\n default:\n return new Date(literal.value);\n }\n }\n toRdf(value, { datatype, dataFactory }) {\n datatype = datatype || dataFactory.namedNode(TypeHandlerDate.TYPES[0]);\n // Assume date values\n if (!(value instanceof Date)) {\n return null;\n }\n const date = value;\n let valueString;\n switch (datatype.value) {\n case 'http://www.w3.org/2001/XMLSchema#gDay':\n valueString = String(date.getUTCDate());\n break;\n case 'http://www.w3.org/2001/XMLSchema#gMonthDay':\n valueString = (date.getUTCMonth() + 1) + '-' + date.getUTCDate();\n break;\n case 'http://www.w3.org/2001/XMLSchema#gYear':\n valueString = String(date.getUTCFullYear());\n break;\n case 'http://www.w3.org/2001/XMLSchema#gYearMonth':\n valueString = date.getUTCFullYear() + '-' + (date.getUTCMonth() + 1);\n break;\n case 'http://www.w3.org/2001/XMLSchema#date':\n valueString = date.toISOString().replace(/T.*$/, '');\n break;\n default:\n valueString = date.toISOString();\n }\n return dataFactory.literal(valueString, datatype);\n }\n}\nexports.TypeHandlerDate = TypeHandlerDate;\nTypeHandlerDate.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#dateTime',\n 'http://www.w3.org/2001/XMLSchema#date',\n 'http://www.w3.org/2001/XMLSchema#gDay',\n 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n 'http://www.w3.org/2001/XMLSchema#gYear',\n 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n];\nTypeHandlerDate.VALIDATORS = {\n date: /^[0-9]+-[0-9][0-9]-[0-9][0-9]Z?$/,\n dateTime: /^[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][0-9][0-9])?((Z?)|([\\+-][0-9][0-9]:[0-9][0-9]))$/,\n gDay: /^[0-9]+$/,\n gMonthDay: /^[0-9]+-[0-9][0-9]$/,\n gYear: /^[0-9]+$/,\n gYearMonth: /^[0-9]+-[0-9][0-9]$/,\n};\n//# sourceMappingURL=TypeHandlerDate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerNumberDouble = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates double numbers.\n */\nclass TypeHandlerNumberDouble {\n fromRdf(literal, validate) {\n const parsed = parseFloat(literal.value);\n if (validate) {\n if (isNaN(parsed)) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n // TODO: validate more\n }\n return parsed;\n }\n toRdf(value, { datatype, dataFactory }) {\n datatype = datatype || dataFactory.namedNode(TypeHandlerNumberDouble.TYPES[0]);\n if (isNaN(value)) {\n return dataFactory.literal('NaN', datatype);\n }\n if (!isFinite(value)) {\n return dataFactory.literal(value > 0 ? 'INF' : '-INF', datatype);\n }\n if (value % 1 === 0) {\n return null;\n }\n return dataFactory.literal(value.toExponential(15).replace(/(\\d)0*e\\+?/, '$1E'), datatype);\n }\n}\nexports.TypeHandlerNumberDouble = TypeHandlerNumberDouble;\nTypeHandlerNumberDouble.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#double',\n 'http://www.w3.org/2001/XMLSchema#decimal',\n 'http://www.w3.org/2001/XMLSchema#float',\n];\n//# sourceMappingURL=TypeHandlerNumberDouble.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerNumberInteger = void 0;\nconst Translator_1 = require(\"../Translator\");\n/**\n * Translates integer numbers.\n */\nclass TypeHandlerNumberInteger {\n fromRdf(literal, validate) {\n const parsed = parseInt(literal.value, 10);\n if (validate) {\n if (isNaN(parsed) || literal.value.indexOf('.') >= 0) {\n Translator_1.Translator.incorrectRdfDataType(literal);\n }\n // TODO: validate more\n }\n return parsed;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(String(value), datatype\n || (value <= TypeHandlerNumberInteger.MAX_INT && value >= TypeHandlerNumberInteger.MIN_INT\n ? dataFactory.namedNode(TypeHandlerNumberInteger.TYPES[0])\n : dataFactory.namedNode(TypeHandlerNumberInteger.TYPES[1])));\n }\n}\nexports.TypeHandlerNumberInteger = TypeHandlerNumberInteger;\nTypeHandlerNumberInteger.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#integer',\n 'http://www.w3.org/2001/XMLSchema#long',\n 'http://www.w3.org/2001/XMLSchema#int',\n 'http://www.w3.org/2001/XMLSchema#byte',\n 'http://www.w3.org/2001/XMLSchema#short',\n 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n];\nTypeHandlerNumberInteger.MAX_INT = 2147483647;\nTypeHandlerNumberInteger.MIN_INT = -2147483648;\n//# sourceMappingURL=TypeHandlerNumberInteger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHandlerString = void 0;\n/**\n * Translates strings.\n */\nclass TypeHandlerString {\n fromRdf(literal) {\n return literal.value;\n }\n toRdf(value, { datatype, dataFactory }) {\n return dataFactory.literal(value, datatype);\n }\n}\nexports.TypeHandlerString = TypeHandlerString;\nTypeHandlerString.TYPES = [\n 'http://www.w3.org/2001/XMLSchema#string',\n 'http://www.w3.org/2001/XMLSchema#normalizedString',\n 'http://www.w3.org/2001/XMLSchema#anyURI',\n 'http://www.w3.org/2001/XMLSchema#base64Binary',\n 'http://www.w3.org/2001/XMLSchema#language',\n 'http://www.w3.org/2001/XMLSchema#Name',\n 'http://www.w3.org/2001/XMLSchema#NCName',\n 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n 'http://www.w3.org/2001/XMLSchema#token',\n 'http://www.w3.org/2001/XMLSchema#hexBinary',\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n 'http://www.w3.org/2001/XMLSchema#time',\n 'http://www.w3.org/2001/XMLSchema#duration',\n];\n//# sourceMappingURL=TypeHandlerString.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./TypeHandlerBoolean\"), exports);\n__exportStar(require(\"./TypeHandlerDate\"), exports);\n__exportStar(require(\"./TypeHandlerNumberDouble\"), exports);\n__exportStar(require(\"./TypeHandlerNumberInteger\"), exports);\n__exportStar(require(\"./TypeHandlerString\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.termToString = exports.stringToTerm = exports.stringQuadToQuad = exports.quadToStringQuad = exports.getLiteralValue = exports.getLiteralType = exports.getLiteralLanguage = void 0;\nconst TermUtil_1 = require(\"./lib/TermUtil\");\nObject.defineProperty(exports, \"getLiteralLanguage\", { enumerable: true, get: function () { return TermUtil_1.getLiteralLanguage; } });\nObject.defineProperty(exports, \"getLiteralType\", { enumerable: true, get: function () { return TermUtil_1.getLiteralType; } });\nObject.defineProperty(exports, \"getLiteralValue\", { enumerable: true, get: function () { return TermUtil_1.getLiteralValue; } });\nObject.defineProperty(exports, \"quadToStringQuad\", { enumerable: true, get: function () { return TermUtil_1.quadToStringQuad; } });\nObject.defineProperty(exports, \"stringQuadToQuad\", { enumerable: true, get: function () { return TermUtil_1.stringQuadToQuad; } });\nObject.defineProperty(exports, \"stringToTerm\", { enumerable: true, get: function () { return TermUtil_1.stringToTerm; } });\nObject.defineProperty(exports, \"termToString\", { enumerable: true, get: function () { return TermUtil_1.termToString; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringQuadToQuad = exports.quadToStringQuad = exports.stringToTerm = exports.getLiteralLanguage = exports.getLiteralType = exports.getLiteralValue = exports.termToString = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst FACTORY = new rdf_data_factory_1.DataFactory();\n/**\n * Utility methods for converting between string-based RDF representations and RDFJS objects.\n *\n * RDF Terms are represented as follows:\n * * Blank nodes: '_:myBlankNode'\n * * Variables: '?myVariable'\n * * Literals: '\"myString\"', '\"myLanguageString\"@en-us', '\"3\"^^xsd:number'\n * * URIs: 'http://example.org'\n *\n * Quads/triples are represented as hashes with 'subject', 'predicate', 'object' and 'graph' (optional)\n * as keys, and string-based RDF terms as values.\n */\n/**\n * Convert an RDFJS term to a string-based representation.\n * @param {RDF.Term} term An RDFJS term.\n * @return {string} A string-based term representation.\n */\nfunction termToString(term) {\n // TODO: remove nasty any casts when this TS bug has been fixed: https://github.com/microsoft/TypeScript/issues/26933\n if (!term) {\n return undefined;\n }\n switch (term.termType) {\n case 'NamedNode': return term.value;\n case 'BlankNode': return ('_:' + term.value);\n case 'Literal':\n const literalValue = term;\n return ('\"' + literalValue.value + '\"' +\n (literalValue.datatype &&\n literalValue.datatype.value !== 'http://www.w3.org/2001/XMLSchema#string' &&\n literalValue.datatype.value !== 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' ?\n '^^' + literalValue.datatype.value : '') +\n (literalValue.language ? '@' + literalValue.language : ''));\n case 'Quad': return `<<${termToString(term.subject)} ${termToString(term.predicate)} ${termToString(term.object)}${term.graph.termType === 'DefaultGraph' ? '' : ' ' + termToString(term.graph)}>>`;\n case 'Variable': return ('?' + term.value);\n case 'DefaultGraph': return term.value;\n }\n}\nexports.termToString = termToString;\n/**\n * Get the string value of a literal.\n * @param {string} literalValue An RDF literal enclosed by '\"'.\n * @return {string} The literal value inside the '\"'.\n */\nfunction getLiteralValue(literalValue) {\n const match = /^\"([^]*)\"/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1];\n}\nexports.getLiteralValue = getLiteralValue;\n/**\n * Get the datatype of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The datatype of the literal.\n */\nfunction getLiteralType(literalValue) {\n const match = /^\"[^]*\"(?:\\^\\^([^\"]+)|(@)[^@\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] || (match[2]\n ? 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' : 'http://www.w3.org/2001/XMLSchema#string');\n}\nexports.getLiteralType = getLiteralType;\n/**\n * Get the language of the given literal.\n * @param {string} literalValue An RDF literal.\n * @return {string} The language of the literal.\n */\nfunction getLiteralLanguage(literalValue) {\n const match = /^\"[^]*\"(?:@([^@\"]+)|\\^\\^[^\"]+)?$/.exec(literalValue);\n if (!match) {\n throw new Error(literalValue + ' is not a literal');\n }\n return match[1] ? match[1].toLowerCase() : '';\n}\nexports.getLiteralLanguage = getLiteralLanguage;\n/**\n * Transform a string-based RDF term to an RDFJS term.\n * @param {string} value A string-based RDF-term.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {RDF.Term} An RDF-JS term.\n */\nfunction stringToTerm(value, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n if (!value || !value.length) {\n return dataFactory.defaultGraph();\n }\n switch (value[0]) {\n case '_': return dataFactory.blankNode(value.substr(2));\n case '?':\n if (!dataFactory.variable) {\n throw new Error(`Missing 'variable()' method on the given DataFactory`);\n }\n return dataFactory.variable(value.substr(1));\n case '\"':\n const language = getLiteralLanguage(value);\n const type = dataFactory.namedNode(getLiteralType(value));\n return dataFactory.literal(getLiteralValue(value), language || type);\n case '<':\n default:\n if (value.startsWith('<<') && value.endsWith('>>')) {\n // Iterate character-by-character to detect spaces that are *not* wrapped in <<>>\n const terms = value.slice(2, -2);\n const stringTerms = [];\n let ignoreTags = 0;\n let lastIndex = 0;\n for (let i = 0; i < terms.length; i++) {\n const char = terms[i];\n if (char === '<')\n ignoreTags++;\n if (char === '>') {\n if (ignoreTags === 0) {\n throw new Error('Found closing tag without opening tag in ' + value);\n }\n else {\n ignoreTags--;\n }\n }\n if (char === ' ' && ignoreTags === 0) {\n stringTerms.push(terms.slice(lastIndex, i));\n lastIndex = i + 1;\n }\n }\n if (ignoreTags !== 0) {\n throw new Error('Found opening tag without closing tag in ' + value);\n }\n stringTerms.push(terms.slice(lastIndex, terms.length));\n // We require 3 or 4 components\n if (stringTerms.length !== 3 && stringTerms.length !== 4) {\n throw new Error('Nested quad syntax error ' + value);\n }\n return dataFactory.quad(stringToTerm(stringTerms[0]), stringToTerm(stringTerms[1]), stringToTerm(stringTerms[2]), stringTerms[3] ? stringToTerm(stringTerms[3]) : undefined);\n }\n return dataFactory.namedNode(value);\n }\n}\nexports.stringToTerm = stringToTerm;\n/**\n * Convert an RDFJS quad to a string-based quad representation.\n * @param {Quad} q An RDFJS quad.\n * @return {IStringQuad} A hash with string-based quad terms.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction quadToStringQuad(q) {\n // tslint:disable:object-literal-sort-keys\n return {\n subject: termToString(q.subject),\n predicate: termToString(q.predicate),\n object: termToString(q.object),\n graph: termToString(q.graph),\n };\n // tslint:enable:object-literal-sort-keys\n}\nexports.quadToStringQuad = quadToStringQuad;\n/**\n * Convert a string-based quad representation to an RDFJS quad.\n * @param {IStringQuad} stringQuad A hash with string-based quad terms.\n * @param {RDF.DataFactory} dataFactory An optional datafactory to create terms with.\n * @return {Q} An RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction stringQuadToQuad(stringQuad, dataFactory) {\n dataFactory = dataFactory || FACTORY;\n return dataFactory.quad(stringToTerm(stringQuad.subject, dataFactory), stringToTerm(stringQuad.predicate, dataFactory), stringToTerm(stringQuad.object, dataFactory), stringToTerm(stringQuad.graph, dataFactory));\n}\nexports.stringQuadToQuad = stringQuadToQuad;\n//# sourceMappingURL=TermUtil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TRIPLE_TERM_NAMES = exports.someTerms = exports.everyTerms = exports.reduceTerms = exports.mapTerms = exports.filterQuadTermNames = exports.filterTerms = exports.forEachTerms = exports.collectNamedTerms = exports.getNamedTerms = exports.getTermsNested = exports.getTerms = exports.QUAD_TERM_NAMES = exports.matchPatternComplete = exports.matchPattern = exports.getDefaultGraphs = exports.getVariables = exports.getLiterals = exports.getBlankNodes = exports.getNamedNodes = exports.getTermsOfType = exports.uniqTerms = exports.TERM_TYPES = void 0;\nconst QuadTermUtil_1 = require(\"./lib/QuadTermUtil\");\nObject.defineProperty(exports, \"collectNamedTerms\", { enumerable: true, get: function () { return QuadTermUtil_1.collectNamedTerms; } });\nObject.defineProperty(exports, \"everyTerms\", { enumerable: true, get: function () { return QuadTermUtil_1.everyTerms; } });\nObject.defineProperty(exports, \"filterQuadTermNames\", { enumerable: true, get: function () { return QuadTermUtil_1.filterQuadTermNames; } });\nObject.defineProperty(exports, \"filterTerms\", { enumerable: true, get: function () { return QuadTermUtil_1.filterTerms; } });\nObject.defineProperty(exports, \"forEachTerms\", { enumerable: true, get: function () { return QuadTermUtil_1.forEachTerms; } });\nObject.defineProperty(exports, \"getNamedTerms\", { enumerable: true, get: function () { return QuadTermUtil_1.getNamedTerms; } });\nObject.defineProperty(exports, \"getTerms\", { enumerable: true, get: function () { return QuadTermUtil_1.getTerms; } });\nObject.defineProperty(exports, \"getTermsNested\", { enumerable: true, get: function () { return QuadTermUtil_1.getTermsNested; } });\nObject.defineProperty(exports, \"mapTerms\", { enumerable: true, get: function () { return QuadTermUtil_1.mapTerms; } });\nObject.defineProperty(exports, \"matchPattern\", { enumerable: true, get: function () { return QuadTermUtil_1.matchPattern; } });\nObject.defineProperty(exports, \"matchPatternComplete\", { enumerable: true, get: function () { return QuadTermUtil_1.matchPatternComplete; } });\nObject.defineProperty(exports, \"QUAD_TERM_NAMES\", { enumerable: true, get: function () { return QuadTermUtil_1.QUAD_TERM_NAMES; } });\nObject.defineProperty(exports, \"reduceTerms\", { enumerable: true, get: function () { return QuadTermUtil_1.reduceTerms; } });\nObject.defineProperty(exports, \"someTerms\", { enumerable: true, get: function () { return QuadTermUtil_1.someTerms; } });\nObject.defineProperty(exports, \"TRIPLE_TERM_NAMES\", { enumerable: true, get: function () { return QuadTermUtil_1.TRIPLE_TERM_NAMES; } });\nconst TermUtil_1 = require(\"./lib/TermUtil\");\nObject.defineProperty(exports, \"getBlankNodes\", { enumerable: true, get: function () { return TermUtil_1.getBlankNodes; } });\nObject.defineProperty(exports, \"getDefaultGraphs\", { enumerable: true, get: function () { return TermUtil_1.getDefaultGraphs; } });\nObject.defineProperty(exports, \"getLiterals\", { enumerable: true, get: function () { return TermUtil_1.getLiterals; } });\nObject.defineProperty(exports, \"getNamedNodes\", { enumerable: true, get: function () { return TermUtil_1.getNamedNodes; } });\nObject.defineProperty(exports, \"getTermsOfType\", { enumerable: true, get: function () { return TermUtil_1.getTermsOfType; } });\nObject.defineProperty(exports, \"getVariables\", { enumerable: true, get: function () { return TermUtil_1.getVariables; } });\nObject.defineProperty(exports, \"TERM_TYPES\", { enumerable: true, get: function () { return TermUtil_1.TERM_TYPES; } });\nObject.defineProperty(exports, \"uniqTerms\", { enumerable: true, get: function () { return TermUtil_1.uniqTerms; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchPatternMappings = exports.matchPatternComplete = exports.matchPattern = exports.matchTerm = exports.someTerms = exports.everyTerms = exports.reduceTerms = exports.mapTerms = exports.filterQuadTermNames = exports.filterTerms = exports.forEachTerms = exports.collectNamedTerms = exports.getNamedTerms = exports.getTermsNested = exports.getTerms = exports.TRIPLE_TERM_NAMES = exports.QUAD_TERM_NAMES = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * All available quad term names.\n * @type {[string , string , string , string]}\n */\nexports.QUAD_TERM_NAMES = ['subject', 'predicate', 'object', 'graph'];\n/**\n * All available triple term names.\n * @type {[string , string , string]}\n */\nexports.TRIPLE_TERM_NAMES = ['subject', 'predicate', 'object'];\n/**\n * Get all terms in the given quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the quad.\n */\nfunction getTerms(quad, ignoreDefaultGraph) {\n if (ignoreDefaultGraph && quad.graph.termType === 'DefaultGraph') {\n return [quad.subject, quad.predicate, quad.object];\n }\n return [quad.subject, quad.predicate, quad.object, quad.graph];\n}\nexports.getTerms = getTerms;\n/**\n * Get all terms in the given quad, including nested quads.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {boolean} ignoreDefaultGraph If true and the quad has the default graph as graph,\n * this term will not be returned in the array.\n * (default: false)\n * @return {Term[]} The available terms in the nested quad, excluding quad terms.\n */\nfunction getTermsNested(quad, ignoreDefaultGraph) {\n const terms = [];\n for (const term of getTerms(quad, ignoreDefaultGraph)) {\n if (term.termType === 'Quad') {\n getTermsNested(term, ignoreDefaultGraph).forEach(subTerm => terms.push(subTerm));\n }\n else {\n terms.push(term);\n }\n }\n return terms;\n}\nexports.getTermsNested = getTermsNested;\n/**\n * Convert the given quad to an array of named terms.\n * This is the reverse operation of {@link collectNamedTerms}.\n * @param {BaseQuad} quad An RDFJS quad.\n * @return {INamedTerm[]} An array of named terms.\n */\nfunction getNamedTerms(quad) {\n return [\n { key: 'subject', value: quad.subject },\n { key: 'predicate', value: quad.predicate },\n { key: 'object', value: quad.object },\n { key: 'graph', value: quad.graph },\n ];\n}\nexports.getNamedTerms = getNamedTerms;\n/**\n * Convert an array of named terms to an RDFJS quad.\n * This is the reverse operation of {@link getNamedTerms}.\n * @param {INamedTerm[]} namedTerms An array of named terms.\n * @param {(termName: QuadTermName) => Term} defaultCb An optional callback for when\n * certain terms are not available in the array.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Q} The resulting RDFJS quad.\n * @template Q The type of quad to output, defaults to RDF.Quad.\n */\nfunction collectNamedTerms(namedTerms, defaultCb, dataFactory) {\n const elements = {};\n namedTerms.forEach((namedTerm) => elements[namedTerm.key] = namedTerm.value);\n if (defaultCb) {\n elements.subject = elements.subject || defaultCb('subject');\n elements.predicate = elements.predicate || defaultCb('predicate');\n elements.object = elements.object || defaultCb('object');\n elements.graph = elements.graph || defaultCb('graph');\n }\n return (dataFactory || DF).quad(elements.subject, elements.predicate, elements.object, elements.graph);\n}\nexports.collectNamedTerms = collectNamedTerms;\n/**\n * Iterats over each term.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} cb A callback function.\n */\nfunction forEachTerms(quad, cb) {\n cb(quad.subject, 'subject');\n cb(quad.predicate, 'predicate');\n cb(quad.object, 'object');\n cb(quad.graph, 'graph');\n}\nexports.forEachTerms = forEachTerms;\n/**\n * Get all terms in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName) => boolean} filter A filter callback.\n * @return {Term[]} The list of matching terms.\n */\nfunction filterTerms(quad, filter) {\n const terms = [];\n if (filter(quad.subject, 'subject')) {\n terms.push(quad.subject);\n }\n if (filter(quad.predicate, 'predicate')) {\n terms.push(quad.predicate);\n }\n if (filter(quad.object, 'object')) {\n terms.push(quad.object);\n }\n if (filter(quad.graph, 'graph')) {\n terms.push(quad.graph);\n }\n return terms;\n}\nexports.filterTerms = filterTerms;\n/**\n * Get all quad term names in the given quad that return true on the given filter function.\n * @param {BaseQuad} quad A quad.\n * @param {(value: Term, key: QuadTermName, all: INamedTerm[]) => boolean} filter A filter callback.\n * @return {QuadTermName[]} The list of matching quad term names.\n */\nfunction filterQuadTermNames(quad, filter) {\n const names = [];\n if (filter(quad.subject, 'subject')) {\n names.push('subject');\n }\n if (filter(quad.predicate, 'predicate')) {\n names.push('predicate');\n }\n if (filter(quad.object, 'object')) {\n names.push('object');\n }\n if (filter(quad.graph, 'graph')) {\n names.push('graph');\n }\n return names;\n}\nexports.filterQuadTermNames = filterQuadTermNames;\n/**\n * Map all terms of a quad.\n * @param {Quad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName) => Term} mapper A mapper function.\n * @param {RDF.DataFactory} dataFactory A custom data factory to create quads.\n * @return {Quad} A new RDFJS quad.\n * @template Q The type of quad, defaults to RDF.Quad.\n */\nfunction mapTerms(quad, mapper, dataFactory) {\n return (dataFactory || DF).quad(mapper(quad.subject, 'subject'), mapper(quad.predicate, 'predicate'), mapper(quad.object, 'object'), mapper(quad.graph, 'graph'));\n}\nexports.mapTerms = mapTerms;\n/**\n * Reduce all terms of a quad.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(previousValue: U, currentValue: Term, key: QuadTermName) => U} reducer A reduce function.\n * @param {U} initialValue The initial value.\n * @return {U} The final value.\n */\nfunction reduceTerms(quad, reducer, initialValue) {\n let value = initialValue;\n value = reducer(value, quad.subject, 'subject');\n value = reducer(value, quad.predicate, 'predicate');\n value = reducer(value, quad.object, 'object');\n return reducer(value, quad.graph, 'graph');\n}\nexports.reduceTerms = reduceTerms;\n/**\n * Determines whether all terms satisfy the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If all terms satisfy the specified test.\n */\nfunction everyTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n && checker(quad.predicate, 'predicate')\n && checker(quad.object, 'object')\n && checker(quad.graph, 'graph');\n}\nexports.everyTerms = everyTerms;\n/**\n * Determines whether at least one term satisfies the specified test.\n * @param {BaseQuad} quad An RDFJS quad.\n * @param {(value: Term, key: QuadTermName} checker A checker function.\n * @return {boolean} If at least one term satisfies the specified test.\n */\nfunction someTerms(quad, checker) {\n return checker(quad.subject, 'subject')\n || checker(quad.predicate, 'predicate')\n || checker(quad.object, 'object')\n || checker(quad.graph, 'graph');\n}\nexports.someTerms = someTerms;\n/**\n * Check if the given terms match.\n *\n * At least one of the following must be true:\n * * Term B is undefined.\n * * Term B is a variable.\n * * Term A and B are quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`termB.equals(termA)` return true)\n *\n * @param termA A term.\n * @param termB An optional term.\n */\nfunction matchTerm(termA, termB) {\n return !termB\n || termB.termType === 'Variable'\n || (termB.termType === 'Quad' && termA.termType === 'Quad' && matchPatternComplete(termA, termB))\n || termB.equals(termA);\n}\nexports.matchTerm = matchTerm;\n/**\n * Check if the given quad matches with the given quad terms.\n *\n * Each term must match at least one of the following:\n * * Term is undefined.\n * * Term is a variable.\n * * Quad term and term are both quads, and return true for `matchPatternComplete`.\n * * Quad term and term are equal (`quadTerm.equals(term)` return true)\n *\n * @param {BaseQuad} quad A quad to match with (can not contain variables).\n * @param {Term} subject An optional subject.\n * @param {Term} predicate An optional predicate.\n * @param {Term} object An optional object.\n * @param {Term} graph An optional graph.\n * @return {boolean} If the quad matches with the quad terms.\n */\nfunction matchPattern(quad, subject, predicate, object, graph) {\n return matchTerm(quad.subject, subject)\n && matchTerm(quad.predicate, predicate)\n && matchTerm(quad.object, object)\n && matchTerm(quad.graph, graph);\n}\nexports.matchPattern = matchPattern;\n/**\n * Check if the first quad matches with all terms from the second quad.\n *\n * Each term must match at least one of the following:\n * * Quad2 term is a variable.\n * * Quad1 term and Quad2 term are equal (`term1.equals(term2)` return true)\n *\n * @param {BaseQuad} quad A quad (can not contain variables).\n * @param {BaseQuad} pattern A quad pattern (can contain variables).\n * @return {boolean} If the quad terms match.\n */\nfunction matchPatternComplete(quad, pattern) {\n return matchPattern(quad, pattern.subject, pattern.predicate, pattern.object, pattern.graph);\n}\nexports.matchPatternComplete = matchPatternComplete;\n/**\n * Check if the first quad matches against all terms in the pattern,\n * by taking into account the mappings of the variables.\n * If the same variable occurs multiple times in the pattern,\n * then the corresponding terms in the quad must be equal.\n *\n * Each term in the quad must satisfy the following:\n * * The pattern term is a variable, and all other variables with the same value - map to the same terms in the quad\n * * Both the quad term and pattern term are quads - and they satisfy the same conditions\n * * The pattern and quad terms are equal and not variables or quads\n *\n * @param quad A quad - possibly containing variables\n * @param pattern A pattern - possibly containing variables\n */\nfunction matchPatternMappings(quad, pattern) {\n const mapping = {};\n function match(_pattern, _quad) {\n return everyTerms(_pattern, (term, key) => {\n switch (term.termType) {\n case 'Quad':\n return _quad[key].termType === 'Quad' && match(term, _quad[key]);\n case 'Variable':\n return term.value in mapping ?\n mapping[term.value].equals(_quad[key]) :\n ((mapping[term.value] = _quad[key]) && true);\n default:\n return term.equals(_quad[key]);\n }\n });\n }\n return match(pattern, quad);\n}\nexports.matchPatternMappings = matchPatternMappings;\n//# sourceMappingURL=QuadTermUtil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getQuads = exports.getDefaultGraphs = exports.getVariables = exports.getLiterals = exports.getBlankNodes = exports.getNamedNodes = exports.getTermsOfType = exports.uniqTerms = exports.TERM_TYPES = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * All known term types.\n * @see RDF.Term\n * @type {[string , string , string , string , string, string]}\n */\nexports.TERM_TYPES = ['NamedNode', 'BlankNode', 'Literal', 'Variable', 'DefaultGraph', 'Quad'];\n/*\n * Utility methods for handling RDFJS terms.\n */\n/**\n * Create an array of unique terms from the given array.\n * @param {T[]} terms An array of RDFJS terms.\n * @return {T[]} A new array of unique RDFJS terms.\n */\nfunction uniqTerms(terms) {\n const hash = {};\n return terms.filter(term => {\n const termString = rdf_string_1.termToString(term);\n return !(termString in hash) && (hash[termString] = true);\n });\n}\nexports.uniqTerms = uniqTerms;\n/**\n * Find all terms of the given type in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @param {\"NamedNode\" | \"BlankNode\" | \"Literal\" | \"Variable\" | \"DefaultGraph\" | \"Quad\"} termType A term type.\n * @return {Term[]} A new array with elements from the given array only containing elements of the given type.\n */\nfunction getTermsOfType(terms, termType) {\n return terms.filter((term) => term.termType === termType);\n}\nexports.getTermsOfType = getTermsOfType;\n/**\n * Find all named nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {NamedNode[]} A new array with elements from the given array only containing named nodes.\n */\nfunction getNamedNodes(terms) {\n return getTermsOfType(terms, 'NamedNode');\n}\nexports.getNamedNodes = getNamedNodes;\n/**\n * Find all blank nodes in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BlankNode[]} A new array with elements from the given array only containing blank nodes.\n */\nfunction getBlankNodes(terms) {\n return getTermsOfType(terms, 'BlankNode');\n}\nexports.getBlankNodes = getBlankNodes;\n/**\n * Find all literals in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Literal[]} A new array with elements from the given array only containing literals.\n */\nfunction getLiterals(terms) {\n return getTermsOfType(terms, 'Literal');\n}\nexports.getLiterals = getLiterals;\n/**\n * Find all variables in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {Variable[]} A new array with elements from the given array only containing variables.\n */\nfunction getVariables(terms) {\n return getTermsOfType(terms, 'Variable');\n}\nexports.getVariables = getVariables;\n/**\n * Find all default graphs in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {DefaultGraph[]} A new array with elements from the given array only containing default graphs.\n */\nfunction getDefaultGraphs(terms) {\n return getTermsOfType(terms, 'DefaultGraph');\n}\nexports.getDefaultGraphs = getDefaultGraphs;\n/**\n * Find all quads in the given array.\n * @param {Term[]} terms An array of RDFJS terms.\n * @return {BaseQuad[]} A new array with elements from the given array only containing quads.\n */\nfunction getQuads(terms) {\n return getTermsOfType(terms, 'Quad');\n}\nexports.getQuads = getQuads;\n//# sourceMappingURL=TermUtil.js.map","\n/* global ReadableStream */\n\nmodule.exports = nodeToWeb\nmodule.exports.WEBSTREAM_SUPPORT = typeof ReadableStream !== 'undefined'\n\nfunction nodeToWeb (nodeStream) {\n // Assumes the nodeStream has not ended/closed\n if (!module.exports.WEBSTREAM_SUPPORT) throw new Error('No web ReadableStream support')\n\n var destroyed = false\n var listeners = {}\n\n function start (controller) {\n listeners['data'] = onData\n listeners['end'] = onData\n listeners['end'] = onDestroy\n listeners['close'] = onDestroy\n listeners['error'] = onDestroy\n for (var name in listeners) nodeStream.on(name, listeners[name])\n\n nodeStream.pause()\n\n function onData (chunk) {\n if (destroyed) return\n controller.enqueue(chunk)\n nodeStream.pause()\n }\n\n function onDestroy (err) {\n if (destroyed) return\n destroyed = true\n\n for (var name in listeners) nodeStream.removeListener(name, listeners[name])\n\n if (err) controller.error(err)\n else controller.close()\n }\n }\n\n function pull () {\n if (destroyed) return\n nodeStream.resume()\n }\n\n function cancel () {\n destroyed = true\n\n for (var name in listeners) nodeStream.removeListener(name, listeners[name])\n\n nodeStream.push(null)\n nodeStream.pause()\n if (nodeStream.destroy) nodeStream.destroy()\n else if (nodeStream.close) nodeStream.close()\n }\n\n return new ReadableStream({start: start, pull: pull, cancel: cancel})\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// 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// 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'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\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 Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\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 get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\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 get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\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 get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\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 get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(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 } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// 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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// 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'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\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); // 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\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // 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\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // 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\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // 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\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; // 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\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\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 if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\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 get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\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.\n\n\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\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\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\n if (er) {\n errorOrDestroy(stream, 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) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\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 maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\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 if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\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\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\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 } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // 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\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || 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); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\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 // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\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; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // 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\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 = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\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; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\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.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\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.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\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.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\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\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\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 } // 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\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\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 cleanedUp = true; // 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\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\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', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\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 = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\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 if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\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, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\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\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\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.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\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 stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\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\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\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 get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\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 get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\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 get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\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 get() {\n return this._readableState.length;\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.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\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.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\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\n return -1;\n}","// 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// 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'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\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 Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // 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\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\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}; // 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.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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\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}; // 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.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\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 Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// 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// 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'use strict';\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} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // 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 // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // 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\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // 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\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // 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\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // 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\n this.sync = true; // 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\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\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 value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // 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 // 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 // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\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.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\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 if (typeof cb !== 'function') cb = nop;\n if (state.ending) 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 return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !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 ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\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 get() {\n return this._writableState && this._writableState.getBuffer();\n }\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\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 get() {\n return this._writableState.highWaterMark;\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.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\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\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\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 (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else 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 process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, 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 errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\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 if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\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) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\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} // 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.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\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 var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\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 doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // 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\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 ERR_METHOD_NOT_IMPLEMENTED('_write()'));\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); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\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 get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.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\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\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\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\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 get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\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\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\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\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\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\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\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) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\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\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\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.finalCalled = false;\n this._writableState.prefinished = 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\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","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');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableWebToNodeStream = void 0;\nconst readable_stream_1 = require(\"readable-stream\");\n/**\n * Converts a Web-API stream into Node stream.Readable class\n * Node stream readable: https://nodejs.org/api/stream.html#stream_readable_streams\n * Web API readable-stream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n * Node readable stream: https://nodejs.org/api/stream.html#stream_readable_streams\n */\nclass ReadableWebToNodeStream extends readable_stream_1.Readable {\n /**\n *\n * @param stream Readable​Stream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n */\n constructor(stream) {\n super();\n this.bytesRead = 0;\n this.released = false;\n this.reader = stream.getReader();\n }\n /**\n * Implementation of readable._read(size).\n * When readable._read() is called, if data is available from the resource,\n * the implementation should begin pushing that data into the read queue\n * https://nodejs.org/api/stream.html#stream_readable_read_size_1\n */\n async _read() {\n // Should start pushing data into the queue\n // Read data from the underlying Web-API-readable-stream\n if (this.released) {\n this.push(null); // Signal EOF\n return;\n }\n this.pendingRead = this.reader.read();\n const data = await this.pendingRead;\n // clear the promise before pushing pushing new data to the queue and allow sequential calls to _read()\n delete this.pendingRead;\n if (data.done || this.released) {\n this.push(null); // Signal EOF\n }\n else {\n this.bytesRead += data.value.length;\n this.push(data.value); // Push new data to the queue\n }\n }\n /**\n * If there is no unresolved read call to Web-API Readable​Stream immediately returns;\n * otherwise will wait until the read is resolved.\n */\n async waitForReadToComplete() {\n if (this.pendingRead) {\n await this.pendingRead;\n }\n }\n /**\n * Close wrapper\n */\n async close() {\n await this.syncAndRelease();\n }\n async syncAndRelease() {\n this.released = true;\n await this.waitForReadToComplete();\n await this.reader.releaseLock();\n }\n}\nexports.ReadableWebToNodeStream = ReadableWebToNodeStream;\n//# sourceMappingURL=index.js.map","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* 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\nSafeBuffer.prototype = Object.create(Buffer.prototype)\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","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.toSparqlJs = exports.toSparql = exports.Factory = exports.Algebra = exports.translate = void 0;\nconst sparqlAlgebra_1 = __importDefault(require(\"./lib/sparqlAlgebra\"));\nexports.translate = sparqlAlgebra_1.default;\nconst Algebra = __importStar(require(\"./lib/algebra\"));\nexports.Algebra = Algebra;\nconst factory_1 = __importDefault(require(\"./lib/factory\"));\nexports.Factory = factory_1.default;\nconst sparql_1 = require(\"./lib/sparql\");\nObject.defineProperty(exports, \"toSparql\", { enumerable: true, get: function () { return sparql_1.toSparql; } });\nObject.defineProperty(exports, \"toSparqlJs\", { enumerable: true, get: function () { return sparql_1.toSparqlJs; } });\nconst util_1 = __importDefault(require(\"./lib/util\"));\nexports.Util = util_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expressionTypes = exports.types = void 0;\nvar types;\n(function (types) {\n types[\"ALT\"] = \"alt\";\n types[\"ASK\"] = \"ask\";\n types[\"BGP\"] = \"bgp\";\n types[\"CONSTRUCT\"] = \"construct\";\n types[\"DESCRIBE\"] = \"describe\";\n types[\"DISTINCT\"] = \"distinct\";\n types[\"EXPRESSION\"] = \"expression\";\n types[\"EXTEND\"] = \"extend\";\n types[\"FILTER\"] = \"filter\";\n types[\"FROM\"] = \"from\";\n types[\"GRAPH\"] = \"graph\";\n types[\"GROUP\"] = \"group\";\n types[\"INV\"] = \"inv\";\n types[\"JOIN\"] = \"join\";\n types[\"LEFT_JOIN\"] = \"leftjoin\";\n types[\"LINK\"] = \"link\";\n types[\"MINUS\"] = \"minus\";\n types[\"NOP\"] = \"nop\";\n types[\"NPS\"] = \"nps\";\n types[\"ONE_OR_MORE_PATH\"] = \"OneOrMorePath\";\n types[\"ORDER_BY\"] = \"orderby\";\n types[\"PATH\"] = \"path\";\n types[\"PATTERN\"] = \"pattern\";\n types[\"PROJECT\"] = \"project\";\n types[\"REDUCED\"] = \"reduced\";\n types[\"SEQ\"] = \"seq\";\n types[\"SERVICE\"] = \"service\";\n types[\"SLICE\"] = \"slice\";\n types[\"UNION\"] = \"union\";\n types[\"VALUES\"] = \"values\";\n types[\"ZERO_OR_MORE_PATH\"] = \"ZeroOrMorePath\";\n types[\"ZERO_OR_ONE_PATH\"] = \"ZeroOrOnePath\";\n types[\"COMPOSITE_UPDATE\"] = \"compositeupdate\";\n types[\"DELETE_INSERT\"] = \"deleteinsert\";\n types[\"LOAD\"] = \"load\";\n types[\"CLEAR\"] = \"clear\";\n types[\"CREATE\"] = \"create\";\n types[\"DROP\"] = \"drop\";\n types[\"ADD\"] = \"add\";\n types[\"MOVE\"] = \"move\";\n types[\"COPY\"] = \"copy\";\n})(types = exports.types || (exports.types = {}));\nvar expressionTypes;\n(function (expressionTypes) {\n expressionTypes[\"AGGREGATE\"] = \"aggregate\";\n expressionTypes[\"EXISTENCE\"] = \"existence\";\n expressionTypes[\"NAMED\"] = \"named\";\n expressionTypes[\"OPERATOR\"] = \"operator\";\n expressionTypes[\"TERM\"] = \"term\";\n expressionTypes[\"WILDCARD\"] = \"wildcard\";\n})(expressionTypes = exports.expressionTypes || (exports.expressionTypes = {}));\n//# sourceMappingURL=algebra.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst A = __importStar(require(\"./algebra\"));\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nclass Factory {\n constructor(dataFactory) {\n this.dataFactory = dataFactory || new rdf_data_factory_1.DataFactory();\n this.stringType = this.createTerm('http://www.w3.org/2001/XMLSchema#string');\n }\n createAlt(input, flatten = true) { return this.flattenMulti({ type: A.types.ALT, input }, flatten); }\n createAsk(input) { return { type: A.types.ASK, input }; }\n createBoundAggregate(variable, aggregate, expression, distinct, separator) {\n const result = this.createAggregateExpression(aggregate, expression, distinct, separator);\n result.variable = variable;\n return result;\n }\n createBgp(patterns) { return { type: A.types.BGP, patterns }; }\n createConstruct(input, template) { return { type: A.types.CONSTRUCT, input, template }; }\n createDescribe(input, terms) { return { type: A.types.DESCRIBE, input, terms }; }\n createDistinct(input) { return { type: A.types.DISTINCT, input }; }\n createExtend(input, variable, expression) { return { type: A.types.EXTEND, input, variable, expression }; }\n createFrom(input, def, named) { return { type: A.types.FROM, input, default: def, named }; }\n createFilter(input, expression) { return { type: A.types.FILTER, input, expression }; }\n createGraph(input, name) { return { type: A.types.GRAPH, input, name }; }\n createGroup(input, variables, aggregates) { return { type: A.types.GROUP, input, variables, aggregates }; }\n createInv(path) { return { type: A.types.INV, path }; }\n createJoin(input, flatten = true) { return this.flattenMulti({ type: A.types.JOIN, input }, flatten); }\n createLeftJoin(left, right, expression) {\n if (expression)\n return { type: A.types.LEFT_JOIN, input: [left, right], expression };\n return { type: A.types.LEFT_JOIN, input: [left, right] };\n }\n createLink(iri) { return { type: A.types.LINK, iri }; }\n createMinus(left, right) { return { type: A.types.MINUS, input: [left, right] }; }\n createNop() { return { type: A.types.NOP }; }\n createNps(iris) { return { type: A.types.NPS, iris }; }\n createOneOrMorePath(path) { return { type: A.types.ONE_OR_MORE_PATH, path }; }\n createOrderBy(input, expressions) { return { type: A.types.ORDER_BY, input, expressions }; }\n createPath(subject, predicate, object, graph) {\n if (graph)\n return { type: A.types.PATH, subject, predicate, object, graph };\n return { type: A.types.PATH, subject, predicate, object, graph: this.dataFactory.defaultGraph() };\n }\n createPattern(subject, predicate, object, graph) {\n const pattern = this.dataFactory.quad(subject, predicate, object, graph);\n pattern.type = A.types.PATTERN;\n return pattern;\n }\n createProject(input, variables) { return { type: A.types.PROJECT, input, variables }; }\n createReduced(input) { return { type: A.types.REDUCED, input }; }\n createSeq(input, flatten = true) { return this.flattenMulti({ type: A.types.SEQ, input }, flatten); }\n createService(input, name, silent) { return { type: A.types.SERVICE, input, name, silent: Boolean(silent) }; }\n createSlice(input, start, length) {\n start = start || 0;\n if (length !== undefined)\n return { type: A.types.SLICE, input, start, length };\n return { type: A.types.SLICE, input, start };\n }\n createUnion(input, flatten = true) { return this.flattenMulti({ type: A.types.UNION, input }, flatten); }\n createValues(variables, bindings) { return { type: A.types.VALUES, variables, bindings }; }\n createZeroOrMorePath(path) { return { type: A.types.ZERO_OR_MORE_PATH, path }; }\n createZeroOrOnePath(path) { return { type: A.types.ZERO_OR_ONE_PATH, path }; }\n createAggregateExpression(aggregator, expression, distinct, separator) {\n if (separator)\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, separator, distinct };\n return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.AGGREGATE, aggregator: aggregator, expression, distinct };\n }\n createExistenceExpression(not, input) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.EXISTENCE, not, input }; }\n createNamedExpression(name, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.NAMED, name, args }; }\n createOperatorExpression(operator, args) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.OPERATOR, operator, args }; }\n createTermExpression(term) { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.TERM, term }; }\n createWildcardExpression() { return { type: A.types.EXPRESSION, expressionType: A.expressionTypes.WILDCARD, wildcard: new sparqljs_1.Wildcard() }; }\n createTerm(str) {\n return (0, rdf_string_1.stringToTerm)(str, this.dataFactory);\n }\n // Update functions\n createCompositeUpdate(updates) { return { type: A.types.COMPOSITE_UPDATE, updates }; }\n createDeleteInsert(deleteQuads, insertQuads, where) {\n const result = { type: A.types.DELETE_INSERT };\n if (deleteQuads)\n result.delete = deleteQuads;\n if (insertQuads)\n result.insert = insertQuads;\n if (where)\n result.where = where;\n return result;\n }\n createLoad(source, destination, silent) {\n const result = { type: A.types.LOAD, source };\n if (destination)\n result.destination = destination;\n return this.addSilent(result, Boolean(silent));\n }\n createClear(source, silent) {\n return this.addSilent({ type: A.types.CLEAR, source }, Boolean(silent));\n }\n createCreate(source, silent) {\n return this.addSilent({ type: A.types.CREATE, source }, Boolean(silent));\n }\n createDrop(source, silent) {\n return this.addSilent({ type: A.types.DROP, source }, Boolean(silent));\n }\n createAdd(source, destination, silent) {\n return this.addSilent({ type: A.types.ADD, source, destination }, Boolean(silent));\n }\n createMove(source, destination, silent) {\n return this.addSilent({ type: A.types.MOVE, source, destination }, Boolean(silent));\n }\n createCopy(source, destination, silent) {\n return this.addSilent({ type: A.types.COPY, source, destination }, Boolean(silent));\n }\n addSilent(input, silent) {\n if (silent)\n input.silent = silent;\n return input;\n }\n flattenMulti(input, flatten) {\n if (!flatten) {\n return input;\n }\n const type = input.type;\n const children = input.input;\n let newChildren = [];\n for (const child of children) {\n if (child.type === type) {\n newChildren.push(...child.input);\n }\n else {\n newChildren.push(child);\n }\n }\n input.input = newChildren;\n return input;\n }\n}\nexports.default = Factory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toSparqlJs = exports.toSparql = void 0;\nconst rdf_isomorphic_1 = require(\"rdf-isomorphic\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqljs_1 = require(\"sparqljs\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst types = Algebra.types;\nconst eTypes = Algebra.expressionTypes;\nlet context;\nconst factory = new factory_1.default();\nfunction toSparql(op, options = {}) {\n let generator = new sparqljs_1.Generator(options);\n return generator.stringify(toSparqlJs(op));\n}\nexports.toSparql = toSparql;\nfunction toSparqlJs(op) {\n resetContext();\n op = removeQuads(op);\n let result = translateOperation(op);\n if (result.type === 'group')\n return result.patterns[0];\n return result;\n}\nexports.toSparqlJs = toSparqlJs;\nfunction resetContext() {\n context = { project: false, extend: [], group: [], aggregates: [], order: [] };\n}\nfunction translateOperation(op) {\n // this allows us to differentiate between BIND and SELECT when translating EXTEND\n // GRAPH was added because the way graphs get added back here is not the same as how they get added in the future\n // ^ seems fine but might have to be changed if problems get detected in the future\n if (op.type !== types.EXTEND && op.type !== types.ORDER_BY && op.type !== types.GRAPH)\n context.project = false;\n switch (op.type) {\n case types.EXPRESSION: return translateExpression(op);\n case types.ASK: return translateProject(op, types.ASK);\n case types.BGP: return translateBgp(op);\n case types.CONSTRUCT: return translateConstruct(op);\n case types.DESCRIBE: return translateProject(op, types.DESCRIBE);\n case types.DISTINCT: return translateDistinct(op);\n case types.EXTEND: return translateExtend(op);\n case types.FROM: return translateFrom(op);\n case types.FILTER: return translateFilter(op);\n case types.GRAPH: return translateGraph(op);\n case types.GROUP: return translateGroup(op);\n case types.JOIN: return translateJoin(op);\n case types.LEFT_JOIN: return translateLeftJoin(op);\n case types.MINUS: return translateMinus(op);\n case types.NOP: return {};\n case types.ORDER_BY: return translateOrderBy(op);\n case types.PATH: return translatePath(op);\n case types.PATTERN: return translatePattern(op);\n case types.PROJECT: return translateProject(op, types.PROJECT);\n case types.REDUCED: return translateReduced(op);\n case types.SERVICE: return translateService(op);\n case types.SLICE: return translateSlice(op);\n case types.UNION: return translateUnion(op);\n case types.VALUES: return translateValues(op);\n // UPDATE operations\n case types.COMPOSITE_UPDATE: return translateCompositeUpdate(op);\n case types.DELETE_INSERT: return translateDeleteInsert(op);\n case types.LOAD: return translateLoad(op);\n case types.CLEAR: return translateClear(op);\n case types.CREATE: return translateCreate(op);\n case types.DROP: return translateDrop(op);\n case types.ADD: return translateAdd(op);\n case types.MOVE: return translateMove(op);\n case types.COPY: return translateCopy(op);\n }\n throw new Error(`Unknown Operation type ${op.type}`);\n}\nfunction translateExpression(expr) {\n switch (expr.expressionType) {\n case eTypes.AGGREGATE: return translateAggregateExpression(expr);\n case eTypes.EXISTENCE: return translateExistenceExpression(expr);\n case eTypes.NAMED: return translateNamedExpression(expr);\n case eTypes.OPERATOR: return translateOperatorExpression(expr);\n case eTypes.TERM: return translateTermExpression(expr);\n case eTypes.WILDCARD: return translateWildcardExpression(expr);\n }\n throw new Error(`Unknown Expression Operation type ${expr.expressionType}`);\n}\nfunction translatePathComponent(path) {\n switch (path.type) {\n case types.ALT: return translateAlt(path);\n case types.INV: return translateInv(path);\n case types.LINK: return translateLink(path);\n case types.NPS: return translateNps(path);\n case types.ONE_OR_MORE_PATH: return translateOneOrMorePath(path);\n case types.SEQ: return translateSeq(path);\n case types.ZERO_OR_MORE_PATH: return translateZeroOrMorePath(path);\n case types.ZERO_OR_ONE_PATH: return translateZeroOrOnePath(path);\n }\n throw new Error(`Unknown Path type ${path.type}`);\n}\nfunction translateTerm(term) {\n return (0, rdf_string_1.termToString)(term);\n}\n// ------------------------- EXPRESSIONS -------------------------\nfunction translateAggregateExpression(expr) {\n const result = {\n expression: translateExpression(expr.expression),\n type: 'aggregate',\n aggregation: expr.aggregator,\n distinct: expr.distinct\n };\n if (expr.separator)\n result.separator = expr.separator;\n return result;\n}\nfunction translateExistenceExpression(expr) {\n return {\n type: 'operation',\n operator: expr.not ? 'notexists' : 'exists',\n args: util_1.default.flatten([\n translateOperation(expr.input)\n ])\n };\n}\nfunction translateNamedExpression(expr) {\n return {\n type: 'functionCall',\n // Wrong typings\n function: expr.name,\n args: expr.args.map(translateExpression)\n };\n}\nfunction translateOperatorExpression(expr) {\n if (expr.operator === 'desc') {\n const result = { expression: translateExpression(expr.args[0]) };\n result.descending = true;\n return result;\n }\n const result = {\n type: 'operation',\n operator: expr.operator,\n args: expr.args.map(translateExpression)\n };\n if (result.operator === 'in' || result.operator === 'notin')\n result.args = [result.args[0]].concat([result.args.slice(1)]);\n return result;\n}\nfunction translateTermExpression(expr) {\n return expr.term;\n}\nfunction translateWildcardExpression(expr) {\n return expr.wildcard;\n}\n// ------------------------- OPERATIONS -------------------------\n// these get translated in the project function\nfunction translateBoundAggregate(op) {\n return op;\n}\nfunction translateBgp(op) {\n let patterns = op.patterns.map(translatePattern);\n if (patterns.length === 0)\n return null;\n return {\n type: 'bgp',\n triples: patterns\n };\n}\nfunction translateConstruct(op) {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: op.template.map(translatePattern),\n where: util_1.default.flatten([\n translateOperation(op.input)\n ])\n };\n}\nfunction translateDistinct(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].distinct = true;\n return result;\n}\nfunction translateExtend(op) {\n if (context.project) {\n context.extend.push(op);\n return translateOperation(op.input);\n }\n return util_1.default.flatten([\n translateOperation(op.input),\n {\n type: 'bind',\n variable: op.variable,\n expression: translateExpression(op.expression)\n }\n ]);\n}\nfunction translateFrom(op) {\n const result = translateOperation(op.input);\n // project is nested in group object\n const obj = result.patterns[0];\n obj.from = {\n default: op.default,\n named: op.named\n };\n return result;\n}\nfunction translateFilter(op) {\n return {\n type: 'group',\n patterns: util_1.default.flatten([\n translateOperation(op.input),\n { type: 'filter', expression: translateExpression(op.expression) }\n ])\n };\n}\nfunction translateGraph(op) {\n return {\n type: 'graph',\n patterns: util_1.default.flatten([translateOperation(op.input)]),\n name: op.name\n };\n}\nfunction translateGroup(op) {\n const input = translateOperation(op.input);\n const aggs = op.aggregates.map(translateBoundAggregate);\n context.aggregates.push(...aggs);\n // TODO: apply possible extends\n context.group.push(...op.variables);\n return input;\n}\nfunction translateJoin(op) {\n const arr = util_1.default.flatten(op.input.map(translateOperation));\n // Merge bgps\n // This is possible if one side was a path and the other a bgp for example\n return arr.reduce((result, val) => {\n if (val.type !== 'bgp' || result.length == 0 || result[result.length - 1].type !== 'bgp') {\n result.push(val);\n }\n else {\n result[result.length - 1].triples.push(...val.triples);\n }\n return result;\n }, []);\n}\nfunction translateLeftJoin(op) {\n const leftjoin = {\n type: 'optional',\n patterns: [\n translateOperation(op.input[1])\n ]\n };\n if (op.expression) {\n leftjoin.patterns.push({\n type: 'filter',\n expression: translateExpression(op.expression)\n });\n }\n leftjoin.patterns = util_1.default.flatten(leftjoin.patterns);\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n leftjoin\n ]);\n}\nfunction translateMinus(op) {\n let patterns = translateOperation(op.input[1]);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return util_1.default.flatten([\n translateOperation(op.input[0]),\n {\n type: 'minus',\n patterns: patterns\n }\n ]);\n}\nfunction translateOrderBy(op) {\n context.order.push(...op.expressions);\n return translateOperation(op.input);\n}\nfunction translatePath(op) {\n return {\n type: 'bgp',\n triples: [{\n subject: op.subject,\n predicate: translatePathComponent(op.predicate),\n object: op.object\n }]\n };\n}\nfunction translatePattern(op) {\n return {\n subject: op.subject,\n predicate: op.predicate,\n object: op.object\n };\n}\nfunction replaceAggregatorVariables(s, map) {\n let st = util_1.default.isSimpleTerm(s) ? translateTerm(s) : s;\n if (typeof st === 'string') {\n if (map[st])\n return map[st];\n }\n else if (Array.isArray(s)) {\n s = s.map(e => replaceAggregatorVariables(e, map));\n }\n else {\n for (let key of Object.keys(s))\n s[key] = replaceAggregatorVariables(s[key], map);\n }\n return s;\n}\nfunction translateProject(op, type) {\n const result = {\n type: 'query',\n prefixes: {}\n };\n // Makes typing easier in some places\n const select = result;\n let variables;\n if (type === types.PROJECT) {\n result.queryType = 'SELECT';\n variables = op.variables;\n }\n else if (type === types.ASK) {\n result.queryType = 'ASK';\n }\n else if (type === types.DESCRIBE) {\n result.queryType = 'DESCRIBE';\n variables = op.terms;\n }\n // backup values in case of nested queries\n // everything in extend, group, etc. is irrelevant for this project call\n const extend = context.extend;\n const group = context.group;\n const aggregates = context.aggregates;\n const order = context.order;\n resetContext();\n context.project = true;\n let input = util_1.default.flatten([translateOperation(op.input)]);\n if (input.length === 1 && input[0].type === 'group')\n input = input[0].patterns;\n result.where = input;\n let aggregators = {};\n // these can not reference each other\n for (let agg of context.aggregates)\n aggregators[translateTerm(agg.variable)] = translateExpression(agg);\n // do these in reverse order since variables in one extend might apply to an expression in an other extend\n let extensions = {};\n for (let i = context.extend.length - 1; i >= 0; --i) {\n let e = context.extend[i];\n extensions[translateTerm(e.variable)] = replaceAggregatorVariables(translateExpression(e.expression), aggregators);\n }\n if (context.group.length > 0)\n select.group = context.group.map(variable => {\n let v = translateTerm(variable);\n if (extensions[v]) {\n let result = extensions[v];\n delete extensions[v]; // make sure there is only 1 'AS' statement\n return {\n variable,\n expression: result\n };\n }\n return { expression: variable };\n });\n // descending expressions will already be in the correct format due to the structure of those\n if (context.order.length > 0)\n select.order = context.order.map(translateOperation).map(o => o.descending ? o : ({ expression: o }));\n // this needs to happen after the group because it might depend on variables generated there\n if (variables) {\n select.variables = variables.map((term) => {\n let v = translateTerm(term);\n if (extensions[v])\n return {\n variable: term,\n expression: extensions[v]\n };\n return term;\n });\n // if the * didn't match any variables this would be empty\n if (select.variables.length === 0)\n select.variables = [new sparqljs_1.Wildcard()];\n }\n // convert filter to 'having' if it contains an aggregator variable\n // could always convert, but is nicer to use filter when possible\n if (result.where.length > 0 && result.where[result.where.length - 1].type === 'filter') {\n const filter = result.where[result.where.length - 1];\n if (objectContainsValues(filter, Object.keys(aggregators))) {\n select.having = util_1.default.flatten([replaceAggregatorVariables(filter.expression, aggregators)]);\n result.where.splice(-1);\n }\n }\n context.extend = extend;\n context.group = group;\n context.aggregates = aggregates;\n context.order = order;\n // subqueries need to be in a group, this will be removed again later for the root query\n return { type: 'group', patterns: [select] };\n}\nfunction objectContainsValues(o, vals) {\n if (util_1.default.isSimpleTerm(o))\n return vals.indexOf(translateTerm(o)) >= 0;\n if (Array.isArray(o))\n return o.some(e => objectContainsValues(e, vals));\n if (o === Object(o))\n return Object.keys(o).some(key => objectContainsValues(o[key], vals));\n return vals.indexOf(o) >= 0;\n}\nfunction translateReduced(op) {\n let result = translateOperation(op.input);\n // project is nested in group object\n result.patterns[0].reduced = true;\n return result;\n}\nfunction translateService(op) {\n let patterns = translateOperation(op.input);\n if (patterns.type === 'group')\n patterns = patterns.patterns;\n if (!Array.isArray(patterns))\n patterns = [patterns];\n return {\n type: 'service',\n // Typings are wrong, name can also be a variable\n name: op.name,\n silent: op.silent,\n patterns\n };\n}\nfunction translateSlice(op) {\n let result = translateOperation(op.input);\n // results can be nested in a group object\n let obj = result;\n if (result.type && result.type === 'group')\n obj = result.patterns[0];\n if (op.start !== 0)\n obj.offset = op.start;\n if (op.length !== undefined)\n obj.limit = op.length;\n return result;\n}\nfunction translateUnion(op) {\n return {\n type: 'union',\n patterns: util_1.default.flatten(op.input.map(translateOperation))\n };\n}\nfunction translateValues(op) {\n // TODO: check if handled correctly when outside of select block\n return {\n type: 'values',\n values: op.bindings.map(binding => {\n let result = {};\n for (let v of op.variables) {\n let s = `?${v.value}`;\n if (binding[s])\n result[s] = binding[s];\n else\n result[s] = undefined;\n }\n return result;\n })\n };\n}\n// PATH COMPONENTS\nfunction translateAlt(path) {\n const mapped = path.input.map(translatePathComponent);\n if (mapped.every(entry => 'pathType' in entry && entry.pathType === '!')) {\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: util_1.default.flatten(mapped.map(entry => entry.items))\n }]\n };\n }\n return {\n type: 'path',\n pathType: '|',\n items: mapped\n };\n}\nfunction translateInv(path) {\n if (path.path.type === types.NPS) {\n const inv = path.path.iris.map((iri) => {\n return {\n type: 'path',\n pathType: '^',\n items: [iri]\n };\n });\n if (inv.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: inv\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: inv\n }]\n };\n }\n return {\n type: 'path',\n pathType: '^',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateLink(path) {\n return path.iri;\n}\nfunction translateNps(path) {\n if (path.iris.length <= 1)\n return {\n type: 'path',\n pathType: '!',\n items: path.iris\n };\n return {\n type: 'path',\n pathType: '!',\n items: [{\n type: 'path',\n pathType: '|',\n items: path.iris\n }]\n };\n}\nfunction translateOneOrMorePath(path) {\n return {\n type: 'path',\n pathType: '+',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateSeq(path) {\n return {\n type: 'path',\n pathType: '/',\n items: path.input.map(translatePathComponent)\n };\n}\nfunction translateZeroOrMorePath(path) {\n return {\n type: 'path',\n pathType: '*',\n items: [translatePathComponent(path.path)]\n };\n}\nfunction translateZeroOrOnePath(path) {\n // Typings are missing '?' operator\n return {\n type: 'path',\n // Typings are missing this path\n pathType: '?',\n items: [translatePathComponent(path.path)]\n };\n}\n// UPDATE OPERATIONS\nfunction translateCompositeUpdate(op) {\n const updates = op.updates.map(update => {\n const result = translateOperation(update);\n return result.updates[0];\n });\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateDeleteInsert(op) {\n var _a;\n let where = op.where;\n let using = undefined;\n if (where && where.type === types.FROM) {\n let from = where;\n where = from.input;\n using = { default: from.default, named: from.named };\n }\n const updates = [{\n updateType: 'insertdelete',\n delete: convertUpdatePatterns(op.delete || []),\n insert: convertUpdatePatterns(op.insert || []),\n }];\n // Typings don't support 'using' yet\n if (using)\n updates[0].using = using;\n // corresponds to empty array in SPARQL.js\n if (!where || (where.type === types.BGP && where.patterns.length === 0))\n updates[0].where = [];\n else {\n const graphs = {};\n let result = translateOperation(removeQuadsRecursive(where, graphs));\n if (result.type === 'group')\n updates[0].where = result.patterns;\n else\n updates[0].where = [result];\n // graph might not be applied yet since there was no project\n // this can only happen if there was a single graph\n const graphNames = Object.keys(graphs);\n if (graphNames.length > 0) {\n if (graphNames.length !== 1)\n throw new Error('This is unexpected and might indicate an error in graph handling for updates.');\n const graphName = (_a = graphs[graphNames[0]]) === null || _a === void 0 ? void 0 : _a.graph;\n // ignore if default graph\n if (graphName && graphName.value !== '')\n updates[0].where = [{ type: 'graph', patterns: updates[0].where, name: graphName }];\n }\n }\n // not really necessary but can give cleaner looking queries\n if (!op.delete && !op.where) {\n updates[0].updateType = 'insert';\n delete updates[0].delete;\n delete updates[0].where;\n }\n else if (!op.insert && !op.where) {\n delete updates[0].insert;\n delete updates[0].where;\n if (op.delete.some(pattern => pattern.subject.termType === 'Variable' ||\n pattern.predicate.termType === 'Variable' ||\n pattern.object.termType === 'Variable'))\n updates[0].updateType = 'deletewhere';\n else\n updates[0].updateType = 'delete';\n }\n else if (!op.insert && op.where && op.where.type === 'bgp') {\n if ((0, rdf_isomorphic_1.isomorphic)(op.delete, op.where.patterns)) {\n delete updates[0].where;\n updates[0].updateType = 'deletewhere';\n }\n }\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateLoad(op) {\n // Typings are wrong, destiniation is optional\n const updates = [{ type: 'load', silent: Boolean(op.silent), source: op.source }];\n if (op.destination)\n updates[0].destination = op.destination;\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateClear(op) {\n return translateClearCreateDrop(op, 'clear');\n}\nfunction translateCreate(op) {\n return translateClearCreateDrop(op, 'create');\n}\nfunction translateDrop(op) {\n return translateClearCreateDrop(op, 'drop');\n}\nfunction translateClearCreateDrop(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n // Typings are wrong, type is not required, see for example \"clear-drop\" test\n if (op.source === 'DEFAULT')\n updates[0].graph = { default: true };\n else if (op.source === 'NAMED')\n updates[0].graph = { named: true };\n else if (op.source === 'ALL')\n updates[0].graph = { all: true };\n else\n updates[0].graph = { type: 'graph', name: op.source };\n return { prefixes: {}, type: 'update', updates };\n}\nfunction translateAdd(op) {\n return translateUpdateGraphShortcut(op, 'add');\n}\nfunction translateMove(op) {\n return translateUpdateGraphShortcut(op, 'move');\n}\nfunction translateCopy(op) {\n return translateUpdateGraphShortcut(op, 'copy');\n}\nfunction translateUpdateGraphShortcut(op, type) {\n const updates = [{ type, silent: Boolean(op.silent) }];\n updates[0].source = op.source === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.source };\n updates[0].destination = op.destination === 'DEFAULT' ? { type: 'graph', default: true } : { type: 'graph', name: op.destination };\n return { prefixes: {}, type: 'update', updates };\n}\n// similar to removeQuads but more simplified for UPDATEs\nfunction convertUpdatePatterns(patterns) {\n if (!patterns)\n return [];\n const graphs = {};\n patterns.forEach(pattern => {\n const graph = pattern.graph.value;\n if (!graphs[graph])\n graphs[graph] = [];\n graphs[graph].push(pattern);\n });\n return Object.keys(graphs).map(graph => {\n if (graph === '')\n return { type: 'bgp', triples: graphs[graph].map(translatePattern) };\n return { type: 'graph', triples: graphs[graph].map(translatePattern), name: graphs[graph][0].graph };\n });\n}\nfunction removeQuads(op) {\n return removeQuadsRecursive(op, {});\n}\n// remove quads\nfunction removeQuadsRecursive(op, graphs) {\n if (Array.isArray(op))\n return op.map(sub => removeQuadsRecursive(sub, graphs));\n if (!op.type)\n return op;\n // UPDATE operations with Patterns handle graphs a bit differently\n if (op.type === types.DELETE_INSERT)\n return op;\n if ((op.type === types.PATTERN || op.type === types.PATH) && op.graph) {\n if (!graphs[op.graph.value])\n graphs[op.graph.value] = { graph: op.graph, values: [] };\n graphs[op.graph.value].values.push(op);\n return op;\n }\n const result = {};\n const keyGraphs = {}; // unique graph per key\n const globalNames = {}; // track all the unique graph names for the entire Operation\n for (let key of Object.keys(op)) {\n const newGraphs = {};\n result[key] = removeQuadsRecursive(op[key], newGraphs);\n const graphNames = Object.keys(newGraphs);\n // create graph statements if multiple graphs are found\n if (graphNames.length > 1) {\n // nest joins\n let left = potentialGraphFromPatterns(newGraphs[graphNames[0]].values);\n for (let i = 1; i < graphNames.length; ++i) {\n const right = potentialGraphFromPatterns(newGraphs[graphNames[i]].values);\n left = factory.createJoin([left, right]);\n }\n graphNames.map(name => delete newGraphs[name]);\n // this ignores the result object that is being generated, but should not be a problem\n // is only an issue for objects that have 2 keys where this can occur, which is none\n return left;\n }\n else if (graphNames.length === 1) {\n const graph = newGraphs[graphNames[0]].graph;\n keyGraphs[key] = graph;\n globalNames[graph.value] = graph;\n }\n }\n const graphNameSet = Object.keys(globalNames);\n if (graphNameSet.length > 0) {\n // also need to create graph statement if we are at the edge of the query\n if (graphNameSet.length === 1 && op.type !== types.PROJECT)\n graphs[graphNameSet[0]] = { graph: globalNames[graphNameSet[0]], values: [result] };\n else {\n // multiple graphs (or project), need to create graph objects for them\n for (let key of Object.keys(keyGraphs))\n if (keyGraphs[key].value.length > 0)\n // TODO: Should check if this cast and graph cast below are correct\n result[key] = factory.createGraph(result[key], keyGraphs[key]);\n }\n }\n return result;\n}\nfunction potentialGraphFromPatterns(patterns) {\n const bgp = factory.createBgp(patterns);\n const name = patterns[0].graph;\n if (name.value.length === 0)\n return bgp;\n // TODO: not sure about typings here, would have to check in the future\n return factory.createGraph(bgp, name);\n}\n//# sourceMappingURL=sparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst equal = require(\"fast-deep-equal/es6\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst Algebra = __importStar(require(\"./algebra\"));\nconst factory_1 = __importDefault(require(\"./factory\"));\nconst util_1 = __importDefault(require(\"./util\"));\nconst Parser = require('sparqljs').Parser;\nconst types = Algebra.types;\nlet variables = new Set();\nlet varCount = 0;\nlet useQuads = false;\nlet factory;\n/**\n * Translates the given SPARQL query to SPARQL Algebra.\n * @param sparql - Either a SPARQL string or an object generated by sparql.js\n * @param options - Optional options object. Current options:\n * * dataFactory: The Datafactory used to generate terms. Default @rdfjs/data-model.\n * * quads: Boolean indicating whether triples should be converted to Quads (consumes GRAPH statements). Default false.\n * * prefixes: Pre-defined prefixes for the given query. Default empty.\n * * baseIRI: Base IRI that should be used for the query. Default undefined (throws error if required).\n * @returns {Operation}\n */\nfunction translate(sparql, options) {\n options = options || {};\n factory = new factory_1.default(options.dataFactory);\n let query;\n if (isString(sparql)) {\n let parser = new Parser(options);\n // resets the identifier counter used for blank nodes\n // provides nicer and more consistent output if there are multiple calls\n parser._resetBlanks();\n query = parser.parse(sparql);\n }\n else {\n query = sparql;\n }\n return translateQuery(query, options.quads, options.blankToVariable);\n}\nexports.default = translate;\nfunction translateQuery(sparql, quads, blankToVariable) {\n // this set is filled in during the inScopeVariables call\n variables = new Set();\n varCount = 0;\n useQuads = Boolean(quads);\n // Assume this is an empty query\n if (!sparql.type)\n return factory.createNop();\n if (sparql.type !== 'query' && sparql.type !== 'update')\n throw new Error('Translate only works on complete query or update objects.');\n let res;\n // find ALL variables here to fill `variables` array\n findAllVariables(sparql);\n if (sparql.type === 'query') {\n // group and where are identical, having only 1 makes parsing easier, can be undefined in DESCRIBE\n const group = { type: 'group', patterns: sparql.where || [] };\n res = translateGroupGraphPattern(group);\n res = translateAggregates(sparql, res);\n }\n else if (sparql.type === 'update') {\n res = translateUpdate(sparql);\n }\n if (blankToVariable) {\n res = translateBlankNodesToVariables(res);\n }\n return res;\n}\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isTerm(term) {\n return Boolean(term === null || term === void 0 ? void 0 : term.termType);\n}\n// This is not completely correct but this way we also catch SPARQL.js triples\nfunction isTriple(triple) {\n return triple.subject && triple.predicate && triple.object;\n}\nfunction isVariable(term) {\n return (term === null || term === void 0 ? void 0 : term.termType) === 'Variable';\n}\n// Will be used to make sure new variables don't overlap\nfunction findAllVariables(thingy) {\n if (isTerm(thingy)) {\n if (isVariable(thingy)) {\n // Variables don't store the `?`\n variables.add(`?${thingy.value}`);\n }\n }\n else if (Array.isArray(thingy)) {\n for (const entry of thingy)\n findAllVariables(entry);\n }\n else if (thingy && typeof thingy === 'object') {\n for (let key of Object.keys(thingy)) {\n // Some variables are hidden in keys (specifically for VALUES)\n if (key.startsWith('?'))\n variables.add(key);\n findAllVariables(thingy[key]);\n }\n }\n}\n// 18.2.1\nfunction inScopeVariables(thingy) {\n let inScope = {};\n if (isTriple(thingy)) {\n // Note that this could both be an actual Quad or a SPARQL.js triple (without graph)\n const result = [\n inScopeVariables(thingy.subject),\n inScopeVariables(thingy.predicate),\n inScopeVariables(thingy.object),\n thingy.graph ? inScopeVariables(thingy.graph) : {}\n ];\n Object.assign(inScope, ...result);\n }\n else if (isTerm(thingy)) {\n if (isVariable(thingy))\n inScope[thingy.value] = thingy;\n }\n else if (thingy.type === 'bgp') {\n // Slightly cheating but this is a subset of what we support so is fine\n const quads = thingy.triples;\n Object.assign(inScope, ...quads.map(inScopeVariables));\n }\n else if (thingy.type === 'path') {\n // A path predicate should not have variables but just iterating so we could theoretically support this\n Object.assign(inScope, ...thingy.items.map(inScopeVariables));\n }\n else if (thingy.type === 'group' || thingy.type === 'union' || thingy.type === 'optional') {\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'service' || thingy.type === 'graph') {\n Object.assign(inScope, inScopeVariables(thingy.name));\n Object.assign(inScope, ...thingy.patterns.map(inScopeVariables));\n }\n else if (thingy.type === 'bind') {\n Object.assign(inScope, inScopeVariables(thingy.variable));\n }\n else if (thingy.type === 'values') {\n if (thingy.values.length > 0) {\n const vars = Object.keys(thingy.values[0]).map(v => factory.createTerm(v));\n Object.assign(inScope, ...vars.map(inScopeVariables));\n }\n }\n else if (thingy.type === 'query') {\n if (thingy.queryType === 'SELECT' || thingy.queryType === 'DESCRIBE') {\n if (thingy.where && thingy.variables.some(util_1.default.isWildcard))\n Object.assign(inScope, ...thingy.where.map(inScopeVariables));\n for (const v of thingy.variables) {\n if (isVariable(v))\n Object.assign(inScope, inScopeVariables(v));\n else if (v.variable)\n Object.assign(inScope, inScopeVariables(v.variable));\n }\n if (thingy.queryType === 'SELECT') {\n if (thingy.group) {\n // Grouping can be a VariableExpression, typings are wrong\n for (const g of thingy.group) {\n if (g.variable)\n Object.assign(inScope, inScopeVariables(g.variable));\n }\n }\n if (thingy.values) {\n const values = { type: 'values', values: thingy.values };\n Object.assign(inScope, inScopeVariables(values));\n }\n }\n }\n }\n return inScope;\n}\nfunction translateGroupGraphPattern(thingy) {\n // 18.2.2.1\n // already done by sparql parser\n // 18.2.2.2\n let filters = [];\n let nonfilters = [];\n if ('patterns' in thingy)\n for (let pattern of thingy.patterns)\n (pattern.type === 'filter' ? filters : nonfilters).push(pattern);\n // 18.2.2.3\n // 18.2.2.4\n // 18.2.2.5\n if (thingy.type === 'bgp')\n return translateBgp(thingy);\n // 18.2.2.6\n let result;\n if (thingy.type === 'union')\n result = factory.createUnion(nonfilters.map((p) => {\n // sparqljs doesn't always indicate the children are groups\n if (p.type !== 'group')\n p = { type: 'group', patterns: [p] };\n return translateGroupGraphPattern(p);\n }));\n else if (thingy.type === 'graph')\n // need to handle this separately since the filters need to be in the graph\n return translateGraph(thingy);\n else if (thingy.type === 'group')\n result = nonfilters.reduce(accumulateGroupGraphPattern, factory.createBgp([]));\n // custom values operation\n else if (thingy.type === 'values')\n result = translateInlineData(thingy);\n else if (thingy.type === 'query')\n result = translateQuery(thingy, useQuads, false);\n else\n throw new Error(`Unexpected type: ${thingy.type}`);\n if (filters.length > 0) {\n let expressions = filters.map(filter => translateExpression(filter.expression));\n if (expressions.length > 0)\n result = factory.createFilter(result, expressions.reduce((acc, exp) => factory.createOperatorExpression('&&', [acc, exp])));\n }\n return result;\n}\nfunction translateExpression(exp) {\n if (util_1.default.isSimpleTerm(exp) || util_1.default.isQuad(exp))\n return factory.createTermExpression(exp);\n if (util_1.default.isWildcard(exp))\n return factory.createWildcardExpression();\n if ('aggregation' in exp)\n return factory.createAggregateExpression(exp.aggregation, translateExpression(exp.expression), Boolean(exp.distinct), exp.separator);\n if ('function' in exp)\n // Outdated typings\n return factory.createNamedExpression(exp.function, exp.args.map(translateExpression));\n if ('operator' in exp) {\n if (exp.operator === 'exists' || exp.operator === 'notexists')\n return factory.createExistenceExpression(exp.operator === 'notexists', translateGroupGraphPattern(exp.args[0]));\n if (exp.operator === 'in' || exp.operator === 'notin')\n exp.args = [exp.args[0]].concat(exp.args[1]); // sparql.js uses 2 arguments with the second one being a list\n return factory.createOperatorExpression(exp.operator, exp.args.map(translateExpression));\n }\n throw new Error(`Unknown expression: ${JSON.stringify(exp)}`);\n}\nfunction translateBgp(thingy) {\n let patterns = [];\n let joins = [];\n for (let t of thingy.triples) {\n if ('pathType' in t.predicate) {\n // translatePath returns a mix of Quads and Paths\n let path = translatePath(t);\n for (let p of path) {\n if (p.type === types.PATH) {\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n patterns = [];\n joins.push(p);\n }\n else\n patterns.push(p);\n }\n }\n else\n patterns.push(translateQuad(t));\n }\n if (patterns.length > 0)\n joins.push(factory.createBgp(patterns));\n if (joins.length === 1)\n return joins[0];\n return factory.createJoin(joins);\n}\nfunction translatePath(triple) {\n let sub = triple.subject;\n let pred = translatePathPredicate(triple.predicate);\n let obj = triple.object;\n return simplifyPath(sub, pred, obj);\n}\nfunction translatePathPredicate(predicate) {\n if (util_1.default.isSimpleTerm(predicate)) {\n if (predicate.termType === 'NamedNode')\n return factory.createLink(predicate);\n else\n throw new Error(`Path predicate should be a NamedNode, got ${JSON.stringify(predicate)}`);\n }\n if (predicate.pathType === '^')\n return factory.createInv(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '!') {\n // negation is either over a single predicate or a list of disjuncted properties\n let normals = [];\n let inverted = [];\n let items;\n if ('pathType' in predicate.items[0] && predicate.items[0].pathType === '|')\n items = predicate.items[0].items; // the | element\n else\n items = predicate.items;\n for (let item of items) {\n if (util_1.default.isSimpleTerm(item))\n normals.push(item);\n else if (item.pathType === '^')\n inverted.push(item.items[0]);\n else\n throw new Error(`Unexpected item: ${JSON.stringify(item)}`);\n }\n // NPS elements do not have the LINK function\n let normalElement = factory.createNps(normals);\n let invertedElement = factory.createInv(factory.createNps(inverted));\n if (inverted.length === 0)\n return normalElement;\n if (normals.length === 0)\n return invertedElement;\n return factory.createAlt([normalElement, invertedElement,]);\n }\n if (predicate.pathType === '/')\n return factory.createSeq(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '|')\n return factory.createAlt(predicate.items.map(translatePathPredicate));\n if (predicate.pathType === '*')\n return factory.createZeroOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '+')\n return factory.createOneOrMorePath(translatePathPredicate(predicate.items[0]));\n if (predicate.pathType === '?')\n return factory.createZeroOrOnePath(translatePathPredicate(predicate.items[0]));\n throw new Error(`Unable to translate path expression ${JSON.stringify(predicate)}`);\n}\nfunction simplifyPath(subject, predicate, object) {\n if (predicate.type === types.LINK)\n return [factory.createPattern(subject, predicate.iri, object)];\n if (predicate.type === types.INV)\n return simplifyPath(object, predicate.path, subject);\n if (predicate.type === types.SEQ) {\n let joiner = subject;\n return util_1.default.flatten(predicate.input.map((subOp, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? object : generateFreshVar();\n const simplifiedPath = simplifyPath(joiner, subOp, nextJoiner);\n if (nextJoiner.termType === 'Variable') {\n joiner = nextJoiner;\n }\n return simplifiedPath;\n }));\n }\n return [factory.createPath(subject, predicate, object)];\n}\nfunction generateFreshVar() {\n let v = `?var${varCount++}`;\n if (variables.has(v))\n return generateFreshVar();\n variables.add(v);\n return factory.createTerm(v);\n}\nfunction translateQuad(quad) {\n if ('pathType' in quad.predicate) {\n throw new Error('Trying to translate property path to quad.');\n }\n // Graphs are needed here\n // TODO: investigate if typings are wrong or if we internally add graphs to these\n return factory.createPattern(quad.subject, quad.predicate, quad.object, quad.graph);\n}\nfunction translateGraph(graph) {\n const group = { type: 'group', patterns: graph.patterns };\n let result = translateGroupGraphPattern(group);\n if (useQuads)\n result = recurseGraph(result, graph.name);\n else\n result = factory.createGraph(result, graph.name);\n return result;\n}\nlet typeVals = Object.values(types);\nfunction recurseGraph(thingy, graph, replacement) {\n if (thingy.type === types.GRAPH) {\n if (replacement) {\n // At this point we would lose track of the replacement which would result in incorrect results\n // This would indicate the library is not being used as intended though\n throw new Error('Recursing through nested GRAPH statements with a replacement is impossible.');\n }\n // In case there were nested GRAPH statements that were not recursed yet for some reason\n thingy = recurseGraph(thingy.input, thingy.name);\n }\n else if (thingy.type === types.BGP)\n thingy.patterns = thingy.patterns.map(quad => {\n if (replacement) {\n if (quad.subject.equals(graph))\n quad.subject = replacement;\n if (quad.predicate.equals(graph))\n quad.predicate = replacement;\n if (quad.object.equals(graph))\n quad.object = replacement;\n }\n if (quad.graph.termType === 'DefaultGraph')\n quad.graph = graph;\n return quad;\n });\n else if (thingy.type === types.PATH) {\n if (replacement) {\n if (thingy.subject.equals(graph))\n thingy.subject = replacement;\n if (thingy.object.equals(graph))\n thingy.object = replacement;\n }\n if (thingy.graph.termType === 'DefaultGraph')\n thingy.graph = graph;\n }\n // need to replace variables in subqueries should the graph also be a variable of the same name\n // unless the subquery projects that variable\n else if (thingy.type === types.PROJECT && !replacement) {\n if (!thingy.variables.some(v => v.equals(graph)))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n // this can happen if the query extends an expression to the name of the graph\n // since the extend happens here there should be no further occurrences of this name\n // if there are it's the same situation as above\n else if (thingy.type === types.EXTEND && !replacement) {\n if (thingy.variable.equals(graph))\n replacement = generateFreshVar();\n thingy.input = recurseGraph(thingy.input, graph, replacement);\n }\n else {\n for (let key of Object.keys(thingy)) {\n if (Array.isArray(thingy[key]))\n thingy[key] = thingy[key].map((x) => recurseGraph(x, graph, replacement));\n else if (typeVals.indexOf(thingy[key].type) >= 0) // can't do instanceof on an interface\n thingy[key] = recurseGraph(thingy[key], graph, replacement);\n else if (replacement && isVariable(thingy[key]) && thingy[key].equals(graph))\n thingy[key] = replacement;\n }\n }\n return thingy;\n}\nfunction accumulateGroupGraphPattern(G, E) {\n if (E.type === 'optional') {\n // optional input needs to be interpreted as a group\n const A = translateGroupGraphPattern({ type: 'group', patterns: E.patterns });\n if (A.type === types.FILTER) {\n G = factory.createLeftJoin(G, A.input, A.expression);\n }\n else\n G = factory.createLeftJoin(G, A);\n }\n else if (E.type === 'minus') {\n // minus input needs to be interpreted as a group\n const A = translateGroupGraphPattern({ type: 'group', patterns: E.patterns });\n G = factory.createMinus(G, A);\n }\n else if (E.type === 'bind')\n G = factory.createExtend(G, E.variable, translateExpression(E.expression));\n else if (E.type === 'service') {\n // transform to group so childnodes get parsed correctly\n const group = { type: 'group', patterns: E.patterns };\n const A = factory.createService(translateGroupGraphPattern(group), E.name, E.silent);\n G = simplifiedJoin(G, A);\n }\n else {\n const A = translateGroupGraphPattern(E);\n G = simplifiedJoin(G, A);\n }\n return G;\n}\nfunction simplifiedJoin(G, A) {\n // Note: this is more simplification than requested in 18.2.2.8, but no reason not to do it.\n if (G.type === types.BGP && A.type === types.BGP)\n G = factory.createBgp([...G.patterns, ...A.patterns]);\n // 18.2.2.8 (simplification)\n else if (G.type === types.BGP && G.patterns.length === 0)\n G = A;\n else if (A.type === types.BGP && A.patterns.length === 0) { } // do nothing\n else\n G = factory.createJoin([G, A]);\n return G;\n}\nfunction translateInlineData(values) {\n let variables = (values.values.length === 0 ? [] : Object.keys(values.values[0])).map(factory.createTerm.bind(factory));\n let bindings = values.values.map((binding) => {\n let keys = Object.keys(binding);\n keys = keys.filter(k => binding[k] !== undefined);\n let map = {};\n for (let key of keys)\n map[key] = binding[key];\n return map;\n });\n return factory.createValues(variables, bindings);\n}\n// --------------------------------------- AGGREGATES\nfunction translateAggregates(query, res) {\n // Typings for ConstructQuery are wrong and missing several fields so we will cast quite often to SelectQuery to have partial typings\n const select = query;\n // 18.2.4.1\n const E = [];\n const A = {};\n select.variables = select.variables && select.variables.map(val => mapAggregate(val, A));\n select.having = select.having && select.having.map(val => mapAggregate(val, A));\n select.order = select.order && select.order.map(val => mapAggregate(val, A));\n // if there are any aggregates or if we have a groupBy (both result in a GROUP)\n if (select.group || Object.keys(A).length > 0) {\n const aggregates = Object.keys(A).map(v => translateBoundAggregate(A[v], factory.createTerm(v)));\n const vars = [];\n if (select.group) {\n for (const e of select.group) {\n if (util_1.default.isSimpleTerm(e.expression)) {\n vars.push(e.expression); // this will always be a var, otherwise sparql would be invalid\n }\n else {\n // Incorrect typings, e can have a variable, see for example group-variable test in sparql.js\n const v = 'variable' in e ? e.variable : generateFreshVar();\n res = factory.createExtend(res, v, translateExpression(e.expression));\n vars.push(v);\n }\n }\n }\n res = factory.createGroup(res, vars, aggregates);\n }\n // 18.2.4.2\n if (select.having)\n for (let filter of select.having)\n res = factory.createFilter(res, translateExpression(filter));\n // 18.2.4.3\n if (query.values)\n res = factory.createJoin([res, translateInlineData(query)]);\n // 18.2.4.4\n let PV = [];\n if (query.queryType === 'SELECT' || query.queryType === 'DESCRIBE') {\n // Sort variables for consistent output\n if (query.variables.some((e) => e && util_1.default.isWildcard(e)))\n PV = Object.values(inScopeVariables(query))\n .sort((left, right) => left.value.localeCompare(right.value));\n else {\n // Wildcard has been filtered out above\n for (let v of query.variables) {\n // can have non-variables with DESCRIBE\n if (isVariable(v) || !('variable' in v))\n PV.push(v);\n else if (v.variable) // ... AS ?x\n {\n PV.push(v.variable);\n E.push(v);\n }\n }\n }\n }\n // TODO: Jena simplifies by having a list of extends\n for (let v of E)\n res = factory.createExtend(res, v.variable, translateExpression(v.expression));\n // 18.2.5\n // not using toList and toMultiset\n // 18.2.5.1\n if (select.order)\n res = factory.createOrderBy(res, select.order.map((exp) => {\n let result = translateExpression(exp.expression);\n if (exp.descending)\n result = factory.createOperatorExpression('desc', [result]);\n return result;\n }));\n // 18.2.5.2\n // construct does not need a project (select, ask and describe do)\n if (query.queryType === 'SELECT')\n // Named nodes are only possible in a DESCRIBE so this cast is safe\n res = factory.createProject(res, PV);\n // 18.2.5.3\n if (select.distinct)\n res = factory.createDistinct(res);\n // 18.2.5.4\n if (select.reduced)\n res = factory.createReduced(res);\n // NEW: support for ask/construct/describe queries\n if (query.queryType === 'CONSTRUCT')\n res = factory.createConstruct(res, (query.template || []).map(translateQuad));\n else if (query.queryType === 'ASK')\n res = factory.createAsk(res);\n else if (query.queryType === 'DESCRIBE')\n res = factory.createDescribe(res, PV);\n // Slicing needs to happen after construct/describe\n // 18.2.5.5\n if (select.offset || select.limit)\n res = factory.createSlice(res, select.offset || 0, select.limit);\n if (select.from)\n res = factory.createFrom(res, select.from.default, select.from.named);\n return res;\n}\n// rewrites some of the input sparql object to make use of aggregate variables\nfunction mapAggregate(thingy, aggregates) {\n if ('type' in thingy && thingy.type === 'aggregate') {\n let found = false;\n let v;\n for (let key of Object.keys(aggregates)) {\n if (equal(aggregates[key], thingy)) {\n v = factory.createTerm(key);\n found = true;\n break;\n }\n }\n if (!found) {\n v = generateFreshVar();\n aggregates[(0, rdf_string_1.termToString)(v)] = thingy;\n }\n return v;\n }\n // non-aggregate expression\n if ('expression' in thingy && thingy.expression)\n return { ...thingy, expression: mapAggregate(thingy.expression, aggregates) };\n if ('args' in thingy && thingy.args)\n return { ...thingy, args: thingy.args.map(subthingy => mapAggregate(subthingy, aggregates)) };\n // Normal variable/wildcard\n return thingy;\n}\nfunction translateBoundAggregate(thingy, v) {\n if (thingy.type !== 'aggregate' || !thingy.aggregation)\n throw new Error(`Unexpected input: ${JSON.stringify(thingy)}`);\n const A = translateExpression(thingy);\n A.variable = v;\n return A;\n}\nfunction translateUpdate(thingy) {\n if (thingy.updates.length === 1)\n return translateSingleUpdate(thingy.updates[0]);\n return factory.createCompositeUpdate(thingy.updates.map(translateSingleUpdate));\n}\nfunction translateSingleUpdate(thingy) {\n if ('type' in thingy) {\n if (thingy.type === 'load')\n return translateUpdateGraphLoad(thingy);\n if (thingy.type === 'clear' || thingy.type === 'create' || thingy.type === 'drop')\n return translateUpdateGraph(thingy);\n if (thingy.type === 'add' || thingy.type === 'copy' || thingy.type === 'move')\n return translateUpdateGraphShortcut(thingy);\n }\n else if (thingy.updateType === 'insertdelete' || thingy.updateType === 'deletewhere' || thingy.updateType === 'delete' || thingy.updateType === 'insert')\n return translateInsertDelete(thingy);\n throw new Error(`Unknown update type ${JSON.stringify(thingy)}`);\n}\nfunction translateInsertDelete(thingy) {\n if (!useQuads)\n throw new Error('INSERT/DELETE operations are only supported with quads option enabled');\n let deleteTriples = [];\n let insertTriples = [];\n let where;\n if (thingy.delete)\n deleteTriples = util_1.default.flatten(thingy.delete.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.insert)\n insertTriples = util_1.default.flatten(thingy.insert.map(input => translateUpdateTriplesBlock(input, thingy.graph)));\n if (thingy.where && thingy.where.length > 0) {\n where = translateGroupGraphPattern({ type: 'group', patterns: thingy.where });\n // Wrong typings, see test \"using\" in Sparql.js\n const using = thingy.using;\n if (using)\n where = factory.createFrom(where, using.default, using.named);\n else if (thingy.graph)\n // This is equivalent\n where = recurseGraph(where, thingy.graph);\n }\n else if (thingy.updateType === 'deletewhere' && deleteTriples.length > 0) {\n where = factory.createBgp(deleteTriples);\n }\n return factory.createDeleteInsert(deleteTriples.length > 0 ? deleteTriples : undefined, insertTriples.length > 0 ? insertTriples : undefined, where);\n}\n// UPDATE parsing will always return quads and have no GRAPH elements\nfunction translateUpdateTriplesBlock(thingy, graph) {\n let currentGraph = graph;\n if (thingy.type === 'graph')\n currentGraph = thingy.name;\n let currentTriples = thingy.triples;\n if (currentGraph)\n currentTriples = currentTriples.map(triple => Object.assign(triple, { graph: currentGraph }));\n return currentTriples.map(translateQuad);\n}\nfunction translateUpdateGraph(thingy) {\n let source;\n if (util_1.default.isSimpleTerm(thingy.graph))\n source = thingy.graph;\n else if (thingy.graph.all)\n source = 'ALL';\n else if (thingy.graph.default)\n source = 'DEFAULT';\n else if (thingy.graph.named)\n source = 'NAMED';\n else\n source = thingy.graph.name;\n switch (thingy.type) {\n case 'clear': return factory.createClear(source, thingy.silent);\n case 'create': return factory.createCreate(source, thingy.silent);\n case 'drop': return factory.createDrop(source, thingy.silent);\n }\n}\nfunction translateUpdateGraphLoad(thingy) {\n return factory.createLoad(thingy.source, thingy.destination, thingy.silent);\n}\nfunction translateUpdateGraphShortcut(thingy) {\n const source = thingy.source.default ? 'DEFAULT' : thingy.source.name;\n const destination = thingy.destination.default ? 'DEFAULT' : thingy.destination.name;\n switch (thingy.type) {\n case 'copy': return factory.createCopy(source, destination, thingy.silent);\n case 'move': return factory.createMove(source, destination, thingy.silent);\n case 'add': return factory.createAdd(source, destination, thingy.silent);\n }\n}\nfunction translateBlankNodesToVariables(res) {\n const blankToVariableMapping = {};\n const variablesRaw = Array.from(variables).reduce((acc, variable) => {\n acc[variable] = true;\n return acc;\n }, {});\n return util_1.default.mapOperation(res, {\n [Algebra.types.DELETE_INSERT]: (op) => {\n // Only relevant for INSERT operations as others should never contain blank nodes\n return { result: op, recurse: false };\n },\n [Algebra.types.PATH]: (op, factory) => {\n return {\n result: factory.createPath(blankToVariable(op.subject), op.predicate, blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.PATTERN]: (op, factory) => {\n return {\n result: factory.createPattern(blankToVariable(op.subject), blankToVariable(op.predicate), blankToVariable(op.object), blankToVariable(op.graph)),\n recurse: false,\n };\n },\n [Algebra.types.CONSTRUCT]: (op) => {\n // Blank nodes in CONSTRUCT templates must be maintained\n return {\n result: factory.createConstruct(translateBlankNodesToVariables(op.input), op.template),\n recurse: false,\n };\n },\n });\n function blankToVariable(term) {\n if (term.termType === 'BlankNode') {\n let variable = blankToVariableMapping[term.value];\n if (!variable) {\n variable = util_1.default.createUniqueVariable(term.value, variablesRaw, factory.dataFactory);\n variablesRaw[variable.value] = true;\n blankToVariableMapping[term.value] = variable;\n }\n return variable;\n }\n return term;\n }\n}\n//# sourceMappingURL=sparqlAlgebra.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst algebra_1 = require(\"./algebra\");\nconst factory_1 = __importDefault(require(\"./factory\"));\nclass Util {\n /**\n * Flattens an array of arrays to an array.\n * @param arr - Array of arrays\n */\n static flatten(arr) {\n return Array.prototype.concat(...arr).filter(x => x);\n }\n /**\n * Outputs a JSON object corresponding to the input algebra-like.\n */\n static objectify(algebra) {\n if (algebra.termType) {\n if (algebra.termType === 'Quad') {\n return {\n type: 'pattern',\n termType: 'Quad',\n subject: Util.objectify(algebra.subject),\n predicate: Util.objectify(algebra.predicate),\n object: Util.objectify(algebra.object),\n graph: Util.objectify(algebra.graph),\n };\n }\n else {\n let result = { termType: algebra.termType, value: algebra.value };\n if (algebra.language)\n result.language = algebra.language;\n if (algebra.datatype)\n result.datatype = Util.objectify(algebra.datatype);\n return result;\n }\n }\n if (Array.isArray(algebra))\n return algebra.map(e => Util.objectify(e));\n if (algebra === Object(algebra)) {\n let result = {};\n for (let key of Object.keys(algebra))\n result[key] = Util.objectify(algebra[key]);\n return result;\n }\n return algebra;\n }\n /**\n * Detects all in-scope variables.\n * In practice this means iterating through the entire algebra tree, finding all variables,\n * and stopping when a project function is found.\n * @param {Operation} op - Input algebra tree.\n * @returns {Variable[]} - List of unique in-scope variables.\n */\n static inScopeVariables(op) {\n const variables = [];\n function addVariable(v) {\n if (!variables.find(v2 => v.value === v2.value))\n variables.push(v);\n }\n function recurseTerm(quad) {\n if (quad.subject.termType === 'Variable')\n addVariable(quad.subject);\n if (quad.predicate.termType === 'Variable')\n addVariable(quad.predicate);\n if (quad.object.termType === 'Variable')\n addVariable(quad.object);\n if (quad.graph.termType === 'Variable')\n addVariable(quad.graph);\n if (quad.subject.termType === 'Quad')\n recurseTerm(quad.subject);\n if (quad.predicate.termType === 'Quad')\n recurseTerm(quad.predicate);\n if (quad.object.termType === 'Quad')\n recurseTerm(quad.object);\n if (quad.graph.termType === 'Quad')\n recurseTerm(quad.graph);\n }\n // https://www.w3.org/TR/sparql11-query/#variableScope\n Util.recurseOperation(op, {\n [algebra_1.types.EXPRESSION]: (op) => {\n if (op.expressionType === algebra_1.expressionTypes.AGGREGATE && op.variable) {\n addVariable(op.variable);\n }\n return true;\n },\n [algebra_1.types.EXTEND]: (op) => {\n addVariable(op.variable);\n return true;\n },\n [algebra_1.types.GRAPH]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.GROUP]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n [algebra_1.types.PATH]: (op) => {\n if (op.subject.termType === 'Variable')\n addVariable(op.subject);\n if (op.object.termType === 'Variable')\n addVariable(op.object);\n if (op.graph.termType === 'Variable')\n addVariable(op.graph);\n if (op.subject.termType === 'Quad')\n recurseTerm(op.subject);\n if (op.object.termType === 'Quad')\n recurseTerm(op.object);\n if (op.graph.termType === 'Quad')\n recurseTerm(op.graph);\n return true;\n },\n [algebra_1.types.PATTERN]: (op) => {\n recurseTerm(op);\n return true;\n },\n [algebra_1.types.PROJECT]: (op) => {\n op.variables.forEach(addVariable);\n return false;\n },\n [algebra_1.types.SERVICE]: (op) => {\n if (op.name.termType === 'Variable')\n addVariable(op.name);\n return true;\n },\n [algebra_1.types.VALUES]: (op) => {\n op.variables.forEach(addVariable);\n return true;\n },\n });\n return variables;\n }\n /**\n * Recurses through the given algebra tree\n * A map of callback functions can be provided for individual Operation types to gather data.\n * The return value of those callbacks should indicate whether recursion should be applied or not.\n * Making modifications will change the original input object.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation) => boolean } callbacks - A map of required callback Operations.\n */\n static recurseOperation(op, callbacks) {\n let result = op;\n let doRecursion = true;\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n doRecursion = callback(op);\n if (!doRecursion)\n return;\n let recurseOp = (op) => Util.recurseOperation(op, callbacks);\n switch (result.type) {\n case algebra_1.types.ALT:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.ASK:\n recurseOp(result.input);\n break;\n case algebra_1.types.BGP:\n result.patterns.forEach(recurseOp);\n break;\n case algebra_1.types.CONSTRUCT:\n recurseOp(result.input);\n result.template.map(recurseOp);\n break;\n case algebra_1.types.DESCRIBE:\n recurseOp(result.input);\n break;\n case algebra_1.types.DISTINCT:\n recurseOp(result.input);\n break;\n case algebra_1.types.EXPRESSION:\n if (result.expressionType === algebra_1.expressionTypes.EXISTENCE) {\n recurseOp(result.input);\n }\n break;\n case algebra_1.types.EXTEND:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FILTER:\n recurseOp(result.input);\n recurseOp(result.expression);\n break;\n case algebra_1.types.FROM:\n recurseOp(result.input);\n break;\n case algebra_1.types.GRAPH:\n recurseOp(result.input);\n break;\n case algebra_1.types.GROUP:\n recurseOp(result.input);\n result.aggregates.forEach(recurseOp);\n break;\n case algebra_1.types.INV:\n recurseOp(result.path);\n break;\n case algebra_1.types.JOIN:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.LEFT_JOIN:\n result.input.map(recurseOp);\n if (result.expression)\n recurseOp(result.expression);\n break;\n case algebra_1.types.LINK:\n break;\n case algebra_1.types.MINUS:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.NOP:\n break;\n case algebra_1.types.NPS:\n break;\n case algebra_1.types.ONE_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ORDER_BY:\n recurseOp(result.input);\n result.expressions.forEach(recurseOp);\n break;\n case algebra_1.types.PATH:\n recurseOp(result.predicate);\n break;\n case algebra_1.types.PATTERN:\n break;\n case algebra_1.types.PROJECT:\n recurseOp(result.input);\n break;\n case algebra_1.types.REDUCED:\n recurseOp(result.input);\n break;\n case algebra_1.types.SEQ:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.SERVICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.SLICE:\n recurseOp(result.input);\n break;\n case algebra_1.types.UNION:\n result.input.map(recurseOp);\n break;\n case algebra_1.types.VALUES:\n break;\n case algebra_1.types.ZERO_OR_MORE_PATH:\n recurseOp(result.path);\n break;\n case algebra_1.types.ZERO_OR_ONE_PATH:\n recurseOp(result.path);\n break;\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n result.updates.forEach(update => recurseOp(update));\n break;\n case algebra_1.types.DELETE_INSERT:\n if (result.delete)\n result.delete.forEach(pattern => recurseOp(pattern));\n if (result.insert)\n result.insert.forEach(pattern => recurseOp(pattern));\n if (result.where)\n recurseOp(result.where);\n break;\n // all of these only have graph IDs as values\n case algebra_1.types.LOAD: break;\n case algebra_1.types.CLEAR: break;\n case algebra_1.types.CREATE: break;\n case algebra_1.types.DROP: break;\n case algebra_1.types.ADD: break;\n case algebra_1.types.MOVE: break;\n case algebra_1.types.COPY: break;\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Creates a deep copy of the given Operation.\n * Creates shallow copies of the non-Operation values.\n * A map of callback functions can be provided for individual Operation types\n * to specifically modify the given objects before triggering recursion.\n * The return value of those callbacks should indicate whether recursion should be applied to this returned object or not.\n * @param {Operation} op - The Operation to recurse on.\n * @param { [type: string]: (op: Operation, factory: Factory) => RecurseResult } callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapOperation(op, callbacks, factory) {\n let result = op;\n let doRecursion = true;\n factory = factory || new factory_1.default();\n const callback = callbacks[op.type];\n if (callback)\n // Not sure how to get typing correct for op here\n ({ result, recurse: doRecursion } = callback(op, factory));\n if (!doRecursion)\n return result;\n let mapOp = (op) => Util.mapOperation(op, callbacks, factory);\n // Several casts here might be wrong though depending on the callbacks output\n switch (result.type) {\n case algebra_1.types.ALT:\n return factory.createAlt(result.input.map(mapOp));\n case algebra_1.types.ASK:\n return factory.createAsk(mapOp(result.input));\n case algebra_1.types.BGP:\n return factory.createBgp(result.patterns.map(mapOp));\n case algebra_1.types.CONSTRUCT:\n return factory.createConstruct(mapOp(result.input), result.template.map(mapOp));\n case algebra_1.types.DESCRIBE:\n return factory.createDescribe(mapOp(result.input), result.terms);\n case algebra_1.types.DISTINCT:\n return factory.createDistinct(mapOp(result.input));\n case algebra_1.types.EXPRESSION:\n return Util.mapExpression(result, callbacks, factory);\n case algebra_1.types.EXTEND:\n return factory.createExtend(mapOp(result.input), result.variable, mapOp(result.expression));\n case algebra_1.types.FILTER:\n return factory.createFilter(mapOp(result.input), mapOp(result.expression));\n case algebra_1.types.FROM:\n return factory.createFrom(mapOp(result.input), [...result.default], [...result.named]);\n case algebra_1.types.GRAPH:\n return factory.createGraph(mapOp(result.input), result.name);\n case algebra_1.types.GROUP:\n return factory.createGroup(mapOp(result.input), [].concat(result.variables), result.aggregates.map(mapOp));\n case algebra_1.types.INV:\n return factory.createInv(mapOp(result.path));\n case algebra_1.types.JOIN:\n return factory.createJoin(result.input.map(mapOp));\n case algebra_1.types.LEFT_JOIN:\n return factory.createLeftJoin(mapOp(result.input[0]), mapOp(result.input[1]), result.expression ? mapOp(result.expression) : undefined);\n case algebra_1.types.LINK:\n return factory.createLink(result.iri);\n case algebra_1.types.MINUS:\n return factory.createMinus(mapOp(result.input[0]), mapOp(result.input[1]));\n case algebra_1.types.NOP:\n return factory.createNop();\n case algebra_1.types.NPS:\n return factory.createNps([].concat(result.iris));\n case algebra_1.types.ONE_OR_MORE_PATH:\n return factory.createOneOrMorePath(mapOp(result.path));\n case algebra_1.types.ORDER_BY:\n return factory.createOrderBy(mapOp(result.input), result.expressions.map(mapOp));\n case algebra_1.types.PATH:\n return factory.createPath(result.subject, mapOp(result.predicate), result.object, result.graph);\n case algebra_1.types.PATTERN:\n return factory.createPattern(result.subject, result.predicate, result.object, result.graph);\n case algebra_1.types.PROJECT:\n return factory.createProject(mapOp(result.input), [...result.variables]);\n case algebra_1.types.REDUCED:\n return factory.createReduced(mapOp(result.input));\n case algebra_1.types.SEQ:\n return factory.createSeq(result.input.map(mapOp));\n case algebra_1.types.SERVICE:\n return factory.createService(mapOp(result.input), result.name, result.silent);\n case algebra_1.types.SLICE:\n return factory.createSlice(mapOp(result.input), result.start, result.length);\n case algebra_1.types.UNION:\n return factory.createUnion(result.input.map(mapOp));\n case algebra_1.types.VALUES:\n return factory.createValues([].concat(result.variables), result.bindings.map(b => Object.assign({}, b)));\n case algebra_1.types.ZERO_OR_MORE_PATH:\n return factory.createZeroOrMorePath(mapOp(result.path));\n case algebra_1.types.ZERO_OR_ONE_PATH:\n return factory.createZeroOrOnePath(mapOp(result.path));\n // UPDATE operations\n case algebra_1.types.COMPOSITE_UPDATE:\n return factory.createCompositeUpdate(result.updates.map(mapOp));\n case algebra_1.types.DELETE_INSERT:\n return factory.createDeleteInsert(result.delete ? result.delete.map(mapOp) : undefined, result.insert ? result.insert.map(mapOp) : undefined, result.where ? mapOp(result.where) : undefined);\n case algebra_1.types.LOAD:\n return factory.createLoad(result.source, result.destination, result.silent);\n case algebra_1.types.CLEAR:\n return factory.createClear(result.source, result.silent);\n case algebra_1.types.CREATE:\n return factory.createCreate(result.source, result.silent);\n case algebra_1.types.DROP:\n return factory.createDrop(result.source, result.silent);\n case algebra_1.types.ADD:\n return factory.createAdd(result.source, result.destination);\n case algebra_1.types.MOVE:\n return factory.createMove(result.source, result.destination);\n case algebra_1.types.COPY:\n return factory.createCopy(result.source, result.destination);\n default: throw new Error(`Unknown Operation type ${result.type}`);\n }\n }\n /**\n * Similar to the {@link mapOperation} function but specifically for expressions.\n * Both functions call each other while copying.\n * Should not be called directly since it does not execute the callbacks, these happen in {@link mapOperation}.\n * @param {Expression} expr - The Operation to recurse on.\n * @param { [type: string]: (op: Operation, factory: Factory) => RecurseResult } callbacks - A map of required callback Operations.\n * @param {Factory} factory - Factory used to create new Operations. Will use default factory if none is provided.\n * @returns {Operation} - The copied result.\n */\n static mapExpression(expr, callbacks, factory) {\n let recurse = (op) => Util.mapOperation(op, callbacks, factory);\n switch (expr.expressionType) {\n case algebra_1.expressionTypes.AGGREGATE:\n if (expr.variable) {\n return factory.createBoundAggregate(expr.variable, expr.aggregator, recurse(expr.expression), expr.distinct, expr.separator);\n }\n return factory.createAggregateExpression(expr.aggregator, recurse(expr.expression), expr.distinct, expr.separator);\n case algebra_1.expressionTypes.EXISTENCE:\n return factory.createExistenceExpression(expr.not, recurse(expr.input));\n case algebra_1.expressionTypes.NAMED:\n return factory.createNamedExpression(expr.name, expr.args.map(recurse));\n case algebra_1.expressionTypes.OPERATOR:\n return factory.createOperatorExpression(expr.operator, expr.args.map(recurse));\n case algebra_1.expressionTypes.TERM:\n return factory.createTermExpression(expr.term);\n case algebra_1.expressionTypes.WILDCARD:\n return factory.createWildcardExpression();\n default: throw new Error(`Unknown Expression type ${expr.expressionType}`);\n }\n }\n static createUniqueVariable(label, variables, dataFactory) {\n let counter = 0;\n let labelLoop = label;\n while (variables[labelLoop]) {\n labelLoop = `${label}${counter++}`;\n }\n return dataFactory.variable(labelLoop);\n }\n // separate terms from wildcard since we handle them differently\n static isSimpleTerm(term) {\n return term.termType !== undefined && term.termType !== 'Quad' && term.termType !== 'Wildcard';\n }\n static isQuad(term) {\n return term.termType === 'Quad';\n }\n static isWildcard(term) {\n return term.termType === 'Wildcard';\n }\n}\nexports.default = Util;\n//# sourceMappingURL=util.js.map","var XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer';\nvar XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';\n\nfunction Generator(options) {\n this._options = options = options || {};\n\n var prefixes = options.prefixes || {};\n this._prefixByIri = {};\n var prefixIris = [];\n for (var prefix in prefixes) {\n var iri = prefixes[prefix];\n if (isString(iri)) {\n this._prefixByIri[iri] = prefix;\n prefixIris.push(iri);\n }\n }\n var iriList = prefixIris.join('|').replace(/[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n this._prefixRegex = new RegExp('^(' + iriList + ')([a-zA-Z][\\\\-_a-zA-Z0-9]*)$');\n this._usedPrefixes = {};\n this._sparqlStar = options.sparqlStar;\n this._indent = isString(options.indent) ? options.indent : ' ';\n this._newline = isString(options.newline) ? options.newline : '\\n';\n this._explicitDatatype = Boolean(options.explicitDatatype);\n}\n\n// Converts the parsed query object into a SPARQL query\nGenerator.prototype.toQuery = function (q) {\n var query = '';\n\n if (q.queryType)\n query += q.queryType.toUpperCase() + ' ';\n if (q.reduced)\n query += 'REDUCED ';\n if (q.distinct)\n query += 'DISTINCT ';\n\n if (q.variables){\n query += mapJoin(q.variables, undefined, function (variable) {\n return isTerm(variable) ? this.toEntity(variable) :\n '(' + this.toExpression(variable.expression) + ' AS ' + variableToString(variable.variable) + ')';\n }, this) + ' ';\n }\n else if (q.template)\n query += this.group(q.template, true) + this._newline;\n\n if (q.from)\n query += this.graphs('FROM ', q.from.default) + this.graphs('FROM NAMED ', q.from.named);\n if (q.where)\n query += 'WHERE ' + this.group(q.where, true) + this._newline;\n\n if (q.updates)\n query += mapJoin(q.updates, ';' + this._newline, this.toUpdate, this);\n\n if (q.group)\n query += 'GROUP BY ' + mapJoin(q.group, undefined, function (it) {\n var result = isTerm(it.expression)\n ? this.toEntity(it.expression)\n : '(' + this.toExpression(it.expression) + ')';\n return it.variable ? '(' + result + ' AS ' + variableToString(it.variable) + ')' : result;\n }, this) + this._newline;\n if (q.having)\n query += 'HAVING (' + mapJoin(q.having, undefined, this.toExpression, this) + ')' + this._newline;\n if (q.order)\n query += 'ORDER BY ' + mapJoin(q.order, undefined, function (it) {\n var expr = '(' + this.toExpression(it.expression) + ')';\n return !it.descending ? expr : 'DESC ' + expr;\n }, this) + this._newline;\n\n if (q.offset)\n query += 'OFFSET ' + q.offset + this._newline;\n if (q.limit)\n query += 'LIMIT ' + q.limit + this._newline;\n\n if (q.values)\n query += this.values(q);\n\n // stringify prefixes at the end to mark used ones\n query = this.baseAndPrefixes(q) + query;\n return query.trim();\n};\n\nGenerator.prototype.baseAndPrefixes = function (q) {\n var base = q.base ? ('BASE <' + q.base + '>' + this._newline) : '';\n var prefixes = '';\n for (var key in q.prefixes) {\n if (this._options.allPrefixes || this._usedPrefixes[key])\n prefixes += 'PREFIX ' + key + ': <' + q.prefixes[key] + '>' + this._newline;\n }\n return base + prefixes;\n};\n\n// Converts the parsed SPARQL pattern into a SPARQL pattern\nGenerator.prototype.toPattern = function (pattern) {\n var type = pattern.type || (pattern instanceof Array) && 'array' ||\n (pattern.subject && pattern.predicate && pattern.object ? 'triple' : '');\n if (!(type in this))\n throw new Error('Unknown entry type: ' + type);\n return this[type](pattern);\n};\n\nGenerator.prototype.triple = function (t) {\n return this.toEntity(t.subject) + ' ' + this.toEntity(t.predicate) + ' ' + this.toEntity(t.object) + '.';\n};\n\nGenerator.prototype.array = function (items) {\n return mapJoin(items, this._newline, this.toPattern, this);\n};\n\nGenerator.prototype.bgp = function (bgp) {\n return this.encodeTriples(bgp.triples);\n};\n\nGenerator.prototype.encodeTriples = function (triples) {\n if (!triples.length)\n return '';\n\n var parts = [], subject = undefined, predicate = undefined;\n for (var i = 0; i < triples.length; i++) {\n var triple = triples[i];\n // Triple with different subject\n if (!equalTerms(triple.subject, subject)) {\n // Terminate previous triple\n if (subject)\n parts.push('.' + this._newline);\n subject = triple.subject;\n predicate = triple.predicate;\n parts.push(this.toEntity(subject), ' ', this.toEntity(predicate));\n }\n // Triple with same subject but different predicate\n else if (!equalTerms(triple.predicate, predicate)) {\n predicate = triple.predicate;\n parts.push(';' + this._newline, this._indent, this.toEntity(predicate));\n }\n // Triple with same subject and predicate\n else {\n parts.push(',');\n }\n parts.push(' ', this.toEntity(triple.object));\n }\n parts.push('.');\n\n return parts.join('');\n}\n\nGenerator.prototype.graph = function (graph) {\n return 'GRAPH ' + this.toEntity(graph.name) + ' ' + this.group(graph);\n};\n\nGenerator.prototype.graphs = function (keyword, graphs) {\n return !graphs || graphs.length === 0 ? '' :\n mapJoin(graphs, '', function (g) { return keyword + this.toEntity(g) + this._newline; }, this)\n}\n\nGenerator.prototype.group = function (group, inline) {\n group = inline !== true ? this.array(group.patterns || group.triples)\n : this.toPattern(group.type !== 'group' ? group : group.patterns);\n return group.indexOf(this._newline) === -1 ? '{ ' + group + ' }' : '{' + this._newline + this.indent(group) + this._newline + '}';\n};\n\nGenerator.prototype.query = function (query) {\n return this.toQuery(query);\n};\n\nGenerator.prototype.filter = function (filter) {\n return 'FILTER(' + this.toExpression(filter.expression) + ')';\n};\n\nGenerator.prototype.bind = function (bind) {\n return 'BIND(' + this.toExpression(bind.expression) + ' AS ' + variableToString(bind.variable) + ')';\n};\n\nGenerator.prototype.optional = function (optional) {\n return 'OPTIONAL ' + this.group(optional);\n};\n\nGenerator.prototype.union = function (union) {\n return mapJoin(union.patterns, this._newline + 'UNION' + this._newline, function (p) { return this.group(p, true); }, this);\n};\n\nGenerator.prototype.minus = function (minus) {\n return 'MINUS ' + this.group(minus);\n};\n\nGenerator.prototype.values = function (valuesList) {\n // Gather unique keys\n var keys = Object.keys(valuesList.values.reduce(function (keyHash, values) {\n for (var key in values) keyHash[key] = true;\n return keyHash;\n }, {}));\n // Check whether simple syntax can be used\n var lparen, rparen;\n if (keys.length === 1) {\n lparen = rparen = '';\n } else {\n lparen = '(';\n rparen = ')';\n }\n // Create value rows\n return 'VALUES ' + lparen + keys.join(' ') + rparen + ' {' + this._newline +\n mapJoin(valuesList.values, this._newline, function (values) {\n return ' ' + lparen + mapJoin(keys, undefined, function (key) {\n return values[key] ? this.toEntity(values[key]) : 'UNDEF';\n }, this) + rparen;\n }, this) + this._newline + '}';\n};\n\nGenerator.prototype.service = function (service) {\n return 'SERVICE ' + (service.silent ? 'SILENT ' : '') + this.toEntity(service.name) + ' ' +\n this.group(service);\n};\n\n// Converts the parsed expression object into a SPARQL expression\nGenerator.prototype.toExpression = function (expr) {\n if (isTerm(expr)) {\n return this.toEntity(expr);\n }\n switch (expr.type.toLowerCase()) {\n case 'aggregate':\n return expr.aggregation.toUpperCase() +\n '(' + (expr.distinct ? 'DISTINCT ' : '') + this.toExpression(expr.expression) +\n (expr.separator ? '; SEPARATOR = ' + '\"' + expr.separator.replace(escape, escapeReplacer) + '\"' : '') + ')';\n case 'functioncall':\n return this.toEntity(expr.function) + '(' + mapJoin(expr.args, ', ', this.toExpression, this) + ')';\n case 'operation':\n var operator = expr.operator.toUpperCase(), args = expr.args || [];\n switch (expr.operator.toLowerCase()) {\n // Infix operators\n case '<':\n case '>':\n case '>=':\n case '<=':\n case '&&':\n case '||':\n case '=':\n case '!=':\n case '+':\n case '-':\n case '*':\n case '/':\n return (isTerm(args[0]) ? this.toEntity(args[0]) : '(' + this.toExpression(args[0]) + ')') +\n ' ' + operator + ' ' +\n (isTerm(args[1]) ? this.toEntity(args[1]) : '(' + this.toExpression(args[1]) + ')');\n // Unary operators\n case '!':\n return '!(' + this.toExpression(args[0]) + ')';\n case 'uminus':\n return '-(' + this.toExpression(args[0]) + ')';\n // IN and NOT IN\n case 'notin':\n operator = 'NOT IN';\n case 'in':\n return this.toExpression(args[0]) + ' ' + operator +\n '(' + (isString(args[1]) ? args[1] : mapJoin(args[1], ', ', this.toExpression, this)) + ')';\n // EXISTS and NOT EXISTS\n case 'notexists':\n operator = 'NOT EXISTS';\n case 'exists':\n return operator + ' ' + this.group(args[0], true);\n // Other expressions\n default:\n return operator + '(' + mapJoin(args, ', ', this.toExpression, this) + ')';\n }\n default:\n throw new Error('Unknown expression type: ' + expr.type);\n }\n};\n\n// Converts the parsed entity (or property path) into a SPARQL entity\nGenerator.prototype.toEntity = function (value) {\n if (isTerm(value)) {\n switch (value.termType) {\n // variable, * selector, or blank node\n case 'Wildcard':\n return '*';\n case 'Variable':\n return variableToString(value);\n case 'BlankNode':\n return '_:' + value.value;\n // literal\n case 'Literal':\n var lexical = value.value || '', language = value.language || '', datatype = value.datatype;\n value = '\"' + lexical.replace(escape, escapeReplacer) + '\"';\n if (language){\n value += '@' + language;\n } else if (datatype) {\n // Abbreviate literals when possible\n if (!this._explicitDatatype) {\n switch (datatype.value) {\n case XSD_STRING:\n return value;\n case XSD_INTEGER:\n if (/^\\d+$/.test(lexical))\n // Add space to avoid confusion with decimals in broken parsers\n return lexical + ' ';\n }\n }\n value += '^^' + this.encodeIRI(datatype.value);\n }\n return value;\n case 'Quad':\n if (!this._sparqlStar)\n throw new Error('SPARQL* support is not enabled');\n\n if (value.graph && value.graph.termType !== \"DefaultGraph\") {\n return '<< GRAPH ' +\n this.toEntity(value.graph) +\n ' { ' +\n this.toEntity(value.subject) + ' ' +\n this.toEntity(value.predicate) + ' ' +\n this.toEntity(value.object) +\n ' } ' +\n ' >>'\n }\n else {\n return (\n '<< ' +\n this.toEntity(value.subject) + ' ' +\n this.toEntity(value.predicate) + ' ' +\n this.toEntity(value.object) +\n ' >>'\n );\n }\n // IRI\n default:\n return this.encodeIRI(value.value);\n }\n }\n // property path\n else {\n var items = value.items.map(this.toEntity, this), path = value.pathType;\n switch (path) {\n // prefix operator\n case '^':\n case '!':\n return path + items[0];\n // postfix operator\n case '*':\n case '+':\n case '?':\n return '(' + items[0] + path + ')';\n // infix operator\n default:\n return '(' + items.join(path) + ')';\n }\n }\n};\nvar escape = /[\"\\\\\\t\\n\\r\\b\\f]/g,\n escapeReplacer = function (c) { return escapeReplacements[c]; },\n escapeReplacements = { '\\\\': '\\\\\\\\', '\"': '\\\\\"', '\\t': '\\\\t',\n '\\n': '\\\\n', '\\r': '\\\\r', '\\b': '\\\\b', '\\f': '\\\\f' };\n\n// Represent the IRI, as a prefixed name when possible\nGenerator.prototype.encodeIRI = function (iri) {\n var prefixMatch = this._prefixRegex.exec(iri);\n if (prefixMatch) {\n var prefix = this._prefixByIri[prefixMatch[1]];\n this._usedPrefixes[prefix] = true;\n return prefix + ':' + prefixMatch[2];\n }\n return '<' + iri + '>';\n};\n\n// Converts the parsed update object into a SPARQL update clause\nGenerator.prototype.toUpdate = function (update) {\n switch (update.type || update.updateType) {\n case 'load':\n return 'LOAD' + (update.source ? ' ' + this.toEntity(update.source) : '') +\n (update.destination ? ' INTO GRAPH ' + this.toEntity(update.destination) : '');\n case 'insert':\n return 'INSERT DATA ' + this.group(update.insert, true);\n case 'delete':\n return 'DELETE DATA ' + this.group(update.delete, true);\n case 'deletewhere':\n return 'DELETE WHERE ' + this.group(update.delete, true);\n case 'insertdelete':\n return (update.graph ? 'WITH ' + this.toEntity(update.graph) + this._newline : '') +\n (update.delete.length ? 'DELETE ' + this.group(update.delete, true) + this._newline : '') +\n (update.insert.length ? 'INSERT ' + this.group(update.insert, true) + this._newline : '') +\n (update.using ? this.graphs('USING ', update.using.default) : '') +\n (update.using ? this.graphs('USING NAMED ', update.using.named) : '') +\n 'WHERE ' + this.group(update.where, true);\n case 'add':\n case 'copy':\n case 'move':\n return update.type.toUpperCase() + (update.source.default ? ' DEFAULT ' : ' ') +\n 'TO ' + this.toEntity(update.destination.name);\n case 'create':\n case 'clear':\n case 'drop':\n return update.type.toUpperCase() + (update.silent ? ' SILENT ' : ' ') + (\n update.graph.default ? 'DEFAULT' :\n update.graph.named ? 'NAMED' :\n update.graph.all ? 'ALL' :\n ('GRAPH ' + this.toEntity(update.graph.name))\n );\n default:\n throw new Error('Unknown update query type: ' + update.type);\n }\n};\n\n// Indents each line of the string\nGenerator.prototype.indent = function(text) { return text.replace(/^/gm, this._indent); }\n\nfunction variableToString(variable){\n return '?' + variable.value;\n}\n\n// Checks whether the object is a string\nfunction isString(object) { return typeof object === 'string'; }\n\n// Checks whether the object is a Term\nfunction isTerm(object) {\n return typeof object.termType === 'string';\n}\n\n// Checks whether term1 and term2 are equivalent without `.equals()` prototype method\nfunction equalTerms(term1, term2) {\n if (!term1 || !isTerm(term1)) { return false; }\n if (!term2 || !isTerm(term2)) { return false; }\n if (term1.termType !== term2.termType) { return false; }\n switch (term1.termType) {\n case 'Literal':\n return term1.value === term2.value\n && term1.language === term2.language\n && equalTerms(term1.datatype, term2.datatype);\n case 'Quad':\n return equalTerms(term1.subject, term2.subject)\n && equalTerms(term1.predicate, term2.predicate)\n && equalTerms(term1.object, term2.object)\n && equalTerms(term1.graph, term2.graph);\n default:\n return term1.value === term2.value;\n }\n}\n\n// Maps the array with the given function, and joins the results using the separator\nfunction mapJoin(array, sep, func, self) {\n return array.map(func, self).join(isString(sep) ? sep : ' ');\n}\n\n/**\n * @param options {\n * allPrefixes: boolean,\n * indentation: string,\n * newline: string\n * }\n */\nmodule.exports = function SparqlGenerator(options = {}) {\n return {\n stringify: function (query) {\n var currentOptions = Object.create(options);\n currentOptions.prefixes = query.prefixes;\n return new Generator(currentOptions).toQuery(query);\n },\n createGenerator: function() { return new Generator(options); }\n };\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar SparqlParser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,12,15,28,41,50,55,107,117,120,122,123,132,133,138,322,323,324,325,326],$V1=[2,209],$V2=[107,117,120,122,123,132,133,138,322,323,324,325,326],$V3=[1,20],$V4=[1,29],$V5=[6,90],$V6=[45,46,58],$V7=[45,58],$V8=[1,58],$V9=[1,60],$Va=[1,56],$Vb=[1,59],$Vc=[1,65],$Vd=[1,66],$Ve=[26,34,35],$Vf=[13,16,312],$Vg=[119,141,320,327],$Vh=[13,16,119,141,312],$Vi=[1,88],$Vj=[1,92],$Vk=[1,94],$Vl=[119,141,320,321,327],$Vm=[13,16,119,141,312,321],$Vn=[1,100],$Vo=[2,251],$Vp=[1,99],$Vq=[13,16,34,35,87,93,226,231,245,246,299,300,301,302,303,304,305,306,307,308,309,310,311,312],$Vr=[6,45,46,58,68,75,78,86,88,90],$Vs=[6,13,16,34,45,46,58,68,75,78,86,88,90,312],$Vt=[6,13,16,26,34,35,37,38,45,46,48,58,68,75,78,86,87,88,90,93,100,116,119,132,133,135,140,167,168,170,173,174,191,195,219,224,226,227,231,235,245,246,250,254,258,273,278,295,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328,330,331,333,334,335,336,337,338,339,340],$Vu=[34,35,45,46,58],$Vv=[13,16,34,35,87,275,276,277,279,281,282,284,285,288,290,299,300,301,302,303,304,305,306,307,308,309,310,311,312,340,341,342,343,344,345],$Vw=[2,454],$Vx=[1,123],$Vy=[1,117],$Vz=[1,124],$VA=[1,125],$VB=[6,13,16,34,35,46,48,87,90,93,119,167,168,170,173,174,226,231,245,246,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328],$VC=[2,310],$VD=[1,142],$VE=[1,140],$VF=[6,191],$VG=[2,327],$VH=[2,315],$VI=[45,135],$VJ=[6,48,78,86,88,90],$VK=[2,255],$VL=[1,156],$VM=[1,158],$VN=[6,48,75,78,86,88,90],$VO=[2,253],$VP=[1,164],$VQ=[1,176],$VR=[1,174],$VS=[1,184],$VT=[1,182],$VU=[1,175],$VV=[1,180],$VW=[1,181],$VX=[1,185],$VY=[1,186],$VZ=[1,189],$V_=[1,190],$V$=[1,191],$V01=[1,192],$V11=[1,193],$V21=[1,194],$V31=[1,195],$V41=[1,196],$V51=[1,197],$V61=[1,198],$V71=[1,199],$V81=[6,68,75,78,86,88,90],$V91=[37,38,191,250,278],$Va1=[37,38,191,250,254,278],$Vb1=[37,38,191,250,254,258,273,278,295,306,307,308,309,310,311,334,335,336,337,338,339,340],$Vc1=[26,37,38,191,250,254,258,273,278,295,306,307,308,309,310,311,331,334,335,336,337,338,339,340],$Vd1=[1,229],$Ve1=[1,230],$Vf1=[1,232],$Vg1=[1,233],$Vh1=[1,234],$Vi1=[1,235],$Vj1=[1,237],$Vk1=[1,238],$Vl1=[2,461],$Vm1=[1,240],$Vn1=[1,241],$Vo1=[1,242],$Vp1=[1,248],$Vq1=[1,243],$Vr1=[1,244],$Vs1=[1,245],$Vt1=[1,246],$Vu1=[1,247],$Vv1=[13,16,48,87,100,231,299,300,301,302,303,304,305,306,307,308,309,310,311,312],$Vw1=[48,93],$Vx1=[34,38],$Vy1=[6,116,191],$Vz1=[48,119],$VA1=[6,48,86,88,90],$VB1=[2,339],$VC1=[2,331],$VD1=[1,293],$VE1=[1,295],$VF1=[48,119,328],$VG1=[13,16,34,195,312],$VH1=[13,16,34,35,38,46,48,87,90,93,119,167,168,170,173,174,191,195,219,224,226,227,231,235,245,246,278,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328],$VI1=[13,16,26,34,35,37,38,46,48,87,90,93,100,119,167,168,170,173,174,191,195,219,224,226,227,231,235,245,246,250,254,258,273,278,295,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328,331,334,335,336,337,338,339,340],$VJ1=[13,16,26,34,35,37,38,46,48,87,90,93,100,119,167,168,170,173,174,191,195,219,224,226,227,231,235,245,246,250,254,258,273,278,295,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328,331,334,335,336,337,338,339,340],$VK1=[13,16,34,35,87,219,273,275,276,277,279,281,282,284,285,288,290,299,300,301,302,303,304,305,306,307,308,309,310,311,312,334,340,341,342,343,344,345],$VL1=[1,329],$VM1=[1,330],$VN1=[1,332],$VO1=[1,331],$VP1=[6,13,16,26,34,35,37,38,46,48,75,78,81,83,86,87,88,90,93,119,167,168,170,173,174,191,226,231,245,246,250,254,258,273,275,276,277,278,279,281,282,284,285,288,290,295,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328,331,334,335,336,337,338,339,340,341,342,343,344,345],$VQ1=[1,340],$VR1=[1,339],$VS1=[35,93],$VT1=[1,353],$VU1=[1,354],$VV1=[1,367],$VW1=[6,48,90],$VX1=[6,13,16,35,48,78,86,88,90,275,276,277,279,281,282,284,285,288,290,312,340,341,342,343,344,345],$VY1=[6,13,16,34,35,46,48,78,81,83,86,87,88,90,93,119,167,168,170,173,174,226,231,245,246,275,276,277,279,281,282,284,285,288,290,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328,340,341,342,343,344,345],$VZ1=[46,48,90,119,167,168,170,173,174],$V_1=[1,386],$V$1=[1,387],$V02=[1,393],$V12=[1,392],$V22=[48,119,191,227,328],$V32=[13,16,34,35,38,87,93,226,231,245,246,299,300,301,302,303,304,305,306,307,308,309,310,311,312],$V42=[13,16,34,35,38,48,87,93,119,191,226,227,231,245,246,278,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328],$V52=[13,16,26,34,35,87,219,273,275,276,277,279,281,282,284,285,288,290,299,300,301,302,303,304,305,306,307,308,309,310,311,312,334,340,341,342,343,344,345],$V62=[13,16,38,48,87,100,231,299,300,301,302,303,304,305,306,307,308,309,310,311,312],$V72=[35,48],$V82=[2,330],$V92=[1,451],$Va2=[1,448],$Vb2=[1,449],$Vc2=[6,13,16,26,34,35,37,38,46,48,68,75,78,81,83,86,87,88,90,93,119,167,168,170,173,174,191,226,231,245,246,250,254,258,273,275,276,277,278,279,281,282,284,285,288,290,295,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328,329,331,334,335,336,337,338,339,340,341,342,343,344,345],$Vd2=[13,16,35,195,219,224,312],$Ve2=[2,387],$Vf2=[1,469],$Vg2=[46,48,90,119,167,168,170,173,174,328],$Vh2=[13,16,34,35,195,219,224,312],$Vi2=[6,13,16,34,35,48,75,78,86,88,90,275,276,277,279,281,282,284,285,288,290,312,340,341,342,343,344,345],$Vj2=[13,16,34,35,38,48,87,93,119,191,195,226,227,231,245,246,278,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328],$Vk2=[6,13,16,34,35,48,81,83,86,88,90,275,276,277,279,281,282,284,285,288,290,312,340,341,342,343,344,345],$Vl2=[13,16,34,35,46,48,87,90,93,119,167,168,170,173,174,226,231,245,246,299,300,301,302,303,304,305,306,307,308,309,310,311,312],$Vm2=[13,16,34,312],$Vn2=[13,16,34,35,46,48,87,90,93,119,167,168,170,173,174,226,231,245,246,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328],$Vo2=[2,342],$Vp2=[13,16,34,35,38,46,48,87,90,93,119,167,168,170,173,174,191,226,227,231,245,246,278,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328],$Vq2=[13,16,34,35,37,38,46,48,87,90,93,119,167,168,170,173,174,191,195,219,224,226,227,231,235,245,246,278,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328],$Vr2=[2,337],$Vs2=[13,16,35,195,219,312],$Vt2=[13,16,34,35,38,46,48,87,90,93,119,167,168,170,173,174,191,195,219,224,226,227,231,245,246,278,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328],$Vu2=[13,16,38,87,100,231,299,300,301,302,303,304,305,306,307,308,309,310,311,312],$Vv2=[46,48,90,119,167,168,170,173,174,191,227,328],$Vw2=[13,16,34,38,48,87,100,195,231,235,299,300,301,302,303,304,305,306,307,308,309,310,311,312],$Vx2=[13,16,34,35,48,87,93,119,226,231,245,246,299,300,301,302,303,304,305,306,307,308,309,310,311,312],$Vy2=[13,16,34,35,38,87,93,226,231,245,246,299,300,301,302,303,304,305,306,307,308,309,310,311,312,330,331],$Vz2=[13,16,26,34,35,38,87,93,226,231,245,246,299,300,301,302,303,304,305,306,307,308,309,310,311,312,330,331,333,334],$VA2=[1,630],$VB2=[1,631],$VC2=[2,325],$VD2=[13,16,38,195,224,312];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"QueryOrUpdate\":3,\"Prologue\":4,\"QueryOrUpdate_group0\":5,\"EOF\":6,\"Prologue_repetition0\":7,\"Query\":8,\"Query_group0\":9,\"Query_option0\":10,\"BaseDecl\":11,\"BASE\":12,\"IRIREF\":13,\"PrefixDecl\":14,\"PREFIX\":15,\"PNAME_NS\":16,\"SelectQuery\":17,\"SelectClauseWildcard\":18,\"SelectQuery_repetition0\":19,\"WhereClause\":20,\"SolutionModifierNoGroup\":21,\"SelectClauseVars\":22,\"SelectQuery_repetition1\":23,\"SolutionModifier\":24,\"SelectClauseBase\":25,\"*\":26,\"SelectClauseVars_repetition_plus0\":27,\"SELECT\":28,\"SelectClauseBase_option0\":29,\"SubSelect\":30,\"SubSelect_option0\":31,\"SubSelect_option1\":32,\"SelectClauseItem\":33,\"VAR\":34,\"(\":35,\"Expression\":36,\"AS\":37,\")\":38,\"VarTriple\":39,\"ConstructQuery\":40,\"CONSTRUCT\":41,\"ConstructTemplate\":42,\"ConstructQuery_repetition0\":43,\"ConstructQuery_repetition1\":44,\"WHERE\":45,\"{\":46,\"ConstructQuery_option0\":47,\"}\":48,\"DescribeQuery\":49,\"DESCRIBE\":50,\"DescribeQuery_group0\":51,\"DescribeQuery_repetition0\":52,\"DescribeQuery_option0\":53,\"AskQuery\":54,\"ASK\":55,\"AskQuery_repetition0\":56,\"DatasetClause\":57,\"FROM\":58,\"DatasetClause_option0\":59,\"iri\":60,\"WhereClause_option0\":61,\"GroupGraphPattern\":62,\"SolutionModifier_option0\":63,\"SolutionModifierNoGroup_option0\":64,\"SolutionModifierNoGroup_option1\":65,\"SolutionModifierNoGroup_option2\":66,\"GroupClause\":67,\"GROUP\":68,\"BY\":69,\"GroupClause_repetition_plus0\":70,\"GroupCondition\":71,\"BuiltInCall\":72,\"FunctionCall\":73,\"HavingClause\":74,\"HAVING\":75,\"HavingClause_repetition_plus0\":76,\"OrderClause\":77,\"ORDER\":78,\"OrderClause_repetition_plus0\":79,\"OrderCondition\":80,\"ASC\":81,\"BrackettedExpression\":82,\"DESC\":83,\"Constraint\":84,\"LimitOffsetClauses\":85,\"LIMIT\":86,\"INTEGER\":87,\"OFFSET\":88,\"ValuesClause\":89,\"VALUES\":90,\"InlineData\":91,\"InlineData_repetition0\":92,\"NIL\":93,\"InlineData_repetition1\":94,\"InlineData_repetition_plus2\":95,\"InlineData_repetition3\":96,\"DataBlockValue\":97,\"Literal\":98,\"ConstTriple\":99,\"UNDEF\":100,\"DataBlockValueList\":101,\"DataBlockValueList_repetition_plus0\":102,\"Update\":103,\"Update_repetition0\":104,\"Update1\":105,\"Update_option0\":106,\"LOAD\":107,\"Update1_option0\":108,\"Update1_option1\":109,\"Update1_group0\":110,\"Update1_option2\":111,\"GraphRefAll\":112,\"Update1_group1\":113,\"Update1_option3\":114,\"GraphOrDefault\":115,\"TO\":116,\"CREATE\":117,\"Update1_option4\":118,\"GRAPH\":119,\"INSERTDATA\":120,\"QuadPattern\":121,\"DELETEDATA\":122,\"DELETEWHERE\":123,\"Update1_option5\":124,\"InsertClause\":125,\"Update1_option6\":126,\"Update1_repetition0\":127,\"Update1_option7\":128,\"DeleteClause\":129,\"Update1_option8\":130,\"Update1_repetition1\":131,\"DELETE\":132,\"INSERT\":133,\"UsingClause\":134,\"USING\":135,\"UsingClause_option0\":136,\"WithClause\":137,\"WITH\":138,\"IntoGraphClause\":139,\"INTO\":140,\"DEFAULT\":141,\"GraphOrDefault_option0\":142,\"GraphRefAll_group0\":143,\"QuadPattern_option0\":144,\"QuadPattern_repetition0\":145,\"QuadsNotTriples\":146,\"QuadsNotTriples_group0\":147,\"QuadsNotTriples_option0\":148,\"QuadsNotTriples_option1\":149,\"QuadsNotTriples_option2\":150,\"TriplesTemplate\":151,\"TriplesTemplate_repetition0\":152,\"TriplesSameSubject\":153,\"TriplesTemplate_option0\":154,\"GroupGraphPatternSub\":155,\"GroupGraphPatternSub_option0\":156,\"GroupGraphPatternSub_repetition0\":157,\"GroupGraphPatternSubTail\":158,\"GraphPatternNotTriples\":159,\"GroupGraphPatternSubTail_option0\":160,\"GroupGraphPatternSubTail_option1\":161,\"TriplesBlock\":162,\"TriplesBlock_repetition0\":163,\"TriplesSameSubjectPath\":164,\"TriplesBlock_option0\":165,\"GraphPatternNotTriples_repetition0\":166,\"OPTIONAL\":167,\"MINUS\":168,\"GraphPatternNotTriples_group0\":169,\"SERVICE\":170,\"GraphPatternNotTriples_option0\":171,\"GraphPatternNotTriples_group1\":172,\"FILTER\":173,\"BIND\":174,\"FunctionCall_option0\":175,\"FunctionCall_repetition0\":176,\"ExpressionList\":177,\"ExpressionList_repetition0\":178,\"ConstructTemplate_option0\":179,\"ConstructTriples\":180,\"ConstructTriples_repetition0\":181,\"ConstructTriples_option0\":182,\"TriplesSameSubject_group0\":183,\"PropertyListNotEmpty\":184,\"TriplesNode\":185,\"PropertyList\":186,\"PropertyList_option0\":187,\"VerbObjectList\":188,\"PropertyListNotEmpty_repetition0\":189,\"SemiOptionalVerbObjectList\":190,\";\":191,\"SemiOptionalVerbObjectList_option0\":192,\"Verb\":193,\"ObjectList\":194,\"a\":195,\"ObjectList_repetition0\":196,\"GraphNode\":197,\"ObjectListPath\":198,\"ObjectListPath_repetition0\":199,\"GraphNodePath\":200,\"TriplesSameSubjectPath_group0\":201,\"PropertyListPathNotEmpty\":202,\"TriplesNodePath\":203,\"TriplesSameSubjectPath_option0\":204,\"PropertyListPathNotEmpty_group0\":205,\"PropertyListPathNotEmpty_repetition0\":206,\"PropertyListPathNotEmpty_repetition1\":207,\"PropertyListPathNotEmptyTail\":208,\"PropertyListPathNotEmptyTail_group0\":209,\"Path\":210,\"Path_repetition0\":211,\"PathSequence\":212,\"PathSequence_repetition0\":213,\"PathEltOrInverse\":214,\"PathElt\":215,\"PathPrimary\":216,\"PathElt_option0\":217,\"PathEltOrInverse_option0\":218,\"!\":219,\"PathNegatedPropertySet\":220,\"PathOneInPropertySet\":221,\"PathNegatedPropertySet_repetition0\":222,\"PathNegatedPropertySet_option0\":223,\"^\":224,\"TriplesNode_repetition_plus0\":225,\"[\":226,\"]\":227,\"TriplesNodePath_repetition_plus0\":228,\"GraphNode_group0\":229,\"GraphNodePath_group0\":230,\"<<\":231,\"VarTriple_group0\":232,\"VarTriple_group1\":233,\"VarTriple_group2\":234,\">>\":235,\"VarTriple_group3\":236,\"VarTriple_group4\":237,\"ConstTriple_group0\":238,\"ConstTriple_group1\":239,\"ConstTriple_group2\":240,\"ConstTriple_group3\":241,\"ConstTriple_group4\":242,\"VarOrTerm\":243,\"Term\":244,\"BLANK_NODE_LABEL\":245,\"ANON\":246,\"ConditionalAndExpression\":247,\"Expression_repetition0\":248,\"ExpressionTail\":249,\"||\":250,\"RelationalExpression\":251,\"ConditionalAndExpression_repetition0\":252,\"ConditionalAndExpressionTail\":253,\"&&\":254,\"AdditiveExpression\":255,\"RelationalExpression_group0\":256,\"RelationalExpression_option0\":257,\"IN\":258,\"MultiplicativeExpression\":259,\"AdditiveExpression_repetition0\":260,\"AdditiveExpressionTail\":261,\"AdditiveExpressionTail_group0\":262,\"NumericLiteralPositive\":263,\"AdditiveExpressionTail_repetition0\":264,\"NumericLiteralNegative\":265,\"AdditiveExpressionTail_repetition1\":266,\"UnaryExpression\":267,\"MultiplicativeExpression_repetition0\":268,\"MultiplicativeExpressionTail\":269,\"MultiplicativeExpressionTail_group0\":270,\"UnaryExpression_option0\":271,\"PrimaryExpression\":272,\"-\":273,\"Aggregate\":274,\"FUNC_ARITY0\":275,\"FUNC_ARITY1\":276,\"FUNC_ARITY2\":277,\",\":278,\"IF\":279,\"BuiltInCall_group0\":280,\"BOUND\":281,\"BNODE\":282,\"BuiltInCall_option0\":283,\"EXISTS\":284,\"COUNT\":285,\"Aggregate_option0\":286,\"Aggregate_group0\":287,\"FUNC_AGGREGATE\":288,\"Aggregate_option1\":289,\"GROUP_CONCAT\":290,\"Aggregate_option2\":291,\"Aggregate_option3\":292,\"GroupConcatSeparator\":293,\"SEPARATOR\":294,\"=\":295,\"String\":296,\"LANGTAG\":297,\"^^\":298,\"DECIMAL\":299,\"DOUBLE\":300,\"BOOLEAN\":301,\"STRING_LITERAL1\":302,\"STRING_LITERAL2\":303,\"STRING_LITERAL_LONG1\":304,\"STRING_LITERAL_LONG2\":305,\"INTEGER_POSITIVE\":306,\"DECIMAL_POSITIVE\":307,\"DOUBLE_POSITIVE\":308,\"INTEGER_NEGATIVE\":309,\"DECIMAL_NEGATIVE\":310,\"DOUBLE_NEGATIVE\":311,\"PNAME_LN\":312,\"QueryOrUpdate_group0_option0\":313,\"Prologue_repetition0_group0\":314,\"SelectClauseBase_option0_group0\":315,\"DISTINCT\":316,\"REDUCED\":317,\"DescribeQuery_group0_repetition_plus0_group0\":318,\"DescribeQuery_group0_repetition_plus0\":319,\"NAMED\":320,\"SILENT\":321,\"CLEAR\":322,\"DROP\":323,\"ADD\":324,\"MOVE\":325,\"COPY\":326,\"ALL\":327,\".\":328,\"UNION\":329,\"|\":330,\"/\":331,\"PathElt_option0_group0\":332,\"?\":333,\"+\":334,\"!=\":335,\"<\":336,\">\":337,\"<=\":338,\">=\":339,\"NOT\":340,\"CONCAT\":341,\"COALESCE\":342,\"SUBSTR\":343,\"REGEX\":344,\"REPLACE\":345,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"EOF\",12:\"BASE\",13:\"IRIREF\",15:\"PREFIX\",16:\"PNAME_NS\",26:\"*\",28:\"SELECT\",34:\"VAR\",35:\"(\",37:\"AS\",38:\")\",41:\"CONSTRUCT\",45:\"WHERE\",46:\"{\",48:\"}\",50:\"DESCRIBE\",55:\"ASK\",58:\"FROM\",68:\"GROUP\",69:\"BY\",75:\"HAVING\",78:\"ORDER\",81:\"ASC\",83:\"DESC\",86:\"LIMIT\",87:\"INTEGER\",88:\"OFFSET\",90:\"VALUES\",93:\"NIL\",100:\"UNDEF\",107:\"LOAD\",116:\"TO\",117:\"CREATE\",119:\"GRAPH\",120:\"INSERTDATA\",122:\"DELETEDATA\",123:\"DELETEWHERE\",132:\"DELETE\",133:\"INSERT\",135:\"USING\",138:\"WITH\",140:\"INTO\",141:\"DEFAULT\",167:\"OPTIONAL\",168:\"MINUS\",170:\"SERVICE\",173:\"FILTER\",174:\"BIND\",191:\";\",195:\"a\",219:\"!\",224:\"^\",226:\"[\",227:\"]\",231:\"<<\",235:\">>\",245:\"BLANK_NODE_LABEL\",246:\"ANON\",250:\"||\",254:\"&&\",258:\"IN\",273:\"-\",275:\"FUNC_ARITY0\",276:\"FUNC_ARITY1\",277:\"FUNC_ARITY2\",278:\",\",279:\"IF\",281:\"BOUND\",282:\"BNODE\",284:\"EXISTS\",285:\"COUNT\",288:\"FUNC_AGGREGATE\",290:\"GROUP_CONCAT\",294:\"SEPARATOR\",295:\"=\",297:\"LANGTAG\",298:\"^^\",299:\"DECIMAL\",300:\"DOUBLE\",301:\"BOOLEAN\",302:\"STRING_LITERAL1\",303:\"STRING_LITERAL2\",304:\"STRING_LITERAL_LONG1\",305:\"STRING_LITERAL_LONG2\",306:\"INTEGER_POSITIVE\",307:\"DECIMAL_POSITIVE\",308:\"DOUBLE_POSITIVE\",309:\"INTEGER_NEGATIVE\",310:\"DECIMAL_NEGATIVE\",311:\"DOUBLE_NEGATIVE\",312:\"PNAME_LN\",316:\"DISTINCT\",317:\"REDUCED\",320:\"NAMED\",321:\"SILENT\",322:\"CLEAR\",323:\"DROP\",324:\"ADD\",325:\"MOVE\",326:\"COPY\",327:\"ALL\",328:\".\",329:\"UNION\",330:\"|\",331:\"/\",333:\"?\",334:\"+\",335:\"!=\",336:\"<\",337:\">\",338:\"<=\",339:\">=\",340:\"NOT\",341:\"CONCAT\",342:\"COALESCE\",343:\"SUBSTR\",344:\"REGEX\",345:\"REPLACE\"},\nproductions_: [0,[3,3],[4,1],[8,2],[11,2],[14,3],[17,4],[17,4],[18,2],[22,2],[25,2],[30,4],[30,4],[33,1],[33,5],[33,5],[40,5],[40,7],[49,5],[54,4],[57,3],[20,2],[24,2],[21,3],[67,3],[71,1],[71,1],[71,3],[71,5],[71,1],[74,2],[77,3],[80,2],[80,2],[80,1],[80,1],[85,2],[85,2],[85,4],[85,4],[89,2],[91,4],[91,4],[91,6],[97,1],[97,1],[97,1],[97,1],[101,3],[103,3],[105,4],[105,3],[105,5],[105,4],[105,2],[105,2],[105,2],[105,6],[105,6],[129,2],[125,2],[134,3],[137,2],[139,3],[115,1],[115,2],[112,2],[112,1],[121,4],[146,7],[151,3],[62,3],[62,3],[155,2],[158,3],[162,3],[159,2],[159,2],[159,2],[159,3],[159,4],[159,2],[159,6],[159,6],[159,1],[84,1],[84,1],[84,1],[73,2],[73,6],[177,1],[177,4],[42,3],[180,3],[153,2],[153,2],[186,1],[184,2],[190,2],[188,2],[193,1],[193,1],[193,1],[194,2],[198,2],[164,2],[164,2],[202,4],[208,1],[208,3],[210,2],[212,2],[215,2],[214,2],[216,1],[216,1],[216,2],[216,3],[220,1],[220,1],[220,4],[221,1],[221,1],[221,2],[221,2],[185,3],[185,3],[203,3],[203,3],[197,1],[197,1],[200,1],[200,1],[39,9],[39,5],[99,9],[99,5],[243,1],[243,1],[244,1],[244,1],[244,1],[244,1],[244,1],[36,2],[249,2],[247,2],[253,2],[251,1],[251,3],[251,4],[255,2],[261,2],[261,2],[261,2],[259,2],[269,2],[267,2],[267,2],[267,2],[272,1],[272,1],[272,1],[272,1],[272,1],[272,1],[82,3],[72,1],[72,2],[72,4],[72,6],[72,8],[72,2],[72,4],[72,2],[72,4],[72,3],[274,5],[274,5],[274,6],[293,4],[98,1],[98,2],[98,3],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[296,1],[296,1],[296,1],[296,1],[263,1],[263,1],[263,1],[265,1],[265,1],[265,1],[60,1],[60,1],[60,1],[313,0],[313,1],[5,1],[5,1],[314,1],[314,1],[7,0],[7,2],[9,1],[9,1],[9,1],[9,1],[10,0],[10,1],[19,0],[19,2],[23,0],[23,2],[27,1],[27,2],[315,1],[315,1],[29,0],[29,1],[31,0],[31,1],[32,0],[32,1],[43,0],[43,2],[44,0],[44,2],[47,0],[47,1],[318,1],[318,1],[319,1],[319,2],[51,1],[51,1],[52,0],[52,2],[53,0],[53,1],[56,0],[56,2],[59,0],[59,1],[61,0],[61,1],[63,0],[63,1],[64,0],[64,1],[65,0],[65,1],[66,0],[66,1],[70,1],[70,2],[76,1],[76,2],[79,1],[79,2],[92,0],[92,2],[94,0],[94,2],[95,1],[95,2],[96,0],[96,2],[102,1],[102,2],[104,0],[104,4],[106,0],[106,2],[108,0],[108,1],[109,0],[109,1],[110,1],[110,1],[111,0],[111,1],[113,1],[113,1],[113,1],[114,0],[114,1],[118,0],[118,1],[124,0],[124,1],[126,0],[126,1],[127,0],[127,2],[128,0],[128,1],[130,0],[130,1],[131,0],[131,2],[136,0],[136,1],[142,0],[142,1],[143,1],[143,1],[143,1],[144,0],[144,1],[145,0],[145,2],[147,1],[147,1],[148,0],[148,1],[149,0],[149,1],[150,0],[150,1],[152,0],[152,3],[154,0],[154,1],[156,0],[156,1],[157,0],[157,2],[160,0],[160,1],[161,0],[161,1],[163,0],[163,3],[165,0],[165,1],[166,0],[166,3],[169,1],[169,1],[171,0],[171,1],[172,1],[172,1],[175,0],[175,1],[176,0],[176,3],[178,0],[178,3],[179,0],[179,1],[181,0],[181,3],[182,0],[182,1],[183,1],[183,1],[187,0],[187,1],[189,0],[189,2],[192,0],[192,1],[196,0],[196,3],[199,0],[199,3],[201,1],[201,1],[204,0],[204,1],[205,1],[205,1],[206,0],[206,3],[207,0],[207,2],[209,1],[209,1],[211,0],[211,3],[213,0],[213,3],[332,1],[332,1],[332,1],[217,0],[217,1],[218,0],[218,1],[222,0],[222,3],[223,0],[223,1],[225,1],[225,2],[228,1],[228,2],[229,1],[229,1],[230,1],[230,1],[232,1],[232,1],[233,1],[233,1],[234,1],[234,1],[236,1],[236,1],[237,1],[237,1],[238,1],[238,1],[239,1],[239,1],[240,1],[240,1],[241,1],[241,1],[242,1],[242,1],[248,0],[248,2],[252,0],[252,2],[256,1],[256,1],[256,1],[256,1],[256,1],[256,1],[257,0],[257,1],[260,0],[260,2],[262,1],[262,1],[264,0],[264,2],[266,0],[266,2],[268,0],[268,2],[270,1],[270,1],[271,0],[271,1],[280,1],[280,1],[280,1],[280,1],[280,1],[283,0],[283,1],[286,0],[286,1],[287,1],[287,1],[289,0],[289,1],[291,0],[291,1],[292,0],[292,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n\n // Set parser options\n $$[$0-1] = $$[$0-1] || {};\n if (Parser.base)\n $$[$0-1].base = Parser.base;\n Parser.base = '';\n $$[$0-1].prefixes = Parser.prefixes;\n Parser.prefixes = null;\n\n // Ensure that blank nodes are not used across INSERT DATA clauses\n if ($$[$0-1].type === 'update') {\n const insertBnodesAll = {};\n for (const update of $$[$0-1].updates) {\n if (update.updateType === 'insert') {\n // Collect bnodes for current insert clause\n const insertBnodes = {};\n for (const operation of update.insert) {\n if (operation.type === 'bgp' || operation.type === 'graph') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'BlankNode')\n insertBnodes[triple.subject.value] = true;\n if (triple.predicate.termType === 'BlankNode')\n insertBnodes[triple.predicate.value] = true;\n if (triple.object.termType === 'BlankNode')\n insertBnodes[triple.object.value] = true;\n }\n }\n }\n\n // Check if the inserting bnodes don't clash with bnodes from a previous insert clause\n for (const bnode of Object.keys(insertBnodes)) {\n if (insertBnodesAll[bnode]) {\n throw new Error('Detected reuse blank node across different INSERT DATA clauses');\n }\n insertBnodesAll[bnode] = true;\n }\n }\n }\n }\n\n return $$[$0-1];\n \nbreak;\ncase 3:\nthis.$ = extend($$[$0-1], $$[$0], { type: 'query' });\nbreak;\ncase 4:\n\n Parser.base = resolveIRI($$[$0])\n \nbreak;\ncase 5:\n\n if (!Parser.prefixes) Parser.prefixes = {};\n $$[$0-1] = $$[$0-1].substr(0, $$[$0-1].length - 1);\n $$[$0] = resolveIRI($$[$0]);\n Parser.prefixes[$$[$0-1]] = $$[$0];\n \nbreak;\ncase 6:\nthis.$ = extend($$[$0-3], groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 7:\n\n // Check for projection of ungrouped variable\n if (!Parser.skipValidation) {\n const counts = flatten($$[$0-3].variables.map(vars => getAggregatesOfExpression(vars.expression)))\n .some(agg => agg.aggregation === \"count\" && !(agg.expression instanceof Wildcard));\n if (counts || $$[$0].group) {\n for (const selectVar of $$[$0-3].variables) {\n if (selectVar.termType === \"Variable\") {\n if (!$$[$0].group || !$$[$0].group.map(groupVar => getExpressionId(groupVar)).includes(getExpressionId(selectVar))) {\n throw Error(\"Projection of ungrouped variable (?\" + getExpressionId(selectVar) + \")\");\n }\n } else if (getAggregatesOfExpression(selectVar.expression).length === 0) {\n const usedVars = getVariablesFromExpression(selectVar.expression);\n for (const usedVar of usedVars) {\n if (!$$[$0].group || !$$[$0].group.map || !$$[$0].group.map(groupVar => getExpressionId(groupVar)).includes(getExpressionId(usedVar))) {\n throw Error(\"Use of ungrouped variable in projection of operation (?\" + getExpressionId(usedVar) + \")\");\n }\n }\n }\n }\n }\n }\n // Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = $$[$0-1].where.filter(w => w.type === \"query\");\n if (subqueries.length > 0) {\n const selectedVarIds = $$[$0-3].variables.filter(v => v.variable && v.variable.value).map(v => v.variable.value);\n const subqueryIds = flatten(subqueries.map(sub => sub.variables)).map(v => v.value || v.variable.value);\n for (const selectedVarId of selectedVarIds) {\n if (subqueryIds.indexOf(selectedVarId) >= 0) {\n throw Error(\"Target id of 'AS' (?\" + selectedVarId + \") already used in subquery\");\n }\n }\n }\n this.$ = extend($$[$0-3], groupDatasets($$[$0-2]), $$[$0-1], $$[$0])\n \nbreak;\ncase 8:\nthis.$ = extend($$[$0-1], {variables: [new Wildcard()]});\nbreak;\ncase 9:\n\n // Check if id of each selected column is different\n const selectedVarIds = $$[$0].map(v => v.value || v.variable.value);\n const duplicates = getDuplicatesInArray(selectedVarIds);\n if (duplicates.length > 0) {\n throw Error(\"Two or more of the resulting columns have the same name (?\" + duplicates[0] + \")\");\n }\n\n this.$ = extend($$[$0-1], { variables: $$[$0] })\n \nbreak;\ncase 10:\nthis.$ = extend({ queryType: 'SELECT'}, $$[$0] && ($$[$0-1] = lowercase($$[$0]), $$[$0] = {}, $$[$0][$$[$0-1]] = true, $$[$0]));\nbreak;\ncase 11: case 12:\nthis.$ = extend($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], { type: 'query' });\nbreak;\ncase 13: case 100: case 137: case 165:\nthis.$ = toVar($$[$0]);\nbreak;\ncase 14: case 28:\nthis.$ = expression($$[$0-3], { variable: toVar($$[$0-1]) });\nbreak;\ncase 15:\nthis.$ = ensureSparqlStar(expression($$[$0-3], { variable: toVar($$[$0-1]) }));\nbreak;\ncase 16:\nthis.$ = extend({ queryType: 'CONSTRUCT', template: $$[$0-3] }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 17:\nthis.$ = extend({ queryType: 'CONSTRUCT', template: $$[$0-2] = ($$[$0-2] ? $$[$0-2].triples : []) }, groupDatasets($$[$0-5]), { where: [ { type: 'bgp', triples: appendAllTo([], $$[$0-2]) } ] }, $$[$0]);\nbreak;\ncase 18:\nthis.$ = extend({ queryType: 'DESCRIBE', variables: $$[$0-3] === '*' ? [new Wildcard()] : $$[$0-3].map(toVar) }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 19:\nthis.$ = extend({ queryType: 'ASK' }, groupDatasets($$[$0-2]), $$[$0-1], $$[$0]);\nbreak;\ncase 20: case 61:\nthis.$ = { iri: $$[$0], named: !!$$[$0-1] };\nbreak;\ncase 21:\nthis.$ = { where: $$[$0].patterns };\nbreak;\ncase 22:\nthis.$ = extend($$[$0-1], $$[$0]);\nbreak;\ncase 23:\nthis.$ = extend($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 24:\nthis.$ = { group: $$[$0] };\nbreak;\ncase 25: case 26: case 32: case 34:\nthis.$ = expression($$[$0]);\nbreak;\ncase 27:\nthis.$ = expression($$[$0-1]);\nbreak;\ncase 29: case 35:\nthis.$ = expression(toVar($$[$0]));\nbreak;\ncase 30:\nthis.$ = { having: $$[$0] };\nbreak;\ncase 31:\nthis.$ = { order: $$[$0] };\nbreak;\ncase 33:\nthis.$ = expression($$[$0], { descending: true });\nbreak;\ncase 36:\nthis.$ = { limit: toInt($$[$0]) };\nbreak;\ncase 37:\nthis.$ = { offset: toInt($$[$0]) };\nbreak;\ncase 38:\nthis.$ = { limit: toInt($$[$0-2]), offset: toInt($$[$0]) };\nbreak;\ncase 39:\nthis.$ = { limit: toInt($$[$0]), offset: toInt($$[$0-2]) };\nbreak;\ncase 40:\nthis.$ = { type: 'values', values: $$[$0] };\nbreak;\ncase 41:\n\n this.$ = $$[$0-1].map(function(v) { var o = {}; o[$$[$0-3]] = v; return o; })\n \nbreak;\ncase 42:\n\n this.$ = $$[$0-1].map(function() { return {}; })\n \nbreak;\ncase 43:\n\n var length = $$[$0-4].length;\n $$[$0-4] = $$[$0-4].map(toVar);\n this.$ = $$[$0-1].map(function (values) {\n if (values.length !== length)\n throw Error('Inconsistent VALUES length');\n var valuesObject = {};\n for(var i = 0; i el.type === \"bind\")) {\n const index = $$[$0-1].indexOf(binding);\n const boundVars = new Set();\n //Collect all bounded variables before the binding\n for (const el of $$[$0-1].slice(0, index)) {\n if (el.type === \"group\" || el.type === \"bgp\") {\n getBoundVarsFromGroupGraphPattern(el).forEach(boundVar => boundVars.add(boundVar));\n }\n }\n // If binding with a non-free variable, throw error\n if (boundVars.has(binding.variable.value)) {\n throw Error(\"Variable used to bind is already bound (?\" + binding.variable.value + \")\");\n }\n }\n this.$ = { type: 'group', patterns: $$[$0-1] }\n \nbreak;\ncase 73:\nthis.$ = $$[$0-1] ? unionAll([$$[$0-1]], $$[$0]) : unionAll($$[$0]);\nbreak;\ncase 74:\nthis.$ = $$[$0] ? [$$[$0-2], $$[$0]] : $$[$0-2];\nbreak;\ncase 76:\n\n if ($$[$0-1].length)\n this.$ = { type: 'union', patterns: unionAll($$[$0-1].map(degroupSingle), [degroupSingle($$[$0])]) };\n else\n this.$ = $$[$0];\n \nbreak;\ncase 77:\nthis.$ = extend($$[$0], { type: 'optional' });\nbreak;\ncase 78:\nthis.$ = extend($$[$0], { type: 'minus' });\nbreak;\ncase 79:\nthis.$ = extend($$[$0], { type: 'graph', name: toVar($$[$0-1]) });\nbreak;\ncase 80:\nthis.$ = extend($$[$0], { type: 'service', name: toVar($$[$0-1]), silent: !!$$[$0-2] });\nbreak;\ncase 81:\nthis.$ = { type: 'filter', expression: $$[$0] };\nbreak;\ncase 82:\nthis.$ = { type: 'bind', variable: toVar($$[$0-1]), expression: $$[$0-3] };\nbreak;\ncase 83:\nthis.$ = ensureSparqlStar({ type: 'bind', variable: toVar($$[$0-1]), expression: $$[$0-3] });\nbreak;\ncase 88:\nthis.$ = { type: 'functionCall', function: $$[$0-1], args: [] };\nbreak;\ncase 89:\nthis.$ = { type: 'functionCall', function: $$[$0-5], args: appendTo($$[$0-2], $$[$0-1]), distinct: !!$$[$0-3] };\nbreak;\ncase 90: case 108: case 119: case 209: case 217: case 219: case 231: case 233: case 243: case 247: case 267: case 269: case 273: case 277: case 300: case 306: case 317: case 327: case 333: case 339: case 343: case 353: case 355: case 359: case 367: case 371: case 373: case 381: case 383: case 387: case 389: case 398: case 430: case 432: case 442: case 446: case 448: case 450:\nthis.$ = [];\nbreak;\ncase 91:\nthis.$ = appendTo($$[$0-2], $$[$0-1]);\nbreak;\ncase 93:\nthis.$ = unionAll($$[$0-2], [$$[$0-1]]);\nbreak;\ncase 94: case 105:\nthis.$ = $$[$0].map(function (t) { return extend(triple($$[$0-1]), t); });\nbreak;\ncase 95:\nthis.$ = appendAllTo($$[$0].map(function (t) { return extend(triple($$[$0-1].entity), t); }), $$[$0-1].triples) /* the subject is a blank node, possibly with more triples */;\nbreak;\ncase 97:\nthis.$ = unionAll([$$[$0-1]], $$[$0]);\nbreak;\ncase 98:\nthis.$ = unionAll($$[$0]);\nbreak;\ncase 99:\nthis.$ = objectListToTriples($$[$0-1], $$[$0]);\nbreak;\ncase 102: case 115: case 122:\nthis.$ = Parser.factory.namedNode(RDF_TYPE);\nbreak;\ncase 103: case 104:\nthis.$ = appendTo($$[$0-1], $$[$0]);\nbreak;\ncase 106:\nthis.$ = !$$[$0] ? $$[$0-1].triples : appendAllTo($$[$0].map(function (t) { return extend(triple($$[$0-1].entity), t); }), $$[$0-1].triples) /* the subject is a blank node, possibly with more triples */;\nbreak;\ncase 107:\nthis.$ = objectListToTriples(toVar($$[$0-3]), appendTo($$[$0-2], $$[$0-1]), $$[$0]);\nbreak;\ncase 109:\nthis.$ = objectListToTriples(toVar($$[$0-1]), $$[$0]);\nbreak;\ncase 110:\nthis.$ = $$[$0-1].length ? path('|',appendTo($$[$0-1], $$[$0])) : $$[$0];\nbreak;\ncase 111:\nthis.$ = $$[$0-1].length ? path('/', appendTo($$[$0-1], $$[$0])) : $$[$0];\nbreak;\ncase 112:\nthis.$ = $$[$0] ? path($$[$0], [$$[$0-1]]) : $$[$0-1];\nbreak;\ncase 113:\nthis.$ = $$[$0-1] ? path($$[$0-1], [$$[$0]]) : $$[$0];;\nbreak;\ncase 116: case 123:\nthis.$ = path($$[$0-1], [$$[$0]]);\nbreak;\ncase 120:\nthis.$ = path('|', appendTo($$[$0-2], $$[$0-1]));\nbreak;\ncase 124:\nthis.$ = path($$[$0-1], [Parser.factory.namedNode(RDF_TYPE)]);\nbreak;\ncase 125: case 127:\nthis.$ = createList($$[$0-1]);\nbreak;\ncase 126: case 128:\nthis.$ = createAnonymousObject($$[$0-1]);\nbreak;\ncase 129:\nthis.$ = { entity: $$[$0], triples: [] } /* for consistency with TriplesNode */;\nbreak;\ncase 131:\nthis.$ = { entity: $$[$0], triples: [] } /* for consistency with TriplesNodePath */;\nbreak;\ncase 133: case 135:\nthis.$ = ensureSparqlStar(Parser.factory.quad($$[$0-4], $$[$0-3], $$[$0-2], toVar($$[$0-6])));\nbreak;\ncase 134: case 136:\nthis.$ = ensureSparqlStar(Parser.factory.quad($$[$0-3], $$[$0-2], $$[$0-1]));\nbreak;\ncase 141:\nthis.$ = blank($$[$0].replace(/^(_:)/,''));;\nbreak;\ncase 142:\nthis.$ = blank();\nbreak;\ncase 143:\nthis.$ = Parser.factory.namedNode(RDF_NIL);\nbreak;\ncase 144: case 146: case 151: case 155:\nthis.$ = createOperationTree($$[$0-1], $$[$0]);\nbreak;\ncase 145:\nthis.$ = ['||', $$[$0]];\nbreak;\ncase 147:\nthis.$ = ['&&', $$[$0]];\nbreak;\ncase 149:\nthis.$ = operation($$[$0-1], [$$[$0-2], $$[$0]]);\nbreak;\ncase 150:\nthis.$ = operation($$[$0-2] ? 'notin' : 'in', [$$[$0-3], $$[$0]]);\nbreak;\ncase 152: case 156:\nthis.$ = [$$[$0-1], $$[$0]];\nbreak;\ncase 153:\nthis.$ = ['+', createOperationTree($$[$0-1], $$[$0])];\nbreak;\ncase 154:\n\n var negatedLiteral = createTypedLiteral($$[$0-1].value.replace('-', ''), $$[$0-1].datatype);\n this.$ = ['-', createOperationTree(negatedLiteral, $$[$0])];\n \nbreak;\ncase 158:\nthis.$ = operation($$[$0-1], [$$[$0]]);\nbreak;\ncase 159:\nthis.$ = operation('UMINUS', [$$[$0]]);\nbreak;\ncase 168:\nthis.$ = operation(lowercase($$[$0-1]));\nbreak;\ncase 169:\nthis.$ = operation(lowercase($$[$0-3]), [$$[$0-1]]);\nbreak;\ncase 170:\nthis.$ = operation(lowercase($$[$0-5]), [$$[$0-3], $$[$0-1]]);\nbreak;\ncase 171:\nthis.$ = operation(lowercase($$[$0-7]), [$$[$0-5], $$[$0-3], $$[$0-1]]);\nbreak;\ncase 172:\nthis.$ = operation(lowercase($$[$0-1]), $$[$0]);\nbreak;\ncase 173:\nthis.$ = operation('bound', [toVar($$[$0-1])]);\nbreak;\ncase 174:\nthis.$ = operation($$[$0-1], []);\nbreak;\ncase 175:\nthis.$ = operation($$[$0-3], [$$[$0-1]]);\nbreak;\ncase 176:\nthis.$ = operation($$[$0-2] ? 'notexists' :'exists', [degroupSingle($$[$0])]);\nbreak;\ncase 177: case 178:\nthis.$ = expression($$[$0-1], { type: 'aggregate', aggregation: lowercase($$[$0-4]), distinct: !!$$[$0-2] });\nbreak;\ncase 179:\nthis.$ = expression($$[$0-2], { type: 'aggregate', aggregation: lowercase($$[$0-5]), distinct: !!$$[$0-3], separator: $$[$0-1] || ' ' });\nbreak;\ncase 181:\nthis.$ = createTypedLiteral($$[$0]);\nbreak;\ncase 182:\nthis.$ = createLangLiteral($$[$0-1], lowercase($$[$0].substr(1)));\nbreak;\ncase 183:\nthis.$ = createTypedLiteral($$[$0-2], $$[$0]);\nbreak;\ncase 184: case 197:\nthis.$ = createTypedLiteral($$[$0], XSD_INTEGER);\nbreak;\ncase 185: case 198:\nthis.$ = createTypedLiteral($$[$0], XSD_DECIMAL);\nbreak;\ncase 186: case 199:\nthis.$ = createTypedLiteral(lowercase($$[$0]), XSD_DOUBLE);\nbreak;\ncase 189:\nthis.$ = createTypedLiteral($$[$0].toLowerCase(), XSD_BOOLEAN);\nbreak;\ncase 190: case 191:\nthis.$ = unescapeString($$[$0], 1);\nbreak;\ncase 192: case 193:\nthis.$ = unescapeString($$[$0], 3);\nbreak;\ncase 194:\nthis.$ = createTypedLiteral($$[$0].substr(1), XSD_INTEGER);\nbreak;\ncase 195:\nthis.$ = createTypedLiteral($$[$0].substr(1), XSD_DECIMAL);\nbreak;\ncase 196:\nthis.$ = createTypedLiteral($$[$0].substr(1).toLowerCase(), XSD_DOUBLE);\nbreak;\ncase 200:\nthis.$ = Parser.factory.namedNode(resolveIRI($$[$0]));\nbreak;\ncase 201:\n\n var namePos = $$[$0].indexOf(':'),\n prefix = $$[$0].substr(0, namePos),\n expansion = Parser.prefixes[prefix];\n if (!expansion) throw new Error('Unknown prefix: ' + prefix);\n var uriString = resolveIRI(expansion + $$[$0].substr(namePos + 1));\n this.$ = Parser.factory.namedNode(uriString);\n \nbreak;\ncase 202:\n\n $$[$0] = $$[$0].substr(0, $$[$0].length - 1);\n if (!($$[$0] in Parser.prefixes)) throw new Error('Unknown prefix: ' + $$[$0]);\n var uriString = resolveIRI(Parser.prefixes[$$[$0]]);\n this.$ = Parser.factory.namedNode(uriString);\n \nbreak;\ncase 210: case 218: case 220: case 222: case 232: case 234: case 240: case 244: case 248: case 262: case 264: case 266: case 268: case 270: case 272: case 274: case 276: case 301: case 307: case 318: case 334: case 368: case 384: case 403: case 405: case 431: case 433: case 443: case 447: case 449: case 451:\n$$[$0-1].push($$[$0]);\nbreak;\ncase 221: case 239: case 261: case 263: case 265: case 271: case 275: case 402: case 404:\nthis.$ = [$$[$0]];\nbreak;\ncase 278:\n$$[$0-3].push($$[$0-2]);\nbreak;\ncase 328: case 340: case 344: case 354: case 356: case 360: case 372: case 374: case 382: case 388: case 390: case 399:\n$$[$0-2].push($$[$0-1]);\nbreak;\n}\n},\ntable: [o($V0,$V1,{3:1,4:2,7:3}),{1:[3]},o($V2,[2,277],{5:4,8:5,313:6,9:7,103:8,17:9,40:10,49:11,54:12,104:13,18:14,22:15,25:19,6:[2,203],28:$V3,41:[1,16],50:[1,17],55:[1,18]}),o([6,28,41,50,55,107,117,120,122,123,132,133,138,322,323,324,325,326],[2,2],{314:21,11:22,14:23,12:[1,24],15:[1,25]}),{6:[1,26]},{6:[2,205]},{6:[2,206]},{6:[2,215],10:27,89:28,90:$V4},{6:[2,204]},o($V5,[2,211]),o($V5,[2,212]),o($V5,[2,213]),o($V5,[2,214]),{105:30,107:[1,31],110:32,113:33,117:[1,34],120:[1,35],122:[1,36],123:[1,37],124:38,128:39,132:[2,302],133:[2,296],137:45,138:[1,46],322:[1,40],323:[1,41],324:[1,42],325:[1,43],326:[1,44]},o($V6,[2,217],{19:47}),o($V6,[2,219],{23:48}),o($V7,[2,233],{42:49,44:50,46:[1,51]}),{13:$V8,16:$V9,26:[1,54],34:$Va,51:52,60:57,312:$Vb,318:55,319:53},o($V6,[2,247],{56:61}),{26:[1,62],27:63,33:64,34:$Vc,35:$Vd},o($Ve,[2,225],{29:67,315:68,316:[1,69],317:[1,70]}),o($V0,[2,210]),o($V0,[2,207]),o($V0,[2,208]),{13:[1,71]},{16:[1,72]},{1:[2,1]},{6:[2,3]},{6:[2,216]},{34:[1,74],35:[1,76],91:73,93:[1,75]},{6:[2,279],106:77,191:[1,78]},o($Vf,[2,281],{108:79,321:[1,80]}),o($Vg,[2,287],{111:81,321:[1,82]}),o($Vh,[2,292],{114:83,321:[1,84]}),{118:85,119:[2,294],321:[1,86]},{46:$Vi,121:87},{46:$Vi,121:89},{46:$Vi,121:90},{125:91,133:$Vj},{129:93,132:$Vk},o($Vl,[2,285]),o($Vl,[2,286]),o($Vm,[2,289]),o($Vm,[2,290]),o($Vm,[2,291]),{132:[2,303],133:[2,297]},{13:$V8,16:$V9,60:95,312:$Vb},{20:96,45:$Vn,46:$Vo,57:97,58:$Vp,61:98},{20:101,45:$Vn,46:$Vo,57:102,58:$Vp,61:98},o($V6,[2,231],{43:103}),{45:[1,104],57:105,58:$Vp},o($Vq,[2,359],{179:106,180:107,181:108,48:[2,357]}),o($Vr,[2,243],{52:109}),o($Vr,[2,241],{60:57,318:110,13:$V8,16:$V9,34:$Va,312:$Vb}),o($Vr,[2,242]),o($Vs,[2,239]),o($Vs,[2,237]),o($Vs,[2,238]),o($Vt,[2,200]),o($Vt,[2,201]),o($Vt,[2,202]),{20:111,45:$Vn,46:$Vo,57:112,58:$Vp,61:98},o($V6,[2,8]),o($V6,[2,9],{33:113,34:$Vc,35:$Vd}),o($Vu,[2,221]),o($Vu,[2,13]),o($Vv,$Vw,{36:114,39:115,247:116,251:118,255:119,259:120,267:121,271:122,219:$Vx,231:$Vy,273:$Vz,334:$VA}),o($Ve,[2,10]),o($Ve,[2,226]),o($Ve,[2,223]),o($Ve,[2,224]),o($V0,[2,4]),{13:[1,126]},o($VB,[2,40]),{46:[1,127]},{46:[1,128]},{34:[1,130],95:129},{6:[2,49]},o($V0,$V1,{7:3,4:131}),{13:$V8,16:$V9,60:132,312:$Vb},o($Vf,[2,282]),{112:133,119:[1,134],141:[1,136],143:135,320:[1,137],327:[1,138]},o($Vg,[2,288]),o($Vf,$VC,{115:139,142:141,119:$VD,141:$VE}),o($Vh,[2,293]),{119:[1,143]},{119:[2,295]},o($VF,[2,54]),o($Vq,$VG,{144:144,151:145,152:146,48:$VH,119:$VH}),o($VF,[2,55]),o($VF,[2,56]),o($VI,[2,298],{126:147,129:148,132:$Vk}),{46:$Vi,121:149},o($VI,[2,304],{130:150,125:151,133:$Vj}),{46:$Vi,121:152},o([132,133],[2,62]),o($VJ,$VK,{21:153,64:154,74:155,75:$VL}),o($V6,[2,218]),{46:$VM,62:157},o($Vf,[2,249],{59:159,320:[1,160]}),{46:[2,252]},o($VN,$VO,{24:161,63:162,67:163,68:$VP}),o($V6,[2,220]),{20:165,45:$Vn,46:$Vo,57:166,58:$Vp,61:98},{46:[1,167]},o($V7,[2,234]),{48:[1,168]},{48:[2,358]},{13:$V8,16:$V9,34:$VQ,35:$VR,39:173,60:178,87:$VS,93:$VT,98:179,153:169,183:170,185:171,226:$VU,231:$Vy,243:172,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($V81,[2,245],{61:98,53:200,57:201,20:202,45:$Vn,46:$Vo,58:$Vp}),o($Vs,[2,240]),o($VN,$VO,{63:162,67:163,24:203,68:$VP}),o($V6,[2,248]),o($Vu,[2,222]),{37:[1,204]},{37:[1,205]},o($V91,[2,430],{248:206}),{13:$V8,16:$V9,34:$VQ,39:209,60:178,87:$VS,93:$VT,98:179,119:[1,207],231:$Vy,236:208,243:210,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($Va1,[2,432],{252:211}),o($Va1,[2,148],{256:212,257:213,258:[2,440],295:[1,214],335:[1,215],336:[1,216],337:[1,217],338:[1,218],339:[1,219],340:[1,220]}),o($Vb1,[2,442],{260:221}),o($Vc1,[2,450],{268:222}),{13:$V8,16:$V9,34:$Vd1,35:$Ve1,60:226,72:225,73:227,82:224,87:$VS,98:228,263:187,265:188,272:223,274:231,275:$Vf1,276:$Vg1,277:$Vh1,279:$Vi1,280:236,281:$Vj1,282:$Vk1,283:239,284:$Vl1,285:$Vm1,288:$Vn1,290:$Vo1,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb,340:$Vp1,341:$Vq1,342:$Vr1,343:$Vs1,344:$Vt1,345:$Vu1},{13:$V8,16:$V9,34:$Vd1,35:$Ve1,60:226,72:225,73:227,82:224,87:$VS,98:228,263:187,265:188,272:249,274:231,275:$Vf1,276:$Vg1,277:$Vh1,279:$Vi1,280:236,281:$Vj1,282:$Vk1,283:239,284:$Vl1,285:$Vm1,288:$Vn1,290:$Vo1,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb,340:$Vp1,341:$Vq1,342:$Vr1,343:$Vs1,344:$Vt1,345:$Vu1},{13:$V8,16:$V9,34:$Vd1,35:$Ve1,60:226,72:225,73:227,82:224,87:$VS,98:228,263:187,265:188,272:250,274:231,275:$Vf1,276:$Vg1,277:$Vh1,279:$Vi1,280:236,281:$Vj1,282:$Vk1,283:239,284:$Vl1,285:$Vm1,288:$Vn1,290:$Vo1,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb,340:$Vp1,341:$Vq1,342:$Vr1,343:$Vs1,344:$Vt1,345:$Vu1},o($Vv,[2,455]),o($V0,[2,5]),o($Vv1,[2,267],{92:251}),o($Vw1,[2,269],{94:252}),{34:[1,254],38:[1,253]},o($Vx1,[2,271]),o($V2,[2,278],{6:[2,280]}),o($VF,[2,283],{109:255,139:256,140:[1,257]}),o($VF,[2,51]),{13:$V8,16:$V9,60:258,312:$Vb},o($VF,[2,67]),o($VF,[2,312]),o($VF,[2,313]),o($VF,[2,314]),{116:[1,259]},o($Vy1,[2,64]),{13:$V8,16:$V9,60:260,312:$Vb},o($Vf,[2,311]),{13:$V8,16:$V9,60:261,312:$Vb},o($Vz1,[2,317],{145:262}),o($Vz1,[2,316]),{13:$V8,16:$V9,34:$VQ,35:$VR,39:173,60:178,87:$VS,93:$VT,98:179,153:263,183:170,185:171,226:$VU,231:$Vy,243:172,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($VI,[2,300],{127:264}),o($VI,[2,299]),o([45,132,135],[2,60]),o($VI,[2,306],{131:265}),o($VI,[2,305]),o([45,133,135],[2,59]),o($V5,[2,6]),o($VA1,[2,257],{65:266,77:267,78:[1,268]}),o($VJ,[2,256]),{13:$V8,16:$V9,35:$Ve1,60:274,72:272,73:273,76:269,82:271,84:270,274:231,275:$Vf1,276:$Vg1,277:$Vh1,279:$Vi1,280:236,281:$Vj1,282:$Vk1,283:239,284:$Vl1,285:$Vm1,288:$Vn1,290:$Vo1,312:$Vb,340:$Vp1,341:$Vq1,342:$Vr1,343:$Vs1,344:$Vt1,345:$Vu1},o([6,48,68,75,78,86,88,90],[2,21]),o($Vq,$VB1,{25:19,30:275,155:276,18:277,22:278,156:279,162:280,163:281,28:$V3,46:$VC1,48:$VC1,90:$VC1,119:$VC1,167:$VC1,168:$VC1,170:$VC1,173:$VC1,174:$VC1}),{13:$V8,16:$V9,60:282,312:$Vb},o($Vf,[2,250]),o($V5,[2,7]),o($VJ,$VK,{64:154,74:155,21:283,75:$VL}),o($VN,[2,254]),{69:[1,284]},o($VN,$VO,{63:162,67:163,24:285,68:$VP}),o($V6,[2,232]),o($Vq,$VG,{152:146,47:286,151:287,48:[2,235]}),o($V6,[2,92]),{48:[2,361],182:288,328:[1,289]},{13:$V8,16:$V9,34:$VD1,60:294,184:290,188:291,193:292,195:$VE1,312:$Vb},o($VF1,[2,365],{188:291,193:292,60:294,186:296,187:297,184:298,13:$V8,16:$V9,34:$VD1,195:$VE1,312:$Vb}),o($VG1,[2,363]),o($VG1,[2,364]),{13:$V8,16:$V9,34:$VQ,35:$VR,39:304,60:178,87:$VS,93:$VT,98:179,185:302,197:300,225:299,226:$VU,229:301,231:$Vy,243:303,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},{13:$V8,16:$V9,34:$VD1,60:294,184:305,188:291,193:292,195:$VE1,312:$Vb},o($VH1,[2,137]),o($VH1,[2,138]),o($VH1,[2,139]),o($VH1,[2,140]),o($VH1,[2,141]),o($VH1,[2,142]),o($VH1,[2,143]),o($VI1,[2,181],{297:[1,306],298:[1,307]}),o($VI1,[2,184]),o($VI1,[2,185]),o($VI1,[2,186]),o($VI1,[2,187]),o($VI1,[2,188]),o($VI1,[2,189]),o($VJ1,[2,190]),o($VJ1,[2,191]),o($VJ1,[2,192]),o($VJ1,[2,193]),o($VI1,[2,194]),o($VI1,[2,195]),o($VI1,[2,196]),o($VI1,[2,197]),o($VI1,[2,198]),o($VI1,[2,199]),o($VN,$VO,{63:162,67:163,24:308,68:$VP}),o($Vr,[2,244]),o($V81,[2,246]),o($V5,[2,19]),{34:[1,309]},{34:[1,310]},o([37,38,191,278],[2,144],{249:311,250:[1,312]}),{13:$V8,16:$V9,34:[1,314],60:315,232:313,312:$Vb},{13:$V8,16:$V9,34:$VD1,60:294,193:316,195:$VE1,312:$Vb},o($VG1,[2,416]),o($VG1,[2,417]),o($V91,[2,146],{253:317,254:[1,318]}),o($Vv,$Vw,{259:120,267:121,271:122,255:319,219:$Vx,273:$Vz,334:$VA}),{258:[1,320]},o($VK1,[2,434]),o($VK1,[2,435]),o($VK1,[2,436]),o($VK1,[2,437]),o($VK1,[2,438]),o($VK1,[2,439]),{258:[2,441]},o([37,38,191,250,254,258,278,295,335,336,337,338,339,340],[2,151],{261:321,262:322,263:323,265:324,273:[1,326],306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,334:[1,325]}),o($Vb1,[2,155],{269:327,270:328,26:$VL1,331:$VM1}),o($Vc1,[2,157]),o($Vc1,[2,160]),o($Vc1,[2,161]),o($Vc1,[2,162],{35:$VN1,93:$VO1}),o($Vc1,[2,163]),o($Vc1,[2,164]),o($Vc1,[2,165]),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:333,219:$Vx,273:$Vz,334:$VA}),o($VP1,[2,167]),{93:[1,334]},{35:[1,335]},{35:[1,336]},{35:[1,337]},{35:$VQ1,93:$VR1,177:338},{35:[1,341]},{35:[1,343],93:[1,342]},{284:[1,344]},{35:[1,345]},{35:[1,346]},{35:[1,347]},o($VS1,[2,456]),o($VS1,[2,457]),o($VS1,[2,458]),o($VS1,[2,459]),o($VS1,[2,460]),{284:[2,462]},o($Vc1,[2,158]),o($Vc1,[2,159]),{13:$V8,16:$V9,48:[1,348],60:350,87:$VS,97:349,98:351,99:352,100:$VT1,231:$VU1,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},{48:[1,355],93:[1,356]},{46:[1,357]},o($Vx1,[2,272]),o($VF,[2,50]),o($VF,[2,284]),{119:[1,358]},o($VF,[2,66]),o($Vf,$VC,{142:141,115:359,119:$VD,141:$VE}),o($Vy1,[2,65]),o($VF,[2,53]),{48:[1,360],119:[1,362],146:361},o($Vz1,[2,329],{154:363,328:[1,364]}),{45:[1,365],134:366,135:$VV1},{45:[1,368],134:369,135:$VV1},o($VW1,[2,259],{66:370,85:371,86:[1,372],88:[1,373]}),o($VA1,[2,258]),{69:[1,374]},o($VJ,[2,30],{274:231,280:236,283:239,82:271,72:272,73:273,60:274,84:375,13:$V8,16:$V9,35:$Ve1,275:$Vf1,276:$Vg1,277:$Vh1,279:$Vi1,281:$Vj1,282:$Vk1,284:$Vl1,285:$Vm1,288:$Vn1,290:$Vo1,312:$Vb,340:$Vp1,341:$Vq1,342:$Vr1,343:$Vs1,344:$Vt1,345:$Vu1}),o($VX1,[2,263]),o($VY1,[2,85]),o($VY1,[2,86]),o($VY1,[2,87]),{35:$VN1,93:$VO1},{48:[1,376]},{48:[1,377]},{20:378,45:$Vn,46:$Vo,61:98},{20:379,45:$Vn,46:$Vo,61:98},o($VZ1,[2,333],{157:380}),o($VZ1,[2,332]),{13:$V8,16:$V9,34:$VQ,35:$V_1,39:385,60:178,87:$VS,93:$VT,98:179,164:381,201:382,203:383,226:$V$1,231:$Vy,243:384,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($Vr,[2,20]),o($VW1,[2,22]),{13:$V8,16:$V9,34:$V02,35:$V12,60:274,70:388,71:389,72:390,73:391,274:231,275:$Vf1,276:$Vg1,277:$Vh1,279:$Vi1,280:236,281:$Vj1,282:$Vk1,283:239,284:$Vl1,285:$Vm1,288:$Vn1,290:$Vo1,312:$Vb,340:$Vp1,341:$Vq1,342:$Vr1,343:$Vs1,344:$Vt1,345:$Vu1},o($V5,[2,16]),{48:[1,394]},{48:[2,236]},{48:[2,93]},o($Vq,[2,360],{48:[2,362]}),o($VF1,[2,94]),o($V22,[2,367],{189:395}),o($Vq,[2,371],{194:396,196:397}),o($Vq,[2,100]),o($Vq,[2,101]),o($Vq,[2,102]),o($VF1,[2,95]),o($VF1,[2,96]),o($VF1,[2,366]),{13:$V8,16:$V9,34:$VQ,35:$VR,38:[1,398],39:304,60:178,87:$VS,93:$VT,98:179,185:302,197:399,226:$VU,229:301,231:$Vy,243:303,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($V32,[2,402]),o($V42,[2,129]),o($V42,[2,130]),o($V42,[2,406]),o($V42,[2,407]),{227:[1,400]},o($VI1,[2,182]),{13:$V8,16:$V9,60:401,312:$Vb},o($V5,[2,18]),{38:[1,402]},{38:[1,403]},o($V91,[2,431]),o($Vv,$Vw,{251:118,255:119,259:120,267:121,271:122,247:404,219:$Vx,273:$Vz,334:$VA}),{46:[1,405]},{46:[2,410]},{46:[2,411]},{13:$V8,16:$V9,34:$VQ,39:407,60:178,87:$VS,93:$VT,98:179,231:$Vy,237:406,243:408,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($Va1,[2,433]),o($Vv,$Vw,{255:119,259:120,267:121,271:122,251:409,219:$Vx,273:$Vz,334:$VA}),o($Va1,[2,149]),{35:$VQ1,93:$VR1,177:410},o($Vb1,[2,443]),o($Vv,$Vw,{267:121,271:122,259:411,219:$Vx,273:$Vz,334:$VA}),o($Vc1,[2,446],{264:412}),o($Vc1,[2,448],{266:413}),o($VK1,[2,444]),o($VK1,[2,445]),o($Vc1,[2,451]),o($Vv,$Vw,{271:122,267:414,219:$Vx,273:$Vz,334:$VA}),o($VK1,[2,452]),o($VK1,[2,453]),o($VP1,[2,88]),o($VK1,[2,351],{175:415,316:[1,416]}),{38:[1,417]},o($VP1,[2,168]),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:418,219:$Vx,273:$Vz,334:$VA}),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:419,219:$Vx,273:$Vz,334:$VA}),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:420,219:$Vx,273:$Vz,334:$VA}),o($VP1,[2,172]),o($VP1,[2,90]),o($VK1,[2,355],{178:421}),{34:[1,422]},o($VP1,[2,174]),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:423,219:$Vx,273:$Vz,334:$VA}),{46:$VM,62:424},o($V52,[2,463],{286:425,316:[1,426]}),o($VK1,[2,467],{289:427,316:[1,428]}),o($VK1,[2,469],{291:429,316:[1,430]}),o($VB,[2,41]),o($Vv1,[2,268]),o($V62,[2,44]),o($V62,[2,45]),o($V62,[2,46]),o($V62,[2,47]),{13:$V8,16:$V9,60:178,87:$VS,93:$VT,98:179,99:433,119:[1,431],231:$VU1,241:432,244:434,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($VB,[2,42]),o($Vw1,[2,270]),o($V72,[2,273],{96:435}),{13:$V8,16:$V9,60:436,312:$Vb},o($VF,[2,52]),o([6,45,132,133,135,191],[2,68]),o($Vz1,[2,318]),{13:$V8,16:$V9,34:[1,438],60:439,147:437,312:$Vb},o($Vz1,[2,70]),o($Vq,[2,328],{48:$V82,119:$V82}),{46:$VM,62:440},o($VI,[2,301]),o($Vf,[2,308],{136:441,320:[1,442]}),{46:$VM,62:443},o($VI,[2,307]),o($VW1,[2,23]),o($VW1,[2,260]),{87:[1,444]},{87:[1,445]},{13:$V8,16:$V9,34:$V92,35:$Ve1,60:274,72:272,73:273,79:446,80:447,81:$Va2,82:271,83:$Vb2,84:450,274:231,275:$Vf1,276:$Vg1,277:$Vh1,279:$Vi1,280:236,281:$Vj1,282:$Vk1,283:239,284:$Vl1,285:$Vm1,288:$Vn1,290:$Vo1,312:$Vb,340:$Vp1,341:$Vq1,342:$Vr1,343:$Vs1,344:$Vt1,345:$Vu1},o($VX1,[2,264]),o($Vc2,[2,71]),o($Vc2,[2,72]),o($VJ,$VK,{64:154,74:155,21:452,75:$VL}),o($VN,$VO,{63:162,67:163,24:453,68:$VP}),{46:[2,343],48:[2,73],89:463,90:$V4,119:[1,459],158:454,159:455,166:456,167:[1,457],168:[1,458],170:[1,460],173:[1,461],174:[1,462]},o($VZ1,[2,341],{165:464,328:[1,465]}),o($Vd2,$Ve2,{202:466,205:467,210:468,211:470,34:$Vf2}),o($Vg2,[2,377],{205:467,210:468,211:470,204:471,202:472,13:$Ve2,16:$Ve2,35:$Ve2,195:$Ve2,219:$Ve2,224:$Ve2,312:$Ve2,34:$Vf2}),o($Vh2,[2,375]),o($Vh2,[2,376]),{13:$V8,16:$V9,34:$VQ,35:$V_1,39:478,60:178,87:$VS,93:$VT,98:179,200:474,203:476,226:$V$1,228:473,230:475,231:$Vy,243:477,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($Vd2,$Ve2,{205:467,210:468,211:470,202:479,34:$Vf2}),o($VN,[2,24],{274:231,280:236,283:239,60:274,72:390,73:391,71:480,13:$V8,16:$V9,34:$V02,35:$V12,275:$Vf1,276:$Vg1,277:$Vh1,279:$Vi1,281:$Vj1,282:$Vk1,284:$Vl1,285:$Vm1,288:$Vn1,290:$Vo1,312:$Vb,340:$Vp1,341:$Vq1,342:$Vr1,343:$Vs1,344:$Vt1,345:$Vu1}),o($Vi2,[2,261]),o($Vi2,[2,25]),o($Vi2,[2,26]),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:481,219:$Vx,273:$Vz,334:$VA}),o($Vi2,[2,29]),o($VN,$VO,{63:162,67:163,24:482,68:$VP}),o([48,119,227,328],[2,97],{190:483,191:[1,484]}),o($V22,[2,99]),{13:$V8,16:$V9,34:$VQ,35:$VR,39:304,60:178,87:$VS,93:$VT,98:179,185:302,197:485,226:$VU,229:301,231:$Vy,243:303,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($Vj2,[2,125]),o($V32,[2,403]),o($Vj2,[2,126]),o($VI1,[2,183]),o($Vu,[2,14]),o($Vu,[2,15]),o($V91,[2,145]),{13:$V8,16:$V9,34:$VQ,39:487,60:178,87:$VS,93:$VT,98:179,231:$Vy,233:486,243:488,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},{235:[1,489]},{235:[2,418]},{235:[2,419]},o($Va1,[2,147]),o($Va1,[2,150]),o($Vb1,[2,152]),o($Vb1,[2,153],{270:328,269:490,26:$VL1,331:$VM1}),o($Vb1,[2,154],{270:328,269:491,26:$VL1,331:$VM1}),o($Vc1,[2,156]),o($VK1,[2,353],{176:492}),o($VK1,[2,352]),o([6,13,16,26,34,35,37,38,46,48,78,81,83,86,87,88,90,93,119,167,168,170,173,174,191,226,231,245,246,250,254,258,273,275,276,277,278,279,281,282,284,285,288,290,295,299,300,301,302,303,304,305,306,307,308,309,310,311,312,328,331,334,335,336,337,338,339,340,341,342,343,344,345],[2,166]),{38:[1,493]},{278:[1,494]},{278:[1,495]},o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:496,219:$Vx,273:$Vz,334:$VA}),{38:[1,497]},{38:[1,498]},o($VP1,[2,176]),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,287:499,36:501,26:[1,500],219:$Vx,273:$Vz,334:$VA}),o($V52,[2,464]),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:502,219:$Vx,273:$Vz,334:$VA}),o($VK1,[2,468]),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:503,219:$Vx,273:$Vz,334:$VA}),o($VK1,[2,470]),{13:$V8,16:$V9,34:[1,505],60:506,238:504,312:$Vb},{13:$V8,16:$V9,34:$VD1,60:294,193:507,195:$VE1,312:$Vb},o($VG1,[2,426]),o($VG1,[2,427]),{35:[1,510],48:[1,508],101:509},o($VF,[2,63]),{46:[1,511]},{46:[2,319]},{46:[2,320]},o($VF,[2,57]),{13:$V8,16:$V9,60:512,312:$Vb},o($Vf,[2,309]),o($VF,[2,58]),o($VW1,[2,36],{88:[1,513]}),o($VW1,[2,37],{86:[1,514]}),o($VA1,[2,31],{274:231,280:236,283:239,82:271,72:272,73:273,60:274,84:450,80:515,13:$V8,16:$V9,34:$V92,35:$Ve1,81:$Va2,83:$Vb2,275:$Vf1,276:$Vg1,277:$Vh1,279:$Vi1,281:$Vj1,282:$Vk1,284:$Vl1,285:$Vm1,288:$Vn1,290:$Vo1,312:$Vb,340:$Vp1,341:$Vq1,342:$Vr1,343:$Vs1,344:$Vt1,345:$Vu1}),o($Vk2,[2,265]),{35:$Ve1,82:516},{35:$Ve1,82:517},o($Vk2,[2,34]),o($Vk2,[2,35]),{31:518,48:[2,227],89:519,90:$V4},{32:520,48:[2,229],89:521,90:$V4},o($VZ1,[2,334]),o($Vl2,[2,335],{160:522,328:[1,523]}),{46:$VM,62:524},{46:$VM,62:525},{46:$VM,62:526},{13:$V8,16:$V9,34:[1,528],60:529,169:527,312:$Vb},o($Vm2,[2,347],{171:530,321:[1,531]}),{13:$V8,16:$V9,35:$Ve1,60:274,72:272,73:273,82:271,84:532,274:231,275:$Vf1,276:$Vg1,277:$Vh1,279:$Vi1,280:236,281:$Vj1,282:$Vk1,283:239,284:$Vl1,285:$Vm1,288:$Vn1,290:$Vo1,312:$Vb,340:$Vp1,341:$Vq1,342:$Vr1,343:$Vs1,344:$Vt1,345:$Vu1},{35:[1,533]},o($Vn2,[2,84]),o($VZ1,[2,75]),o($Vq,[2,340],{46:$Vo2,48:$Vo2,90:$Vo2,119:$Vo2,167:$Vo2,168:$Vo2,170:$Vo2,173:$Vo2,174:$Vo2}),o($Vg2,[2,105]),o($Vq,[2,381],{206:534}),o($Vq,[2,379]),o($Vq,[2,380]),o($Vd2,[2,389],{212:535,213:536}),o($Vg2,[2,106]),o($Vg2,[2,378]),{13:$V8,16:$V9,34:$VQ,35:$V_1,38:[1,537],39:478,60:178,87:$VS,93:$VT,98:179,200:538,203:476,226:$V$1,230:475,231:$Vy,243:477,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($V32,[2,404]),o($Vp2,[2,131]),o($Vp2,[2,132]),o($Vp2,[2,408]),o($Vp2,[2,409]),{227:[1,539]},o($Vi2,[2,262]),{37:[1,541],38:[1,540]},o($V5,[2,17]),o($V22,[2,368]),o($V22,[2,369],{193:292,60:294,192:542,188:543,13:$V8,16:$V9,34:$VD1,195:$VE1,312:$Vb}),o($V22,[2,103],{278:[1,544]}),{13:$V8,16:$V9,34:$VD1,60:294,193:545,195:$VE1,312:$Vb},o($VG1,[2,412]),o($VG1,[2,413]),o($Vq2,[2,134]),o($Vc1,[2,447]),o($Vc1,[2,449]),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:546,219:$Vx,273:$Vz,334:$VA}),o($VP1,[2,169]),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:547,219:$Vx,273:$Vz,334:$VA}),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:548,219:$Vx,273:$Vz,334:$VA}),{38:[1,549],278:[1,550]},o($VP1,[2,173]),o($VP1,[2,175]),{38:[1,551]},{38:[2,465]},{38:[2,466]},{38:[1,552]},{38:[2,471],191:[1,555],292:553,293:554},{46:[1,556]},{46:[2,420]},{46:[2,421]},{13:$V8,16:$V9,60:178,87:$VS,93:$VT,98:179,99:558,231:$VU1,242:557,244:559,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($VB,[2,43]),o($V72,[2,274]),{13:$V8,16:$V9,60:350,87:$VS,97:561,98:351,99:352,100:$VT1,102:560,231:$VU1,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($Vq,$VG,{152:146,148:562,151:563,48:[2,321]}),o($VI,[2,61]),{87:[1,564]},{87:[1,565]},o($Vk2,[2,266]),o($Vk2,[2,32]),o($Vk2,[2,33]),{48:[2,11]},{48:[2,228]},{48:[2,12]},{48:[2,230]},o($Vq,$VB1,{163:281,161:566,162:567,46:$Vr2,48:$Vr2,90:$Vr2,119:$Vr2,167:$Vr2,168:$Vr2,170:$Vr2,173:$Vr2,174:$Vr2}),o($Vl2,[2,336]),o($Vn2,[2,76],{329:[1,568]}),o($Vn2,[2,77]),o($Vn2,[2,78]),{46:$VM,62:569},{46:[2,345]},{46:[2,346]},{13:$V8,16:$V9,34:[1,571],60:572,172:570,312:$Vb},o($Vm2,[2,348]),o($Vn2,[2,81]),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:573,39:574,219:$Vx,231:$Vy,273:$Vz,334:$VA}),{13:$V8,16:$V9,34:$VQ,35:$V_1,39:478,60:178,87:$VS,93:$VT,98:179,200:575,203:476,226:$V$1,230:475,231:$Vy,243:477,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($V32,[2,110],{330:[1,576]}),o($Vs2,[2,396],{214:577,218:578,224:[1,579]}),o($Vt2,[2,127]),o($V32,[2,405]),o($Vt2,[2,128]),o($Vi2,[2,27]),{34:[1,580]},o($V22,[2,98]),o($V22,[2,370]),o($Vq,[2,372]),{13:$V8,16:$V9,34:$VQ,39:582,60:178,87:$VS,93:$VT,98:179,231:$Vy,234:581,243:583,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},{38:[1,584],278:[1,585]},{38:[1,586]},{278:[1,587]},o($VP1,[2,91]),o($VK1,[2,356]),o($VP1,[2,177]),o($VP1,[2,178]),{38:[1,588]},{38:[2,472]},{294:[1,589]},{13:$V8,16:$V9,60:178,87:$VS,93:$VT,98:179,99:591,231:$VU1,239:590,244:592,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},{235:[1,593]},{235:[2,428]},{235:[2,429]},{13:$V8,16:$V9,38:[1,594],60:350,87:$VS,97:595,98:351,99:352,100:$VT1,231:$VU1,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($Vu2,[2,275]),{48:[1,596]},{48:[2,322]},o($VW1,[2,38]),o($VW1,[2,39]),o($VZ1,[2,74]),o($VZ1,[2,338]),{46:[2,344]},o($Vn2,[2,79]),{46:$VM,62:597},{46:[2,349]},{46:[2,350]},{37:[1,598]},{37:[1,599]},o($Vv2,[2,383],{207:600,278:[1,601]}),o($Vd2,[2,388]),o([13,16,34,35,38,87,93,226,231,245,246,299,300,301,302,303,304,305,306,307,308,309,310,311,312,330],[2,111],{331:[1,602]}),{13:$V8,16:$V9,35:[1,608],60:605,195:[1,606],215:603,216:604,219:[1,607],312:$Vb},o($Vs2,[2,397]),{38:[1,609]},{48:[1,610]},{48:[2,414]},{48:[2,415]},o($VP1,[2,89]),o($VK1,[2,354]),o($VP1,[2,170]),o($Vv,$Vw,{247:116,251:118,255:119,259:120,267:121,271:122,36:611,219:$Vx,273:$Vz,334:$VA}),o($VP1,[2,179]),{295:[1,612]},{13:$V8,16:$V9,34:$VD1,60:294,193:613,195:$VE1,312:$Vb},o($VG1,[2,422]),o($VG1,[2,423]),o($Vw2,[2,136]),o($V72,[2,48]),o($Vu2,[2,276]),o($Vx2,[2,323],{149:614,328:[1,615]}),o($Vn2,[2,80]),{34:[1,616]},{34:[1,617]},o([46,48,90,119,167,168,170,173,174,227,328],[2,107],{208:618,191:[1,619]}),o($Vq,[2,382]),o($Vd2,[2,390]),o($Vy2,[2,113]),o($Vy2,[2,394],{217:620,332:621,26:[1,623],333:[1,622],334:[1,624]}),o($Vz2,[2,114]),o($Vz2,[2,115]),{13:$V8,16:$V9,35:[1,628],60:629,93:[1,627],195:$VA2,220:625,221:626,224:$VB2,312:$Vb},o($Vd2,$Ve2,{211:470,210:632}),o($Vi2,[2,28]),{235:[1,633]},{38:[1,634]},{296:635,302:$V_,303:$V$,304:$V01,305:$V11},{13:$V8,16:$V9,60:178,87:$VS,93:$VT,98:179,99:637,231:$VU1,240:636,244:638,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},o($Vq,$VG,{152:146,150:639,151:640,48:$VC2,119:$VC2}),o($Vx2,[2,324]),{38:[1,641]},{38:[1,642]},o($Vv2,[2,384]),o($Vv2,[2,108],{211:470,209:643,210:644,13:$Ve2,16:$Ve2,35:$Ve2,195:$Ve2,219:$Ve2,224:$Ve2,312:$Ve2,34:[1,645]}),o($Vy2,[2,112]),o($Vy2,[2,395]),o($Vy2,[2,391]),o($Vy2,[2,392]),o($Vy2,[2,393]),o($Vz2,[2,116]),o($Vz2,[2,118]),o($Vz2,[2,119]),o($VD2,[2,398],{222:646}),o($Vz2,[2,121]),o($Vz2,[2,122]),{13:$V8,16:$V9,60:647,195:[1,648],312:$Vb},{38:[1,649]},o($Vq2,[2,133]),o($VP1,[2,171]),{38:[2,180]},{48:[1,650]},{48:[2,424]},{48:[2,425]},o($Vz1,[2,69]),o($Vz1,[2,326]),o($Vn2,[2,82]),o($Vn2,[2,83]),o($Vq,[2,373],{198:651,199:652}),o($Vq,[2,385]),o($Vq,[2,386]),{13:$V8,16:$V9,38:[2,400],60:629,195:$VA2,221:654,223:653,224:$VB2,312:$Vb},o($Vz2,[2,123]),o($Vz2,[2,124]),o($Vz2,[2,117]),{235:[1,655]},o($Vv2,[2,109]),{13:$V8,16:$V9,34:$VQ,35:$V_1,39:478,60:178,87:$VS,93:$VT,98:179,200:656,203:476,226:$V$1,230:475,231:$Vy,243:477,244:177,245:$VV,246:$VW,263:187,265:188,296:183,299:$VX,300:$VY,301:$VZ,302:$V_,303:$V$,304:$V01,305:$V11,306:$V21,307:$V31,308:$V41,309:$V51,310:$V61,311:$V71,312:$Vb},{38:[1,657]},{38:[2,401],330:[1,658]},o($Vw2,[2,135]),o($Vv2,[2,104],{278:[1,659]}),o($Vz2,[2,120]),o($VD2,[2,399]),o($Vq,[2,374])],\ndefaultActions: {5:[2,205],6:[2,206],8:[2,204],26:[2,1],27:[2,3],28:[2,216],77:[2,49],86:[2,295],100:[2,252],107:[2,358],220:[2,441],248:[2,462],287:[2,236],288:[2,93],314:[2,410],315:[2,411],407:[2,418],408:[2,419],438:[2,319],439:[2,320],500:[2,465],501:[2,466],505:[2,420],506:[2,421],518:[2,11],519:[2,228],520:[2,12],521:[2,230],528:[2,345],529:[2,346],554:[2,472],558:[2,428],559:[2,429],563:[2,322],568:[2,344],571:[2,349],572:[2,350],582:[2,414],583:[2,415],635:[2,180],637:[2,424],638:[2,425]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n /*\n SPARQL parser in the Jison parser generator format.\n */\n\n var Wildcard = require('./Wildcard').Wildcard;\n\n // Common namespaces and entities\n var RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n RDF_TYPE = RDF + 'type',\n RDF_FIRST = RDF + 'first',\n RDF_REST = RDF + 'rest',\n RDF_NIL = RDF + 'nil',\n XSD = 'http://www.w3.org/2001/XMLSchema#',\n XSD_INTEGER = XSD + 'integer',\n XSD_DECIMAL = XSD + 'decimal',\n XSD_DOUBLE = XSD + 'double',\n XSD_BOOLEAN = XSD + 'boolean';\n\n var base = '', basePath = '', baseRoot = '';\n\n // Returns a lowercase version of the given string\n function lowercase(string) {\n return string.toLowerCase();\n }\n\n // Appends the item to the array and returns the array\n function appendTo(array, item) {\n return array.push(item), array;\n }\n\n // Appends the items to the array and returns the array\n function appendAllTo(array, items) {\n return array.push.apply(array, items), array;\n }\n\n // Extends a base object with properties of other objects\n function extend(base) {\n if (!base) base = {};\n for (var i = 1, l = arguments.length, arg; i < l && (arg = arguments[i] || {}); i++)\n for (var name in arg)\n base[name] = arg[name];\n return base;\n }\n\n // Creates an array that contains all items of the given arrays\n function unionAll() {\n var union = [];\n for (var i = 0, l = arguments.length; i < l; i++)\n union = union.concat.apply(union, arguments[i]);\n return union;\n }\n\n // Resolves an IRI against a base path\n function resolveIRI(iri) {\n // Strip off possible angular brackets\n if (iri[0] === '<')\n iri = iri.substring(1, iri.length - 1);\n // Return absolute IRIs unmodified\n if (/^[a-z]+:/i.test(iri))\n return iri;\n if (!Parser.base)\n throw new Error('Cannot resolve relative IRI ' + iri + ' because no base IRI was set.');\n if (base !== Parser.base) {\n base = Parser.base;\n basePath = base.replace(/[^\\/:]*$/, '');\n baseRoot = base.match(/^(?:[a-z]+:\\/*)?[^\\/]*/)[0];\n }\n switch (iri[0]) {\n // An empty relative IRI indicates the base IRI\n case undefined:\n return base;\n // Resolve relative fragment IRIs against the base IRI\n case '#':\n return base + iri;\n // Resolve relative query string IRIs by replacing the query string\n case '?':\n return base.replace(/(?:\\?.*)?$/, iri);\n // Resolve root relative IRIs at the root of the base IRI\n case '/':\n return baseRoot + iri;\n // Resolve all other IRIs at the base IRI's path\n default:\n return basePath + iri;\n }\n }\n\n // If the item is a variable, ensures it starts with a question mark\n function toVar(variable) {\n if (variable) {\n var first = variable[0];\n if (first === '?' || first === '$') return Parser.factory.variable(variable.substr(1));\n }\n return variable;\n }\n\n // Creates an operation with the given name and arguments\n function operation(operatorName, args) {\n return { type: 'operation', operator: operatorName, args: args || [] };\n }\n\n // Creates an expression with the given type and attributes\n function expression(expr, attr) {\n var expression = { expression: expr === '*'? new Wildcard() : expr };\n if (attr)\n for (var a in attr)\n expression[a] = attr[a];\n return expression;\n }\n\n // Creates a path with the given type and items\n function path(type, items) {\n return { type: 'path', pathType: type, items: items };\n }\n\n // Transforms a list of operations types and arguments into a tree of operations\n function createOperationTree(initialExpression, operationList) {\n for (var i = 0, l = operationList.length, item; i < l && (item = operationList[i]); i++)\n initialExpression = operation(item[0], [initialExpression, item[1]]);\n return initialExpression;\n }\n\n // Group datasets by default and named\n function groupDatasets(fromClauses, groupName) {\n var defaults = [], named = [], l = fromClauses.length, fromClause, group = {};\n if (!l)\n return null;\n for (var i = 0; i < l && (fromClause = fromClauses[i]); i++)\n (fromClause.named ? named : defaults).push(fromClause.iri);\n group[groupName || 'from'] = { default: defaults, named: named };\n return group;\n }\n\n // Converts the string to a number\n function toInt(string) {\n return parseInt(string, 10);\n }\n\n // Transforms a possibly single group into its patterns\n function degroupSingle(group) {\n return group.type === 'group' && group.patterns.length === 1 ? group.patterns[0] : group;\n }\n\n // Creates a literal with the given value and type\n function createTypedLiteral(value, type) {\n if (type && type.termType !== 'NamedNode'){\n type = Parser.factory.namedNode(type);\n }\n return Parser.factory.literal(value, type);\n }\n\n // Creates a literal with the given value and language\n function createLangLiteral(value, lang) {\n return Parser.factory.literal(value, lang);\n }\n\n // Creates a triple with the given subject, predicate, and object\n function triple(subject, predicate, object) {\n var triple = {};\n if (subject != null) triple.subject = subject;\n if (predicate != null) triple.predicate = predicate;\n if (object != null) triple.object = object;\n return triple;\n }\n\n // Creates a new blank node\n function blank(name) {\n if (typeof name === 'string') { // Only use name if a name is given\n if (name.startsWith('e_')) return Parser.factory.blankNode(name);\n return Parser.factory.blankNode('e_' + name);\n }\n return Parser.factory.blankNode('g_' + blankId++);\n };\n var blankId = 0;\n Parser._resetBlanks = function () { blankId = 0; }\n\n // Regular expression and replacement strings to escape strings\n var escapeSequence = /\\\\u([a-fA-F0-9]{4})|\\\\U([a-fA-F0-9]{8})|\\\\(.)/g,\n escapeReplacements = { '\\\\': '\\\\', \"'\": \"'\", '\"': '\"',\n 't': '\\t', 'b': '\\b', 'n': '\\n', 'r': '\\r', 'f': '\\f' },\n partialSurrogatesWithoutEndpoint = /[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/,\n fromCharCode = String.fromCharCode;\n\n // Translates escape codes in the string into their textual equivalent\n function unescapeString(string, trimLength) {\n string = string.substring(trimLength, string.length - trimLength);\n try {\n string = string.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) >> 10), 0xDC00 + (charCode & 0x3FF));\n }\n else {\n var replacement = escapeReplacements[escapedChar];\n if (!replacement) throw new Error();\n return replacement;\n }\n });\n }\n catch (error) { return ''; }\n\n // Test for invalid unicode surrogate pairs\n if (partialSurrogatesWithoutEndpoint.exec(string)) {\n throw new Error('Invalid unicode codepoint of surrogate pair without corresponding codepoint in ' + string);\n }\n\n return string;\n }\n\n // Creates a list, collecting its (possibly blank) items and triples associated with those items\n function createList(objects) {\n var list = blank(), head = list, listItems = [], listTriples, triples = [];\n objects.forEach(function (o) { listItems.push(o.entity); appendAllTo(triples, o.triples); });\n\n // Build an RDF list out of the items\n for (var i = 0, j = 0, l = listItems.length, listTriples = Array(l * 2); i < l;)\n listTriples[j++] = triple(head, Parser.factory.namedNode(RDF_FIRST), listItems[i]),\n listTriples[j++] = triple(head, Parser.factory.namedNode(RDF_REST), head = ++i < l ? blank() : Parser.factory.namedNode(RDF_NIL));\n\n // Return the list's identifier, its triples, and the triples associated with its items\n return { entity: list, triples: appendAllTo(listTriples, triples) };\n }\n\n // Creates a blank node identifier, collecting triples with that blank node as subject\n function createAnonymousObject(propertyList) {\n var entity = blank();\n return {\n entity: entity,\n triples: propertyList.map(function (t) { return extend(triple(entity), t); })\n };\n }\n\n // Collects all (possibly blank) objects, and triples that have them as subject\n function objectListToTriples(predicate, objectList, otherTriples) {\n var objects = [], triples = [];\n objectList.forEach(function (l) {\n objects.push(triple(null, predicate, l.entity));\n appendAllTo(triples, l.triples);\n });\n return unionAll(objects, otherTriples || [], triples);\n }\n\n // Simplifies groups by merging adjacent BGPs\n function mergeAdjacentBGPs(groups) {\n var merged = [], currentBgp;\n for (var i = 0, group; group = groups[i]; i++) {\n switch (group.type) {\n // Add a BGP's triples to the current BGP\n case 'bgp':\n if (group.triples.length) {\n if (!currentBgp)\n appendTo(merged, currentBgp = group);\n else\n appendAllTo(currentBgp.triples, group.triples);\n }\n break;\n // All other groups break up a BGP\n default:\n // Only add the group if its pattern is non-empty\n if (!group.patterns || group.patterns.length > 0) {\n appendTo(merged, group);\n currentBgp = null;\n }\n }\n }\n return merged;\n }\n\n // Return the id of an expression\n function getExpressionId(expression) {\n return expression.variable ? expression.variable.value : expression.value || expression.expression.value;\n }\n\n // Get all \"aggregate\"'s from an expression\n function getAggregatesOfExpression(expression) {\n if (!expression) {\n return [];\n }\n if (expression.type === 'aggregate') {\n return [expression];\n } else if (expression.type === \"operation\") {\n const aggregates = [];\n for (const arg of expression.args) {\n aggregates.push(...getAggregatesOfExpression(arg));\n }\n return aggregates;\n }\n return [];\n }\n\n // Get all variables used in an expression\n function getVariablesFromExpression(expression) {\n const variables = new Set();\n const visitExpression = function (expr) {\n if (!expr) { return; }\n if (expr.termType === \"Variable\") {\n variables.add(expr);\n } else if (expr.type === \"operation\") {\n expr.args.forEach(visitExpression);\n }\n };\n visitExpression(expression);\n return variables;\n }\n\n // Helper function to flatten arrays\n function flatten(input, depth = 1, stack = []) {\n for (const item of input) {\n if (depth > 0 && item instanceof Array) {\n flatten(item, depth - 1, stack);\n } else {\n stack.push(item);\n }\n }\n return stack;\n }\n\n function isVariable(term) {\n return term.termType === 'Variable';\n }\n\n function getBoundVarsFromGroupGraphPattern(pattern) {\n if (pattern.triples) {\n const boundVars = [];\n for (const triple of pattern.triples) {\n if (isVariable(triple.subject)) boundVars.push(triple.subject.value);\n if (isVariable(triple.predicate)) boundVars.push(triple.predicate.value);\n if (isVariable(triple.object)) boundVars.push(triple.object.value);\n }\n return boundVars;\n } else if (pattern.patterns) {\n const boundVars = [];\n for (const pat of pattern.patterns) {\n boundVars.push(...getBoundVarsFromGroupGraphPattern(pat));\n }\n return boundVars;\n }\n return [];\n }\n\n // Helper function to find duplicates in array\n function getDuplicatesInArray(array) {\n const sortedArray = array.slice().sort();\n const duplicates = [];\n for (let i = 0; i < sortedArray.length - 1; i++) {\n if (sortedArray[i + 1] == sortedArray[i]) {\n duplicates.push(sortedArray[i]);\n }\n }\n return duplicates;\n }\n\n function ensureSparqlStar(value) {\n if (!Parser.sparqlStar) {\n throw new Error('SPARQL* support is not enabled');\n }\n return value;\n }\n\n function ensureNoVariables(operations) {\n for (const operation of operations) {\n if (operation.type === 'graph' && operation.name.termType === 'Variable') {\n throw new Error('Detected illegal variable in GRAPH');\n }\n if (operation.type === 'bgp' || operation.type === 'graph') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'Variable' ||\n triple.predicate.termType === 'Variable' ||\n triple.object.termType === 'Variable') {\n throw new Error('Detected illegal variable in BGP');\n }\n }\n }\n }\n return operations;\n }\n\n function ensureNoBnodes(operations) {\n for (const operation of operations) {\n if (operation.type === 'bgp') {\n for (const triple of operation.triples) {\n if (triple.subject.termType === 'BlankNode' ||\n triple.predicate.termType === 'BlankNode' ||\n triple.object.termType === 'BlankNode') {\n throw new Error('Detected illegal blank node in BGP');\n }\n }\n }\n }\n return operations;\n }\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"flex\":true,\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* ignore */\nbreak;\ncase 1:return 12\nbreak;\ncase 2:return 15\nbreak;\ncase 3:return 28\nbreak;\ncase 4:return 316\nbreak;\ncase 5:return 317\nbreak;\ncase 6:return 35\nbreak;\ncase 7:return 37\nbreak;\ncase 8:return 38\nbreak;\ncase 9:return 26\nbreak;\ncase 10:return 41\nbreak;\ncase 11:return 45\nbreak;\ncase 12:return 46\nbreak;\ncase 13:return 48\nbreak;\ncase 14:return 50\nbreak;\ncase 15:return 55\nbreak;\ncase 16:return 58\nbreak;\ncase 17:return 320\nbreak;\ncase 18:return 68\nbreak;\ncase 19:return 69\nbreak;\ncase 20:return 75\nbreak;\ncase 21:return 78\nbreak;\ncase 22:return 81\nbreak;\ncase 23:return 83\nbreak;\ncase 24:return 86\nbreak;\ncase 25:return 88\nbreak;\ncase 26:return 90\nbreak;\ncase 27:return 191\nbreak;\ncase 28:return 107\nbreak;\ncase 29:return 321\nbreak;\ncase 30:return 140\nbreak;\ncase 31:return 322\nbreak;\ncase 32:return 323\nbreak;\ncase 33:return 117\nbreak;\ncase 34:return 324\nbreak;\ncase 35:return 116\nbreak;\ncase 36:return 325\nbreak;\ncase 37:return 326\nbreak;\ncase 38:return 120\nbreak;\ncase 39:return 122\nbreak;\ncase 40:return 123\nbreak;\ncase 41:return 138\nbreak;\ncase 42:return 132\nbreak;\ncase 43:return 133\nbreak;\ncase 44:return 135\nbreak;\ncase 45:return 141\nbreak;\ncase 46:return 119\nbreak;\ncase 47:return 327\nbreak;\ncase 48:return 328\nbreak;\ncase 49:return 167\nbreak;\ncase 50:return 170\nbreak;\ncase 51:return 174\nbreak;\ncase 52:return 100\nbreak;\ncase 53:return 168\nbreak;\ncase 54:return 329\nbreak;\ncase 55:return 173\nbreak;\ncase 56:return 231\nbreak;\ncase 57:return 235\nbreak;\ncase 58:return 278\nbreak;\ncase 59:return 195\nbreak;\ncase 60:return 330\nbreak;\ncase 61:return 331\nbreak;\ncase 62:return 224\nbreak;\ncase 63:return 333\nbreak;\ncase 64:return 334\nbreak;\ncase 65:return 219\nbreak;\ncase 66:return 226\nbreak;\ncase 67:return 227\nbreak;\ncase 68:return 250\nbreak;\ncase 69:return 254\nbreak;\ncase 70:return 295\nbreak;\ncase 71:return 335\nbreak;\ncase 72:return 336\nbreak;\ncase 73:return 337\nbreak;\ncase 74:return 338\nbreak;\ncase 75:return 339\nbreak;\ncase 76:return 258\nbreak;\ncase 77:return 340\nbreak;\ncase 78:return 273\nbreak;\ncase 79:return 281\nbreak;\ncase 80:return 282\nbreak;\ncase 81:return 275\nbreak;\ncase 82:return 276\nbreak;\ncase 83:return 277\nbreak;\ncase 84:return 341\nbreak;\ncase 85:return 342\nbreak;\ncase 86:return 279\nbreak;\ncase 87:return 344\nbreak;\ncase 88:return 343\nbreak;\ncase 89:return 345\nbreak;\ncase 90:return 284\nbreak;\ncase 91:return 285\nbreak;\ncase 92:return 288\nbreak;\ncase 93:return 290\nbreak;\ncase 94:return 294\nbreak;\ncase 95:return 298\nbreak;\ncase 96:return 301\nbreak;\ncase 97:return 13\nbreak;\ncase 98:return 16\nbreak;\ncase 99:return 312\nbreak;\ncase 100:return 245\nbreak;\ncase 101:return 34\nbreak;\ncase 102:return 297\nbreak;\ncase 103:return 87\nbreak;\ncase 104:return 299\nbreak;\ncase 105:return 300\nbreak;\ncase 106:return 306\nbreak;\ncase 107:return 307\nbreak;\ncase 108:return 308\nbreak;\ncase 109:return 309\nbreak;\ncase 110:return 310\nbreak;\ncase 111:return 311\nbreak;\ncase 112:return 'EXPONENT'\nbreak;\ncase 113:return 302\nbreak;\ncase 114:return 303\nbreak;\ncase 115:return 304\nbreak;\ncase 116:return 305\nbreak;\ncase 117:return 93\nbreak;\ncase 118:return 246\nbreak;\ncase 119:return 6\nbreak;\ncase 120:return 'INVALID'\nbreak;\ncase 121:console.log(yy_.yytext);\nbreak;\n}\n},\nrules: [/^(?:\\s+|(#[^\\n\\r]*))/i,/^(?:BASE)/i,/^(?:PREFIX)/i,/^(?:SELECT)/i,/^(?:DISTINCT)/i,/^(?:REDUCED)/i,/^(?:\\()/i,/^(?:AS)/i,/^(?:\\))/i,/^(?:\\*)/i,/^(?:CONSTRUCT)/i,/^(?:WHERE)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:DESCRIBE)/i,/^(?:ASK)/i,/^(?:FROM)/i,/^(?:NAMED)/i,/^(?:GROUP)/i,/^(?:BY)/i,/^(?:HAVING)/i,/^(?:ORDER)/i,/^(?:ASC)/i,/^(?:DESC)/i,/^(?:LIMIT)/i,/^(?:OFFSET)/i,/^(?:VALUES)/i,/^(?:;)/i,/^(?:LOAD)/i,/^(?:SILENT)/i,/^(?:INTO)/i,/^(?:CLEAR)/i,/^(?:DROP)/i,/^(?:CREATE)/i,/^(?:ADD)/i,/^(?:TO)/i,/^(?:MOVE)/i,/^(?:COPY)/i,/^(?:INSERT((\\s+|(#[^\\n\\r]*)\\n\\r?)+)DATA)/i,/^(?:DELETE((\\s+|(#[^\\n\\r]*)\\n\\r?)+)DATA)/i,/^(?:DELETE((\\s+|(#[^\\n\\r]*)\\n\\r?)+)WHERE)/i,/^(?:WITH)/i,/^(?:DELETE)/i,/^(?:INSERT)/i,/^(?:USING)/i,/^(?:DEFAULT)/i,/^(?:GRAPH)/i,/^(?:ALL)/i,/^(?:\\.)/i,/^(?:OPTIONAL)/i,/^(?:SERVICE)/i,/^(?:BIND)/i,/^(?:UNDEF)/i,/^(?:MINUS)/i,/^(?:UNION)/i,/^(?:FILTER)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:,)/i,/^(?:a)/i,/^(?:\\|)/i,/^(?:\\/)/i,/^(?:\\^)/i,/^(?:\\?)/i,/^(?:\\+)/i,/^(?:!)/i,/^(?:\\[)/i,/^(?:\\])/i,/^(?:\\|\\|)/i,/^(?:&&)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:<)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:>=)/i,/^(?:IN)/i,/^(?:NOT)/i,/^(?:-)/i,/^(?:BOUND)/i,/^(?:BNODE)/i,/^(?:(RAND|NOW|UUID|STRUUID))/i,/^(?:(LANG|DATATYPE|IRI|URI|ABS|CEIL|FLOOR|ROUND|STRLEN|STR|UCASE|LCASE|ENCODE_FOR_URI|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|MD5|SHA1|SHA256|SHA384|SHA512|isIRI|isURI|isBLANK|isLITERAL|isNUMERIC))/i,/^(?:(LANGMATCHES|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|STRLANG|STRDT|sameTerm))/i,/^(?:CONCAT)/i,/^(?:COALESCE)/i,/^(?:IF)/i,/^(?:REGEX)/i,/^(?:SUBSTR)/i,/^(?:REPLACE)/i,/^(?:EXISTS)/i,/^(?:COUNT)/i,/^(?:SUM|MIN|MAX|AVG|SAMPLE)/i,/^(?:GROUP_CONCAT)/i,/^(?:SEPARATOR)/i,/^(?:\\^\\^)/i,/^(?:true|false)/i,/^(?:(<(?:[^<>\\\"\\{\\}\\|\\^`\\\\\\u0000-\\u0020])*>))/i,/^(?:((([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?)?:))/i,/^(?:(((([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?)?:)((?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|:|[0-9]|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%))))(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%))))*(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\\\(_|~|\\.|-|!|\\$|&|'|\\(|\\)|\\*|\\+|,|;|=|\\/|\\?|#|@|%)))))?)))/i,/^(?:(_:(?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9])(?:(?:(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])|\\.)*(((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|-|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040]))?))/i,/^(?:([\\?\\$]((?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9])(?:((?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])|_))|[0-9]|\\u00B7|[\\u0300-\\u036F\\u203F-\\u2040])*)))/i,/^(?:(@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*))/i,/^(?:([0-9]+))/i,/^(?:([0-9]*\\.[0-9]+))/i,/^(?:([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+)))/i,/^(?:(\\+([0-9]+)))/i,/^(?:(\\+([0-9]*\\.[0-9]+)))/i,/^(?:(\\+([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:(-([0-9]+)))/i,/^(?:(-([0-9]*\\.[0-9]+)))/i,/^(?:(-([0-9]+\\.[0-9]*([eE][+-]?[0-9]+)|\\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:([eE][+-]?[0-9]+))/i,/^(?:('(?:(?:[^\\u0027\\u005C\\u000A\\u000D])|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*'))/i,/^(?:(\"(?:(?:[^\\u0022\\u005C\\u000A\\u000D])|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*\"))/i,/^(?:('''(?:(?:'|'')?(?:[^'\\\\]|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*'''))/i,/^(?:(\"\"\"(?:(?:\"|\"\")?(?:[^\\\"\\\\]|(\\\\[tbnrf\\\\\\\"']|\\\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*\"\"\"))/i,/^(?:(\\((\\u0020|\\u0009|\\u000D|\\u000A)*\\)))/i,/^(?:(\\[(\\u0020|\\u0009|\\u000D|\\u000A)*\\]))/i,/^(?:$)/i,/^(?:.)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[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,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,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = SparqlParser;\nexports.Parser = SparqlParser.Parser;\nexports.parse = function () { return SparqlParser.parse.apply(SparqlParser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","\n// Wildcard constructor\nclass Wildcard {\n constructor() {\n return WILDCARD || this;\n }\n\n equals(other) {\n return other && (this.termType === other.termType);\n }\n}\n\nObject.defineProperty(Wildcard.prototype, 'value', {\n enumerable: true,\n value: '*',\n});\n\nObject.defineProperty(Wildcard.prototype, 'termType', {\n enumerable: true,\n value: 'Wildcard',\n});\n\n\n// Wildcard singleton\nvar WILDCARD = new Wildcard();\n\nmodule.exports.Wildcard = Wildcard;\n","var Parser = require('./lib/SparqlParser').Parser;\nvar Generator = require('./lib/SparqlGenerator');\nvar Wildcard = require(\"./lib/Wildcard\").Wildcard;\nvar { DataFactory } = require('rdf-data-factory');\n\nmodule.exports = {\n /**\n * Creates a SPARQL parser with the given pre-defined prefixes and base IRI\n * @param options {\n * prefixes?: { [prefix: string]: string },\n * baseIRI?: string,\n * factory?: import('rdf-js').DataFactory,\n * sparqlStar?: boolean,\n * skipValidation?: boolean,\n * skipUngroupedVariableCheck?: boolean\n * }\n */\n Parser: function ({ prefixes, baseIRI, factory, sparqlStar, skipValidation, skipUngroupedVariableCheck } = {}) {\n\n // Create a copy of the prefixes\n var prefixesCopy = {};\n for (var prefix in prefixes || {})\n prefixesCopy[prefix] = prefixes[prefix];\n\n // Create a new parser with the given prefixes\n // (Workaround for https://github.com/zaach/jison/issues/241)\n var parser = new Parser();\n parser.parse = function () {\n Parser.base = baseIRI || '';\n Parser.prefixes = Object.create(prefixesCopy);\n Parser.factory = factory || new DataFactory();\n Parser.sparqlStar = Boolean(sparqlStar);\n // We keep skipUngroupedVariableCheck for compatibility reasons.\n Parser.skipValidation = Boolean(skipValidation) || Boolean(skipUngroupedVariableCheck)\n return Parser.prototype.parse.apply(parser, arguments);\n };\n parser._resetBlanks = Parser._resetBlanks;\n return parser;\n },\n Generator: Generator,\n Wildcard: Wildcard,\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/SparqlJsonParser\"), exports);\n__exportStar(require(\"./lib/SparqlJsonBindingsTransformer\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SparqlJsonBindingsTransformer = void 0;\nconst stream_1 = require(\"stream\");\n/**\n * Transforms a stream of SPARQL JSON bindings object to parsed bindings.\n */\nclass SparqlJsonBindingsTransformer extends stream_1.Transform {\n constructor(parser) {\n super({ objectMode: true });\n this.parser = parser;\n }\n _transform(chunk, encoding, callback) {\n callback(null, this.parser.parseJsonBindings(chunk));\n }\n}\nexports.SparqlJsonBindingsTransformer = SparqlJsonBindingsTransformer;\n//# sourceMappingURL=SparqlJsonBindingsTransformer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SparqlJsonParser = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst SparqlJsonBindingsTransformer_1 = require(\"./SparqlJsonBindingsTransformer\");\n/**\n * Parser for the SPARQL 1.1 Query Results JSON format.\n * @see https://www.w3.org/TR/sparql11-results-json/\n */\nclass SparqlJsonParser {\n constructor(settings) {\n settings = settings || {};\n this.dataFactory = settings.dataFactory || new rdf_data_factory_1.DataFactory();\n this.prefixVariableQuestionMark = !!settings.prefixVariableQuestionMark;\n }\n /**\n * Convert a SPARQL JSON bindings response to an array of bindings objects.\n * @param sparqlResponse A SPARQL JSON response.\n * @return {IBindings[]} An array of bindings.\n */\n parseJsonResults(sparqlResponse) {\n return sparqlResponse.results.bindings.map((rawBindings) => this.parseJsonBindings(rawBindings));\n }\n /**\n * Convert a SPARQL JSON bindings response stream to a stream of bindings objects.\n *\n * The bindings stream will emit a 'variables' event that will contain\n * the array of variables (as RDF.Variable[]), as defined in the response head.\n *\n * @param {NodeJS.ReadableStream} sparqlResponseStream A SPARQL JSON response stream.\n * @return {NodeJS.ReadableStream} A stream of bindings.\n */\n parseJsonResultsStream(sparqlResponseStream) {\n const errorListener = (error) => resultStream.emit('error', error);\n sparqlResponseStream.on('error', errorListener);\n const variables = [];\n sparqlResponseStream\n .pipe(require('JSONStream').parse('head.vars.*').on('error', errorListener))\n .on('data', (variable) => variables.push(this.dataFactory.variable(variable)))\n .on('end', () => resultStream.emit('variables', variables));\n const resultStream = sparqlResponseStream\n .pipe(require('JSONStream').parse('results.bindings.*').on('error', errorListener))\n .pipe(new SparqlJsonBindingsTransformer_1.SparqlJsonBindingsTransformer(this));\n return resultStream;\n }\n /**\n * Convert a SPARQL JSON result binding to a bindings object.\n * @param rawBindings A SPARQL JSON result binding.\n * @return {IBindings} A bindings object.\n */\n parseJsonBindings(rawBindings) {\n const bindings = {};\n for (const key in rawBindings) {\n const rawValue = rawBindings[key];\n let value = null;\n switch (rawValue.type) {\n case 'bnode':\n value = this.dataFactory.blankNode(rawValue.value);\n break;\n case 'literal':\n if (rawValue['xml:lang']) {\n value = this.dataFactory.literal(rawValue.value, rawValue['xml:lang']);\n }\n else if (rawValue.datatype) {\n value = this.dataFactory.literal(rawValue.value, this.dataFactory.namedNode(rawValue.datatype));\n }\n else {\n value = this.dataFactory.literal(rawValue.value);\n }\n break;\n case 'typed-literal':\n // Virtuoso uses this non-spec-compliant way of defining typed literals\n value = this.dataFactory.literal(rawValue.value, this.dataFactory.namedNode(rawValue.datatype));\n break;\n default:\n value = this.dataFactory.namedNode(rawValue.value);\n break;\n }\n bindings[this.prefixVariableQuestionMark ? ('?' + key) : key] = value;\n }\n return bindings;\n }\n /**\n * Convert a SPARQL JSON boolean response to a boolean.\n * This will throw an error if the given reponse was not a valid boolean response.\n * @param sparqlResponse A SPARQL JSON response.\n * @return {IBindings[]} An array of bindings.\n */\n parseJsonBoolean(sparqlResponse) {\n if ('boolean' in sparqlResponse) {\n return sparqlResponse.boolean;\n }\n throw new Error('No valid ASK response was found.');\n }\n /**\n * Convert a SPARQL JSON boolean response stream to a promise resolving to a boolean.\n * This will reject if the given reponse was not a valid boolean response.\n * @param {NodeJS.ReadableStream} sparqlResponseStream A SPARQL JSON response stream.\n * @return {NodeJS.ReadableStream} A stream of bindings.\n */\n parseJsonBooleanStream(sparqlResponseStream) {\n return new Promise((resolve, reject) => {\n sparqlResponseStream.on('error', reject);\n sparqlResponseStream.pipe(require('JSONStream').parse('boolean'))\n .on('data', resolve)\n .on('end', () => reject(new Error('No valid ASK response was found.')));\n });\n }\n}\nexports.SparqlJsonParser = SparqlJsonParser;\n//# sourceMappingURL=SparqlJsonParser.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./lib/Converter\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Converter = void 0;\nconst rdf_literal_1 = require(\"rdf-literal\");\nconst sparqljson_parse_1 = require(\"sparqljson-parse\");\n/**\n * Converts SPARQL JSON results to a tree-based structure by splitting variables on a certain delimiter.\n */\nclass Converter {\n constructor(settings) {\n settings = settings || { delimiter: '_' };\n settings.prefixVariableQuestionMark = false;\n this.delimiter = settings.delimiter || '_';\n this.parser = new sparqljson_parse_1.SparqlJsonParser(settings);\n this.materializeRdfJsTerms = settings.materializeRdfJsTerms;\n }\n /**\n * Adds a value to a tree.\n * @param tree A tree datastructure.\n * @param {string[]} path The path of keys in the tree.\n * @param {Term} value A value to add.\n * @param {string} lastKeyPath The accumulated key path (separated by the given delimiter)\n * through recursive calls, can be empty.\n * @param {ISchema} schema A schema.\n * @param {string} delimiter The string to join key paths by.\n */\n static addValueToTree(tree, path, value, lastKeyPath, schema, delimiter) {\n const key = path[0];\n const keyPath = lastKeyPath ? (lastKeyPath + delimiter + key) : key;\n const singularize = schema.singularizeVariables[keyPath];\n if (path.length === 1) {\n // Leaf nodes\n if (singularize) {\n if (!tree[key]) {\n tree[key] = value;\n }\n }\n else {\n if (!tree[key]) {\n tree[key] = [];\n }\n tree[key].push(value);\n }\n }\n else {\n // Inner nodes\n let nextNode;\n if (singularize) {\n if (!tree[key]) {\n tree[key] = {};\n }\n nextNode = tree[key];\n }\n else {\n if (!tree[key]) {\n tree[key] = [{}];\n }\n nextNode = tree[key][0];\n }\n Converter.addValueToTree(nextNode, path.slice(1), value, keyPath, schema, delimiter);\n }\n }\n /**\n * Recursively merge the two given trees.\n * @param tree1 A first tree (has key priority on literals).\n * @param tree2 A second tree. All arrays will/should only have a single element.\n * @return {any} The merged tree.\n */\n static mergeTrees(tree1, tree2) {\n if (typeof tree1 !== typeof tree2) {\n throw new Error(`Two incompatible tree nodes were found: ${typeof tree1} and ${typeof tree2}`);\n }\n if (Array.isArray(tree1) !== Array.isArray(tree2)) {\n throw new Error(`Two incompatible tree nodes were found: Array?${Array.isArray(tree1)} and Array?${Array.isArray(tree2)}`);\n }\n if (typeof tree1 === 'object' && typeof tree2 === 'object') {\n if (tree1.termType && tree2.termType) {\n if (tree1.equals(tree2)) {\n return { valid: true, result: tree1 };\n }\n else {\n return { valid: false, result: tree1 };\n }\n }\n if (Array.isArray(tree1) && Array.isArray(tree2)) {\n if (tree1.length > 0) {\n const merged = [];\n let valid = false;\n for (const tree1Element of tree1) {\n const mergedElement = Converter.mergeTrees(tree1Element, tree2[0]);\n if (mergedElement.valid) {\n valid = true;\n merged.push(mergedElement.result);\n }\n else {\n merged.push(tree1Element);\n }\n }\n if (valid) {\n return { valid: true, result: merged };\n }\n }\n return { valid: true, result: tree1.concat(tree2) };\n }\n else {\n const merged = {};\n for (const key2 in tree2) {\n merged[key2] = tree2[key2];\n }\n for (const key1 in tree1) {\n if (merged[key1]) {\n const mergedElement = Converter.mergeTrees(tree1[key1], merged[key1]);\n if (mergedElement.valid) {\n merged[key1] = mergedElement.result;\n }\n else {\n return { valid: false, result: tree1 };\n }\n }\n else {\n merged[key1] = tree1[key1];\n }\n }\n return { valid: true, result: merged };\n }\n }\n else {\n throw new Error(`Unmergable tree types: ${typeof tree1} and ${typeof tree2}`);\n }\n }\n /**\n * Materialize all RDF terms in the given tree to raw values.\n * This does not mutate the original tree.\n * @param tree A tree.\n * @return {any} A materialized tree.\n */\n static materializeTree(tree) {\n if (tree.termType) {\n return rdf_literal_1.getTermRaw(tree);\n }\n else if (Array.isArray(tree)) {\n return tree.map(Converter.materializeTree);\n }\n else {\n const materialized = {};\n for (const key in tree) {\n materialized[key] = Converter.materializeTree(tree[key]);\n }\n return materialized;\n }\n }\n /**\n * Convert a complete SPARQL JSON response to a GraphQL results tree.\n * @param sparqlResponse A SPARQL JSON response.\n * @param {ISchema} schema A schema.\n * @return {any} A GraphQL results tree.\n */\n sparqlJsonResultsToTree(sparqlResponse, schema) {\n return this.bindingsToTree(this.parser.parseJsonResults(sparqlResponse), schema || { singularizeVariables: {} });\n }\n /**\n * Convert an array of bindings to a GraphQL results tree.\n * @param {IBindings[]} bindingsArray An array of bindings.\n * @param {ISchema} schema A schema.\n * @return {any} A GraphQL results tree.\n */\n bindingsToTree(bindingsArray, schema) {\n const singularRoot = schema && schema.singularizeVariables[''];\n let tree = singularRoot ? {} : [];\n for (const bindings of bindingsArray) {\n const subTree = singularRoot ? {} : [{}];\n for (const key in bindings) {\n const path = key.split(this.delimiter);\n const value = bindings[key];\n Converter.addValueToTree(singularRoot ? subTree : subTree[0], path, value, '', schema, this.delimiter);\n }\n tree = Converter.mergeTrees(tree, subTree).result;\n }\n if (this.materializeRdfJsTerms) {\n tree = Converter.materializeTree(tree);\n }\n return tree;\n }\n}\nexports.Converter = Converter;\n//# sourceMappingURL=Converter.js.map","// 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/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.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","// 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}","var Stream = require('stream')\n\n// through\n//\n// a stream that does nothing but re-emit the input.\n// useful for aggregating a series of changing but not ending streams into one stream)\n\nexports = module.exports = through\nthrough.through = through\n\n//create a readable writable stream.\n\nfunction through (write, end, opts) {\n write = write || function (data) { this.queue(data) }\n end = end || function () { this.queue(null) }\n\n var ended = false, destroyed = false, buffer = [], _ended = false\n var stream = new Stream()\n stream.readable = stream.writable = true\n stream.paused = false\n\n// stream.autoPause = !(opts && opts.autoPause === false)\n stream.autoDestroy = !(opts && opts.autoDestroy === false)\n\n stream.write = function (data) {\n write.call(this, data)\n return !stream.paused\n }\n\n function drain() {\n while(buffer.length && !stream.paused) {\n var data = buffer.shift()\n if(null === data)\n return stream.emit('end')\n else\n stream.emit('data', data)\n }\n }\n\n stream.queue = stream.push = function (data) {\n// console.error(ended)\n if(_ended) return stream\n if(data === null) _ended = true\n buffer.push(data)\n drain()\n return stream\n }\n\n //this will be registered as the first 'end' listener\n //must call destroy next tick, to make sure we're after any\n //stream piped from here.\n //this is only a problem if end is not emitted synchronously.\n //a nicer way to do this is to make sure this is the last listener for 'end'\n\n stream.on('end', function () {\n stream.readable = false\n if(!stream.writable && stream.autoDestroy)\n process.nextTick(function () {\n stream.destroy()\n })\n })\n\n function _end () {\n stream.writable = false\n end.call(stream)\n if(!stream.readable && stream.autoDestroy)\n stream.destroy()\n }\n\n stream.end = function (data) {\n if(ended) return\n ended = true\n if(arguments.length) stream.write(data)\n _end() // will emit or queue\n return stream\n }\n\n stream.destroy = function () {\n if(destroyed) return\n destroyed = true\n ended = true\n buffer.length = 0\n stream.writable = stream.readable = false\n stream.emit('close')\n return stream\n }\n\n stream.pause = function () {\n if(stream.paused) return\n stream.paused = true\n return stream\n }\n\n stream.resume = function () {\n if(stream.paused) {\n stream.paused = false\n stream.emit('resume')\n }\n drain()\n //may have become paused again,\n //as drain emits 'data'.\n if(!stream.paused)\n stream.emit('drain')\n return stream\n }\n return stream\n}\n\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// 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 getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\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 if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\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 debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\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()`.\nexports.types = require('./support/types');\n\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;\nexports.types.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;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = 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\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","'use strict';\nconst nodeStream = require('stream');\nconst isNodeStream = require('is-stream');\nconst conversions = require('./lib/conversions');\n\nmodule.exports = require('web-streams-ponyfill');\n\n/**\n * Convert Web streams to Node streams. Until WritableStream / TransformStream\n * is finalized, only ReadableStream is supported.\n *\n * @param {ReadableStream} stream, a web stream.\n * @return {stream.Readable}, a Node Readable stream.\n */\nmodule.exports.toNodeReadable = function(stream) {\n if (stream instanceof module.exports.ReadableStream\n || stream && typeof stream.getReader === 'function') {\n return conversions.readable.webToNode(stream);\n } else {\n throw new TypeError(\"Expected a ReadableStream.\");\n }\n};\n\n/**\n * Convert Node Readable streams, an Array, Buffer or String to a Web\n * ReadableStream.\n *\n * @param {Readable|Array|Buffer|String} stream, a Node Readable stream,\n * Array, Buffer or String.\n * @return {ReadableStream}, a web ReadableStream.\n */\nmodule.exports.toWebReadableStream = function(stream) {\n if (isNodeStream(stream) && stream.readable) {\n return conversions.readable.nodeToWeb(stream);\n } else if (Array.isArray(stream)) {\n return conversions.readable.arrayToWeb(stream);\n } else if (Buffer.isBuffer(stream) || typeof stream === 'string') {\n return conversions.readable.arrayToWeb([stream]);\n } else {\n throw new TypeError(\"Expected a Node streams.Readable, an Array, Buffer or String.\");\n }\n};\n","'use strict';\n\nconst Readable = require('stream').Readable;\nconst ReadableStream = require('web-streams-ponyfill').ReadableStream;\n\n/**\n * Web / node stream conversion functions\n */\nglobal.ReadableStream = global.ReadableStream || ReadableStream;\n// TODO: The module 'readable-stream-node-to-web' expects `ReadableStream` in globals\nconst readableNodeToWeb = require('readable-stream-node-to-web');\n\n/**\n * ReadableStream wrapping an array.\n *\n * @param {Array} arr, the array to wrap into a stream.\n * @return {ReadableStream}\n */\nfunction arrayToWeb(arr) {\n return new ReadableStream({\n start(controller) {\n for (var i = 0; i < arr.length; i++) {\n controller.enqueue(arr[i]);\n }\n controller.close();\n }\n });\n}\n\n\nclass NodeReadable extends Readable {\n constructor(webStream, options) {\n super(options);\n this._webStream = webStream;\n this._reader = webStream.getReader();\n this._reading = false;\n }\n\n _read(size) {\n if (this._reading) {\n return;\n }\n this._reading = true;\n const doRead = () => {\n this._reader.read()\n .then(res => {\n if (this._doneReading) {\n this._reading = false;\n this._reader.releaseLock();\n this._doneReading();\n }\n if (res.done) {\n this.push(null);\n this._reading = false;\n this._reader.releaseLock();\n return;\n }\n if (this.push(res.value)) {\n return doRead(size);\n } else {\n this._reading = false;\n this._reader.releaseLock();\n }\n });\n };\n doRead();\n }\n \n _destroy(err, callback) {\n if (this._reading) {\n const promise = new Promise(resolve => {\n this._doneReading = resolve;\n });\n promise.then(() => this._handleDestroy(err, callback));\n } else {\n this._handleDestroy(err, callback);\n }\n }\n \n _handleDestroy(err, callback) {\n this._webStream.cancel();\n super._destroy(err, callback);\n }\n}\n\nfunction readableWebToNode(webStream) {\n return new NodeReadable(webStream);\n}\n\nmodule.exports = {\n readable: {\n nodeToWeb: readableNodeToWeb,\n arrayToWeb: arrayToWeb,\n webToNode: readableWebToNode,\n },\n};\n","'use strict';\n\nvar isStream = module.exports = function (stream) {\n\treturn stream !== null && typeof stream === 'object' && typeof stream.pipe === 'function';\n};\n\nisStream.writable = function (stream) {\n\treturn isStream(stream) && stream.writable !== false && typeof stream._write === 'function' && typeof stream._writableState === 'object';\n};\n\nisStream.readable = function (stream) {\n\treturn isStream(stream) && stream.readable !== false && typeof stream._read === 'function' && typeof stream._readableState === 'object';\n};\n\nisStream.duplex = function (stream) {\n\treturn isStream.writable(stream) && isStream.readable(stream);\n};\n\nisStream.transform = function (stream) {\n\treturn isStream.duplex(stream) && typeof stream._transform === 'function' && typeof stream._transformState === 'object';\n};\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.default = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o=0;s--)if(u[s]!==f[s])return!1;for(s=u.length-1;s>=0;s--)if(o=u[s],!_deepEqual(t[o],e[o],r,n))return!1;return!0}function notDeepStrictEqual(t,e,r){_deepEqual(t,e,!0)&&fail(t,e,r,\"notDeepStrictEqual\",notDeepStrictEqual)}function expectedException(t,e){if(!t||!e)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&!0===e.call({},t)}function _tryBlock(t){var e;try{t()}catch(t){e=t}return e}function _throws(t,e,r,n){var i;if(\"function\"!=typeof e)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=_tryBlock(e),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),t&&!i&&fail(i,r,\"Missing expected exception\"+n);var a=\"string\"==typeof n,o=!t&&util.isError(i),s=!t&&i&&!r;if((o&&a&&expectedException(i,r)||s)&&fail(i,r,\"Got unwanted exception\"+n),t&&i&&r&&!expectedException(i,r)||!t&&i)throw i}var util=_dereq_(\"util/\"),hasOwn=Object.prototype.hasOwnProperty,pSlice=Array.prototype.slice,functionsHaveNames=\"foo\"===function foo(){}.name,assert=module.exports=ok,regex=/\\s*function\\s+([^\\(\\s]*)\\s*/;assert.AssertionError=function AssertionError(t){this.name=\"AssertionError\",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=getMessage(this),this.generatedMessage=!0);var e=t.stackStartFunction||fail;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var n=r.stack,i=getName(e),a=n.indexOf(\"\\n\"+i);if(a>=0){var o=n.indexOf(\"\\n\",a+1);n=n.substring(o+1)}this.stack=n}}},util.inherits(assert.AssertionError,Error),assert.fail=fail,assert.ok=ok,assert.equal=function equal(t,e,r){t!=e&&fail(t,e,r,\"==\",assert.equal)},assert.notEqual=function notEqual(t,e,r){t==e&&fail(t,e,r,\"!=\",assert.notEqual)},assert.deepEqual=function deepEqual(t,e,r){_deepEqual(t,e,!1)||fail(t,e,r,\"deepEqual\",assert.deepEqual)},assert.deepStrictEqual=function deepStrictEqual(t,e,r){_deepEqual(t,e,!0)||fail(t,e,r,\"deepStrictEqual\",assert.deepStrictEqual)},assert.notDeepEqual=function notDeepEqual(t,e,r){_deepEqual(t,e,!1)&&fail(t,e,r,\"notDeepEqual\",assert.notDeepEqual)},assert.notDeepStrictEqual=notDeepStrictEqual,assert.strictEqual=function strictEqual(t,e,r){t!==e&&fail(t,e,r,\"===\",assert.strictEqual)},assert.notStrictEqual=function notStrictEqual(t,e,r){t===e&&fail(t,e,r,\"!==\",assert.notStrictEqual)},assert.throws=function(t,e,r){_throws(!0,t,e,r)},assert.doesNotThrow=function(t,e,r){_throws(!1,t,e,r)},assert.ifError=function(t){if(t)throw t};var objectKeys=Object.keys||function(t){var e=[];for(var r in t)hasOwn.call(t,r)&&e.push(r);return e};\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"util/\":7}],3:[function(_dereq_,module,exports){\n\n},{}],4:[function(_dereq_,module,exports){\nfunction defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}function runTimeout(e){if(cachedSetTimeout===setTimeout)return setTimeout(e,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(e,0);try{return cachedSetTimeout(e,0)}catch(t){try{return cachedSetTimeout.call(null,e,0)}catch(t){return cachedSetTimeout.call(this,e,0)}}}function runClearTimeout(e){if(cachedClearTimeout===clearTimeout)return clearTimeout(e);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(e);try{return cachedClearTimeout(e)}catch(t){try{return cachedClearTimeout.call(null,e)}catch(t){return cachedClearTimeout.call(this,e)}}}function cleanUpNextTick(){draining&¤tQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var e=runTimeout(cleanUpNextTick);draining=!0;for(var t=queue.length;t;){for(currentQueue=queue,queue=[];++queueIndex1)for(var r=1;r=3&&(t.depth=arguments[2]),arguments.length>=4&&(t.colors=arguments[3]),isBoolean(r)?t.showHidden=r:r&&exports._extend(t,r),isUndefined(t.showHidden)&&(t.showHidden=!1),isUndefined(t.depth)&&(t.depth=2),isUndefined(t.colors)&&(t.colors=!1),isUndefined(t.customInspect)&&(t.customInspect=!0),t.colors&&(t.stylize=stylizeWithColor),formatValue(t,e,t.depth)}function stylizeWithColor(e,r){var t=inspect.styles[r];return t?\"\u001b[\"+inspect.colors[t][0]+\"m\"+e+\"\u001b[\"+inspect.colors[t][1]+\"m\":e}function stylizeNoColor(e,r){return e}function arrayToHash(e){var r={};return e.forEach(function(e,t){r[e]=!0}),r}function formatValue(e,r,t){if(e.customInspect&&r&&isFunction(r.inspect)&&r.inspect!==exports.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(t,e);return isString(n)||(n=formatValue(e,n,t)),n}var i=formatPrimitive(e,r);if(i)return i;var o=Object.keys(r),s=arrayToHash(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),isError(r)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return formatError(r);if(0===o.length){if(isFunction(r)){var u=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+u+\"]\",\"special\")}if(isRegExp(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(isDate(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(isError(r))return formatError(r)}var c=\"\",a=!1,l=[\"{\",\"}\"];if(isArray(r)&&(a=!0,l=[\"[\",\"]\"]),isFunction(r)&&(c=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\"),isRegExp(r)&&(c=\" \"+RegExp.prototype.toString.call(r)),isDate(r)&&(c=\" \"+Date.prototype.toUTCString.call(r)),isError(r)&&(c=\" \"+formatError(r)),0===o.length&&(!a||0==r.length))return l[0]+c+l[1];if(t<0)return isRegExp(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\");e.seen.push(r);var p;return p=a?formatArray(e,r,t,s,o):o.map(function(n){return formatProperty(e,r,t,s,n,a)}),e.seen.pop(),reduceToSingleString(p,c,l)}function formatPrimitive(e,r){if(isUndefined(r))return e.stylize(\"undefined\",\"undefined\");if(isString(r)){var t=\"'\"+JSON.stringify(r).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(t,\"string\")}return isNumber(r)?e.stylize(\"\"+r,\"number\"):isBoolean(r)?e.stylize(\"\"+r,\"boolean\"):isNull(r)?e.stylize(\"null\",\"null\"):void 0}function formatError(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function formatArray(e,r,t,n,i){for(var o=[],s=0,u=r.length;s-1&&(u=o?u.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\").substr(2):\"\\n\"+u.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\")):u=e.stylize(\"[Circular]\",\"special\")),isUndefined(s)){if(o&&i.match(/^\\d+$/))return u;(s=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,\"name\")):(s=s.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),s=e.stylize(s,\"string\"))}return s+\": \"+u}function reduceToSingleString(e,r,t){var n=0;return e.reduce(function(e,r){return n++,r.indexOf(\"\\n\")>=0&&n++,e+r.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60?t[0]+(\"\"===r?\"\":r+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+t[1]:t[0]+r+\" \"+e.join(\", \")+\" \"+t[1]}function isArray(e){return Array.isArray(e)}function isBoolean(e){return\"boolean\"==typeof e}function isNull(e){return null===e}function isNullOrUndefined(e){return null==e}function isNumber(e){return\"number\"==typeof e}function isString(e){return\"string\"==typeof e}function isSymbol(e){return\"symbol\"==typeof e}function isUndefined(e){return void 0===e}function isRegExp(e){return isObject(e)&&\"[object RegExp]\"===objectToString(e)}function isObject(e){return\"object\"==typeof e&&null!==e}function isDate(e){return isObject(e)&&\"[object Date]\"===objectToString(e)}function isError(e){return isObject(e)&&(\"[object Error]\"===objectToString(e)||e instanceof Error)}function isFunction(e){return\"function\"==typeof e}function isPrimitive(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e}function objectToString(e){return Object.prototype.toString.call(e)}function pad(e){return e<10?\"0\"+e.toString(10):e.toString(10)}function timestamp(){var e=new Date,r=[pad(e.getHours()),pad(e.getMinutes()),pad(e.getSeconds())].join(\":\");return[e.getDate(),months[e.getMonth()],r].join(\" \")}function hasOwnProperty(e,r){return Object.prototype.hasOwnProperty.call(e,r)}var formatRegExp=/%[sdj%]/g;exports.format=function(e){if(!isString(e)){for(var r=[],t=0;t=i)return e;switch(e){case\"%s\":return String(n[t++]);case\"%d\":return Number(n[t++]);case\"%j\":try{return JSON.stringify(n[t++])}catch(e){return\"[Circular]\"}default:return e}}),s=n[t];t3&&void 0!==arguments[3]?arguments[3]:1,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){return 1},o=Object.create(ReadableStream.prototype);return InitializeReadableStream(o),SetUpReadableStreamDefaultController(o,Object.create(ReadableStreamDefaultController.prototype),e,r,t,a,l),o}function CreateReadableByteStream(e,r,t){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,o=Object.create(ReadableStream.prototype);return InitializeReadableStream(o),SetUpReadableByteStreamController(o,Object.create(ReadableByteStreamController.prototype),e,r,t,a,l),o}function InitializeReadableStream(e){e._state=\"readable\",e._reader=void 0,e._storedError=void 0,e._disturbed=!1}function IsReadableStream(e){return!!typeIsObject(e)&&!!Object.prototype.hasOwnProperty.call(e,\"_readableStreamController\")}function IsReadableStreamDisturbed(e){return e._disturbed}function IsReadableStreamLocked(e){return void 0!==e._reader}function ReadableStreamTee(e,r){function pullAlgorithm(){return ReadableStreamDefaultReaderRead(t).then(function(e){var r=e.value;if(!0===e.done&&!1===a&&(!1===l&&ReadableStreamDefaultControllerClose(d._readableStreamController),!1===o&&ReadableStreamDefaultControllerClose(s._readableStreamController),a=!0),!0!==a){var t=r,n=r;!1===l&&ReadableStreamDefaultControllerEnqueue(d._readableStreamController,t),!1===o&&ReadableStreamDefaultControllerEnqueue(s._readableStreamController,n)}})}function startAlgorithm(){}var t=AcquireReadableStreamDefaultReader(e),a=!1,l=!1,o=!1,n=void 0,i=void 0,d=void 0,s=void 0,u=void 0,c=new Promise(function(e){u=e});return d=CreateReadableStream(startAlgorithm,pullAlgorithm,function cancel1Algorithm(r){if(l=!0,n=r,!0===o){var t=createArrayFromList([n,i]),a=ReadableStreamCancel(e,t);u(a)}return c}),s=CreateReadableStream(startAlgorithm,pullAlgorithm,function cancel2Algorithm(r){if(o=!0,i=r,!0===l){var t=createArrayFromList([n,i]),a=ReadableStreamCancel(e,t);u(a)}return c}),t._closedPromise.catch(function(e){!0!==a&&(ReadableStreamDefaultControllerErrorIfNeeded(d._readableStreamController,e),ReadableStreamDefaultControllerErrorIfNeeded(s._readableStreamController,e),a=!0)}),[d,s]}function ReadableStreamAddReadIntoRequest(e){return new Promise(function(r,t){var a={_resolve:r,_reject:t};e._reader._readIntoRequests.push(a)})}function ReadableStreamAddReadRequest(e){return new Promise(function(r,t){var a={_resolve:r,_reject:t};e._reader._readRequests.push(a)})}function ReadableStreamCancel(e,r){return e._disturbed=!0,\"closed\"===e._state?Promise.resolve(void 0):\"errored\"===e._state?Promise.reject(e._storedError):(ReadableStreamClose(e),e._readableStreamController[CancelSteps](r).then(function(){}))}function ReadableStreamClose(e){e._state=\"closed\";var r=e._reader;if(void 0!==r){if(!0===IsReadableStreamDefaultReader(r)){var t=!0,a=!1,l=void 0;try{for(var o,n=r._readRequests[Symbol.iterator]();!(t=(o=n.next()).done);t=!0)(0,o.value._resolve)(CreateIterResultObject(void 0,!0))}catch(e){a=!0,l=e}finally{try{!t&&n.return&&n.return()}finally{if(a)throw l}}r._readRequests=[]}defaultReaderClosedPromiseResolve(r)}}function ReadableStreamError(e,r){e._state=\"errored\",e._storedError=r;var t=e._reader;if(void 0!==t){if(!0===IsReadableStreamDefaultReader(t)){var a=!0,l=!1,o=void 0;try{for(var n,i=t._readRequests[Symbol.iterator]();!(a=(n=i.next()).done);a=!0)n.value._reject(r)}catch(e){l=!0,o=e}finally{try{!a&&i.return&&i.return()}finally{if(l)throw o}}t._readRequests=[]}else{var d=!0,s=!1,u=void 0;try{for(var c,b=t._readIntoRequests[Symbol.iterator]();!(d=(c=b.next()).done);d=!0)c.value._reject(r)}catch(e){s=!0,u=e}finally{try{!d&&b.return&&b.return()}finally{if(s)throw u}}t._readIntoRequests=[]}defaultReaderClosedPromiseReject(t,r),t._closedPromise.catch(function(){})}}function ReadableStreamFulfillReadIntoRequest(e,r,t){e._reader._readIntoRequests.shift()._resolve(CreateIterResultObject(r,t))}function ReadableStreamFulfillReadRequest(e,r,t){e._reader._readRequests.shift()._resolve(CreateIterResultObject(r,t))}function ReadableStreamGetNumReadIntoRequests(e){return e._reader._readIntoRequests.length}function ReadableStreamGetNumReadRequests(e){return e._reader._readRequests.length}function ReadableStreamHasBYOBReader(e){var r=e._reader;return void 0!==r&&!1!==IsReadableStreamBYOBReader(r)}function ReadableStreamHasDefaultReader(e){var r=e._reader;return void 0!==r&&!1!==IsReadableStreamDefaultReader(r)}function IsReadableStreamBYOBReader(e){return!!typeIsObject(e)&&!!Object.prototype.hasOwnProperty.call(e,\"_readIntoRequests\")}function IsReadableStreamDefaultReader(e){return!!typeIsObject(e)&&!!Object.prototype.hasOwnProperty.call(e,\"_readRequests\")}function ReadableStreamReaderGenericInitialize(e,r){e._ownerReadableStream=r,r._reader=e,\"readable\"===r._state?defaultReaderClosedPromiseInitialize(e):\"closed\"===r._state?defaultReaderClosedPromiseInitializeAsResolved(e):(defaultReaderClosedPromiseInitializeAsRejected(e,r._storedError),e._closedPromise.catch(function(){}))}function ReadableStreamReaderGenericCancel(e,r){return ReadableStreamCancel(e._ownerReadableStream,r)}function ReadableStreamReaderGenericRelease(e){\"readable\"===e._ownerReadableStream._state?defaultReaderClosedPromiseReject(e,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\")):defaultReaderClosedPromiseResetToRejected(e,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\")),e._closedPromise.catch(function(){}),e._ownerReadableStream._reader=void 0,e._ownerReadableStream=void 0}function ReadableStreamBYOBReaderRead(e,r){var t=e._ownerReadableStream;return t._disturbed=!0,\"errored\"===t._state?Promise.reject(t._storedError):ReadableByteStreamControllerPullInto(t._readableStreamController,r)}function ReadableStreamDefaultReaderRead(e){var r=e._ownerReadableStream;return r._disturbed=!0,\"closed\"===r._state?Promise.resolve(CreateIterResultObject(void 0,!0)):\"errored\"===r._state?Promise.reject(r._storedError):r._readableStreamController[PullSteps]()}function IsReadableStreamDefaultController(e){return!!typeIsObject(e)&&!!Object.prototype.hasOwnProperty.call(e,\"_controlledReadableStream\")}function ReadableStreamDefaultControllerCallPullIfNeeded(e){!1!==ReadableStreamDefaultControllerShouldCallPull(e)&&(!0!==e._pulling?(e._pulling=!0,e._pullAlgorithm().then(function(){if(e._pulling=!1,!0===e._pullAgain)return e._pullAgain=!1,ReadableStreamDefaultControllerCallPullIfNeeded(e)},function(r){ReadableStreamDefaultControllerErrorIfNeeded(e,r)}).catch(rethrowAssertionErrorRejection)):e._pullAgain=!0)}function ReadableStreamDefaultControllerShouldCallPull(e){var r=e._controlledReadableStream;return!1!==ReadableStreamDefaultControllerCanCloseOrEnqueue(e)&&(!1!==e._started&&(!0===IsReadableStreamLocked(r)&&ReadableStreamGetNumReadRequests(r)>0||ReadableStreamDefaultControllerGetDesiredSize(e)>0))}function ReadableStreamDefaultControllerClose(e){var r=e._controlledReadableStream;e._closeRequested=!0,0===e._queue.length&&ReadableStreamClose(r)}function ReadableStreamDefaultControllerEnqueue(e,r){var t=e._controlledReadableStream;if(!0===IsReadableStreamLocked(t)&&ReadableStreamGetNumReadRequests(t)>0)ReadableStreamFulfillReadRequest(t,r,!1);else{var a=void 0;try{a=e._strategySizeAlgorithm(r)}catch(r){throw ReadableStreamDefaultControllerErrorIfNeeded(e,r),r}try{EnqueueValueWithSize(e,r,a)}catch(r){throw ReadableStreamDefaultControllerErrorIfNeeded(e,r),r}}ReadableStreamDefaultControllerCallPullIfNeeded(e)}function ReadableStreamDefaultControllerError(e,r){var t=e._controlledReadableStream;ResetQueue(e),ReadableStreamError(t,r)}function ReadableStreamDefaultControllerErrorIfNeeded(e,r){\"readable\"===e._controlledReadableStream._state&&ReadableStreamDefaultControllerError(e,r)}function ReadableStreamDefaultControllerGetDesiredSize(e){var r=e._controlledReadableStream._state;return\"errored\"===r?null:\"closed\"===r?0:e._strategyHWM-e._queueTotalSize}function ReadableStreamDefaultControllerHasBackpressure(e){return!0!==ReadableStreamDefaultControllerShouldCallPull(e)}function ReadableStreamDefaultControllerCanCloseOrEnqueue(e){var r=e._controlledReadableStream._state;return!1===e._closeRequested&&\"readable\"===r}function SetUpReadableStreamDefaultController(e,r,t,a,l,o,n){r._controlledReadableStream=e,r._queue=void 0,r._queueTotalSize=void 0,ResetQueue(r),r._started=!1,r._closeRequested=!1,r._pullAgain=!1,r._pulling=!1,r._strategySizeAlgorithm=n,r._strategyHWM=o,r._pullAlgorithm=a,r._cancelAlgorithm=l,e._readableStreamController=r;var i=t();Promise.resolve(i).then(function(){r._started=!0,ReadableStreamDefaultControllerCallPullIfNeeded(r)},function(e){ReadableStreamDefaultControllerErrorIfNeeded(r,e)}).catch(rethrowAssertionErrorRejection)}function SetUpReadableStreamDefaultControllerFromUnderlyingSource(e,r,t,a){var l=Object.create(ReadableStreamDefaultController.prototype),o=CreateAlgorithmFromUnderlyingMethod(r,\"pull\",0,[l]),n=CreateAlgorithmFromUnderlyingMethod(r,\"cancel\",1,[]);SetUpReadableStreamDefaultController(e,l,function startAlgorithm(){return InvokeOrNoop(r,\"start\",[l])},o,n,t,a)}function IsReadableByteStreamController(e){return!!typeIsObject(e)&&!!Object.prototype.hasOwnProperty.call(e,\"_controlledReadableByteStream\")}function IsReadableStreamBYOBRequest(e){return!!typeIsObject(e)&&!!Object.prototype.hasOwnProperty.call(e,\"_associatedReadableByteStreamController\")}function ReadableByteStreamControllerCallPullIfNeeded(e){!1!==ReadableByteStreamControllerShouldCallPull(e)&&(!0!==e._pulling?(e._pulling=!0,e._pullAlgorithm().then(function(){e._pulling=!1,!0===e._pullAgain&&(e._pullAgain=!1,ReadableByteStreamControllerCallPullIfNeeded(e))},function(r){\"readable\"===e._controlledReadableByteStream._state&&ReadableByteStreamControllerError(e,r)}).catch(rethrowAssertionErrorRejection)):e._pullAgain=!0)}function ReadableByteStreamControllerClearPendingPullIntos(e){ReadableByteStreamControllerInvalidateBYOBRequest(e),e._pendingPullIntos=[]}function ReadableByteStreamControllerCommitPullIntoDescriptor(e,r){var t=!1;\"closed\"===e._state&&(t=!0);var a=ReadableByteStreamControllerConvertPullIntoDescriptor(r);\"default\"===r.readerType?ReadableStreamFulfillReadRequest(e,a,t):ReadableStreamFulfillReadIntoRequest(e,a,t)}function ReadableByteStreamControllerConvertPullIntoDescriptor(e){var r=e.bytesFilled,t=e.elementSize;return new e.ctor(e.buffer,e.byteOffset,r/t)}function ReadableByteStreamControllerEnqueueChunkToQueue(e,r,t,a){e._queue.push({buffer:r,byteOffset:t,byteLength:a}),e._queueTotalSize+=a}function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(e,r){var t=r.elementSize,a=r.bytesFilled-r.bytesFilled%t,l=Math.min(e._queueTotalSize,r.byteLength-r.bytesFilled),o=r.bytesFilled+l,n=o-o%t,i=l,d=!1;n>a&&(i=n-r.bytesFilled,d=!0);for(var s=e._queue;i>0;){var u=s[0],c=Math.min(i,u.byteLength),b=r.byteOffset+r.bytesFilled;ArrayBufferCopy(r.buffer,b,u.buffer,u.byteOffset,c),u.byteLength===c?s.shift():(u.byteOffset+=c,u.byteLength-=c),e._queueTotalSize-=c,ReadableByteStreamControllerFillHeadPullIntoDescriptor(e,c,r),i-=c}return d}function ReadableByteStreamControllerFillHeadPullIntoDescriptor(e,r,t){ReadableByteStreamControllerInvalidateBYOBRequest(e),t.bytesFilled+=r}function ReadableByteStreamControllerHandleQueueDrain(e){0===e._queueTotalSize&&!0===e._closeRequested?ReadableStreamClose(e._controlledReadableByteStream):ReadableByteStreamControllerCallPullIfNeeded(e)}function ReadableByteStreamControllerInvalidateBYOBRequest(e){void 0!==e._byobRequest&&(e._byobRequest._associatedReadableByteStreamController=void 0,e._byobRequest._view=void 0,e._byobRequest=void 0)}function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e){for(;e._pendingPullIntos.length>0;){if(0===e._queueTotalSize)return;var r=e._pendingPullIntos[0];!0===ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(e,r)&&(ReadableByteStreamControllerShiftPendingPullInto(e),ReadableByteStreamControllerCommitPullIntoDescriptor(e._controlledReadableByteStream,r))}}function ReadableByteStreamControllerPullInto(e,r){var t=e._controlledReadableByteStream,a=1;r.constructor!==DataView&&(a=r.constructor.BYTES_PER_ELEMENT);var l=r.constructor,o={buffer:TransferArrayBuffer(r.buffer),byteOffset:r.byteOffset,byteLength:r.byteLength,bytesFilled:0,elementSize:a,ctor:l,readerType:\"byob\"};if(e._pendingPullIntos.length>0)return e._pendingPullIntos.push(o),ReadableStreamAddReadIntoRequest(t);if(\"closed\"===t._state){var n=new r.constructor(o.buffer,o.byteOffset,0);return Promise.resolve(CreateIterResultObject(n,!0))}if(e._queueTotalSize>0){if(!0===ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(e,o)){var i=ReadableByteStreamControllerConvertPullIntoDescriptor(o);return ReadableByteStreamControllerHandleQueueDrain(e),Promise.resolve(CreateIterResultObject(i,!1))}if(!0===e._closeRequested){var d=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");return ReadableByteStreamControllerError(e,d),Promise.reject(d)}}e._pendingPullIntos.push(o);var s=ReadableStreamAddReadIntoRequest(t);return ReadableByteStreamControllerCallPullIfNeeded(e),s}function ReadableByteStreamControllerRespondInClosedState(e,r){r.buffer=TransferArrayBuffer(r.buffer);var t=e._controlledReadableByteStream;if(!0===ReadableStreamHasBYOBReader(t))for(;ReadableStreamGetNumReadIntoRequests(t)>0;)ReadableByteStreamControllerCommitPullIntoDescriptor(t,ReadableByteStreamControllerShiftPendingPullInto(e))}function ReadableByteStreamControllerRespondInReadableState(e,r,t){if(t.bytesFilled+r>t.byteLength)throw new RangeError(\"bytesWritten out of range\");if(ReadableByteStreamControllerFillHeadPullIntoDescriptor(e,r,t),!(t.bytesFilled0){var l=t.byteOffset+t.bytesFilled,o=t.buffer.slice(l-a,l);ReadableByteStreamControllerEnqueueChunkToQueue(e,o,0,o.byteLength)}t.buffer=TransferArrayBuffer(t.buffer),t.bytesFilled-=a,ReadableByteStreamControllerCommitPullIntoDescriptor(e._controlledReadableByteStream,t),ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e)}}function ReadableByteStreamControllerRespondInternal(e,r){var t=e._pendingPullIntos[0];if(\"closed\"===e._controlledReadableByteStream._state){if(0!==r)throw new TypeError(\"bytesWritten must be 0 when calling respond() on a closed stream\");ReadableByteStreamControllerRespondInClosedState(e,t)}else ReadableByteStreamControllerRespondInReadableState(e,r,t)}function ReadableByteStreamControllerShiftPendingPullInto(e){var r=e._pendingPullIntos.shift();return ReadableByteStreamControllerInvalidateBYOBRequest(e),r}function ReadableByteStreamControllerShouldCallPull(e){var r=e._controlledReadableByteStream;return\"readable\"===r._state&&(!0!==e._closeRequested&&(!1!==e._started&&(!0===ReadableStreamHasDefaultReader(r)&&ReadableStreamGetNumReadRequests(r)>0||(!0===ReadableStreamHasBYOBReader(r)&&ReadableStreamGetNumReadIntoRequests(r)>0||ReadableByteStreamControllerGetDesiredSize(e)>0))))}function ReadableByteStreamControllerClose(e){var r=e._controlledReadableByteStream;if(e._queueTotalSize>0)e._closeRequested=!0;else{if(e._pendingPullIntos.length>0&&e._pendingPullIntos[0].bytesFilled>0){var t=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");throw ReadableByteStreamControllerError(e,t),t}ReadableStreamClose(r)}}function ReadableByteStreamControllerEnqueue(e,r){var t=e._controlledReadableByteStream,a=r.buffer,l=r.byteOffset,o=r.byteLength,n=TransferArrayBuffer(a);!0===ReadableStreamHasDefaultReader(t)?0===ReadableStreamGetNumReadRequests(t)?ReadableByteStreamControllerEnqueueChunkToQueue(e,n,l,o):ReadableStreamFulfillReadRequest(t,new Uint8Array(n,l,o),!1):!0===ReadableStreamHasBYOBReader(t)?(ReadableByteStreamControllerEnqueueChunkToQueue(e,n,l,o),ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e)):ReadableByteStreamControllerEnqueueChunkToQueue(e,n,l,o)}function ReadableByteStreamControllerError(e,r){var t=e._controlledReadableByteStream;ReadableByteStreamControllerClearPendingPullIntos(e),ResetQueue(e),ReadableStreamError(t,r)}function ReadableByteStreamControllerGetDesiredSize(e){var r=e._controlledReadableByteStream._state;return\"errored\"===r?null:\"closed\"===r?0:e._strategyHWM-e._queueTotalSize}function ReadableByteStreamControllerRespond(e,r){if(r=Number(r),!1===IsFiniteNonNegativeNumber(r))throw new RangeError(\"bytesWritten must be a finite\");ReadableByteStreamControllerRespondInternal(e,r)}function ReadableByteStreamControllerRespondWithNewView(e,r){var t=e._pendingPullIntos[0];if(t.byteOffset+t.bytesFilled!==r.byteOffset)throw new RangeError(\"The region specified by view does not match byobRequest\");if(t.byteLength!==r.byteLength)throw new RangeError(\"The buffer of view has different capacity than byobRequest\");t.buffer=r.buffer,ReadableByteStreamControllerRespondInternal(e,r.byteLength)}function SetUpReadableByteStreamController(e,r,t,a,l,o,n){r._controlledReadableByteStream=e,r._pullAgain=!1,r._pulling=!1,ReadableByteStreamControllerClearPendingPullIntos(r),r._queue=r._queueTotalSize=void 0,ResetQueue(r),r._closeRequested=!1,r._started=!1,r._strategyHWM=ValidateAndNormalizeHighWaterMark(o),r._pullAlgorithm=a,r._cancelAlgorithm=l,r._autoAllocateChunkSize=n,r._pendingPullIntos=[],e._readableStreamController=r;var i=t();Promise.resolve(i).then(function(){r._started=!0,ReadableByteStreamControllerCallPullIfNeeded(r)},function(t){\"readable\"===e._state&&ReadableByteStreamControllerError(r,t)}).catch(rethrowAssertionErrorRejection)}function SetUpReadableByteStreamControllerFromUnderlyingSource(e,r,t){var a=Object.create(ReadableByteStreamController.prototype),l=CreateAlgorithmFromUnderlyingMethod(r,\"pull\",0,[a]),o=CreateAlgorithmFromUnderlyingMethod(r,\"cancel\",1,[]),n=r.autoAllocateChunkSize;if(void 0!==n&&(!1===Number.isInteger(n)||n<=0))throw new RangeError(\"autoAllocateChunkSize must be a positive integer\");SetUpReadableByteStreamController(e,a,function startAlgorithm(){return InvokeOrNoop(r,\"start\",[a])},l,o,t,n)}function SetUpReadableStreamBYOBRequest(e,r,t){e._associatedReadableByteStreamController=r,e._view=t}function streamBrandCheckException(e){return new TypeError(\"ReadableStream.prototype.\"+e+\" can only be used on a ReadableStream\")}function readerLockException(e){return new TypeError(\"Cannot \"+e+\" a stream using a released reader\")}function defaultReaderBrandCheckException(e){return new TypeError(\"ReadableStreamDefaultReader.prototype.\"+e+\" can only be used on a ReadableStreamDefaultReader\")}function defaultReaderClosedPromiseInitialize(e){e._closedPromise=new Promise(function(r,t){e._closedPromise_resolve=r,e._closedPromise_reject=t})}function defaultReaderClosedPromiseInitializeAsRejected(e,r){e._closedPromise=Promise.reject(r),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}function defaultReaderClosedPromiseInitializeAsResolved(e){e._closedPromise=Promise.resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}function defaultReaderClosedPromiseReject(e,r){e._closedPromise_reject(r),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}function defaultReaderClosedPromiseResetToRejected(e,r){e._closedPromise=Promise.reject(r)}function defaultReaderClosedPromiseResolve(e){e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}function byobReaderBrandCheckException(e){return new TypeError(\"ReadableStreamBYOBReader.prototype.\"+e+\" can only be used on a ReadableStreamBYOBReader\")}function defaultControllerBrandCheckException(e){return new TypeError(\"ReadableStreamDefaultController.prototype.\"+e+\" can only be used on a ReadableStreamDefaultController\")}function byobRequestBrandCheckException(e){return new TypeError(\"ReadableStreamBYOBRequest.prototype.\"+e+\" can only be used on a ReadableStreamBYOBRequest\")}function byteStreamControllerBrandCheckException(e){return new TypeError(\"ReadableByteStreamController.prototype.\"+e+\" can only be used on a ReadableByteStreamController\")}function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(e){try{Promise.prototype.then.call(e,void 0,function(){})}catch(e){}}var _createClass=function(){function defineProperties(e,r){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=r.size,a=r.highWaterMark;_classCallCheck(this,ReadableStream),InitializeReadableStream(this);var l=e.type;if(\"bytes\"===String(l)){if(void 0===a&&(a=0),a=ValidateAndNormalizeHighWaterMark(a),void 0!==t)throw new RangeError(\"The strategy for a byte stream cannot have a size function\");SetUpReadableByteStreamControllerFromUnderlyingSource(this,e,a)}else{if(void 0!==l)throw new RangeError(\"Invalid type is specified\");void 0===a&&(a=1),SetUpReadableStreamDefaultControllerFromUnderlyingSource(this,e,a=ValidateAndNormalizeHighWaterMark(a),MakeSizeAlgorithmFromSizeFunction(t))}}return _createClass(ReadableStream,[{key:\"cancel\",value:function cancel(e){return!1===IsReadableStream(this)?Promise.reject(streamBrandCheckException(\"cancel\")):!0===IsReadableStreamLocked(this)?Promise.reject(new TypeError(\"Cannot cancel a stream that already has a reader\")):ReadableStreamCancel(this,e)}},{key:\"getReader\",value:function getReader(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).mode;if(!1===IsReadableStream(this))throw streamBrandCheckException(\"getReader\");if(void 0===e)return AcquireReadableStreamDefaultReader(this);if(\"byob\"===(e=String(e)))return AcquireReadableStreamBYOBReader(this);throw new RangeError(\"Invalid mode is specified\")}},{key:\"pipeThrough\",value:function pipeThrough(e,r){var t=e.writable,a=e.readable;if(void 0===t||void 0===a)throw new TypeError(\"readable and writable arguments must be defined\");return ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(this.pipeTo(t,r)),a}},{key:\"pipeTo\",value:function pipeTo(e){var r=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.preventClose,l=t.preventAbort,o=t.preventCancel;if(!1===IsReadableStream(this))return Promise.reject(streamBrandCheckException(\"pipeTo\"));if(!1===IsWritableStream(e))return Promise.reject(new TypeError(\"ReadableStream.prototype.pipeTo's first argument must be a WritableStream\"));if(a=Boolean(a),l=Boolean(l),o=Boolean(o),!0===IsReadableStreamLocked(this))return Promise.reject(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream\"));if(!0===IsWritableStreamLocked(e))return Promise.reject(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream\"));var n=AcquireReadableStreamDefaultReader(this),i=AcquireWritableStreamDefaultWriter(e),d=!1,s=Promise.resolve();return new Promise(function(t,u){function pipeLoop(){return!0===d?Promise.resolve():i._readyPromise.then(function(){return ReadableStreamDefaultReaderRead(n).then(function(e){var r=e.value;!0!==e.done&&(s=WritableStreamDefaultWriterWrite(i,r).catch(function(){}))})}).then(pipeLoop)}function waitForWritesToFinish(){var e=s;return s.then(function(){return e!==s?waitForWritesToFinish():void 0})}function isOrBecomesErrored(e,r,t){\"errored\"===e._state?t(e._storedError):r.catch(t).catch(rethrowAssertionErrorRejection)}function shutdownWithAction(r,t,a){function doTheRest(){r().then(function(){return finalize(t,a)},function(e){return finalize(!0,e)}).catch(rethrowAssertionErrorRejection)}!0!==d&&(d=!0,\"writable\"===e._state&&!1===WritableStreamCloseQueuedOrInFlight(e)?waitForWritesToFinish().then(doTheRest):doTheRest())}function shutdown(r,t){!0!==d&&(d=!0,\"writable\"===e._state&&!1===WritableStreamCloseQueuedOrInFlight(e)?waitForWritesToFinish().then(function(){return finalize(r,t)}).catch(rethrowAssertionErrorRejection):finalize(r,t))}function finalize(e,r){WritableStreamDefaultWriterRelease(i),ReadableStreamReaderGenericRelease(n),e?u(r):t(void 0)}if(isOrBecomesErrored(r,n._closedPromise,function(r){!1===l?shutdownWithAction(function(){return WritableStreamAbort(e,r)},!0,r):shutdown(!0,r)}),isOrBecomesErrored(e,i._closedPromise,function(e){!1===o?shutdownWithAction(function(){return ReadableStreamCancel(r,e)},!0,e):shutdown(!0,e)}),function isOrBecomesClosed(e,r,t){\"closed\"===e._state?t():r.then(t).catch(rethrowAssertionErrorRejection)}(r,n._closedPromise,function(){!1===a?shutdownWithAction(function(){return WritableStreamDefaultWriterCloseWithErrorPropagation(i)}):shutdown()}),!0===WritableStreamCloseQueuedOrInFlight(e)||\"closed\"===e._state){var c=new TypeError(\"the destination writable stream closed before all data could be piped to it\");!1===o?shutdownWithAction(function(){return ReadableStreamCancel(r,c)},!0,c):shutdown(!0,c)}pipeLoop().catch(function(e){s=Promise.resolve(),rethrowAssertionErrorRejection(e)})})}},{key:\"tee\",value:function tee(){if(!1===IsReadableStream(this))throw streamBrandCheckException(\"tee\");var e=ReadableStreamTee(this,!1);return createArrayFromList(e)}},{key:\"locked\",get:function get(){if(!1===IsReadableStream(this))throw streamBrandCheckException(\"locked\");return IsReadableStreamLocked(this)}}]),ReadableStream}();module.exports={CreateReadableByteStream:CreateReadableByteStream,CreateReadableStream:CreateReadableStream,ReadableStream:ReadableStream,IsReadableStreamDisturbed:IsReadableStreamDisturbed,ReadableStreamDefaultControllerClose:ReadableStreamDefaultControllerClose,ReadableStreamDefaultControllerEnqueue:ReadableStreamDefaultControllerEnqueue,ReadableStreamDefaultControllerError:ReadableStreamDefaultControllerError,ReadableStreamDefaultControllerGetDesiredSize:ReadableStreamDefaultControllerGetDesiredSize,ReadableStreamDefaultControllerHasBackpressure:ReadableStreamDefaultControllerHasBackpressure,ReadableStreamDefaultControllerCanCloseOrEnqueue:ReadableStreamDefaultControllerCanCloseOrEnqueue};var ReadableStreamDefaultReader=function(){function ReadableStreamDefaultReader(e){if(_classCallCheck(this,ReadableStreamDefaultReader),!1===IsReadableStream(e))throw new TypeError(\"ReadableStreamDefaultReader can only be constructed with a ReadableStream instance\");if(!0===IsReadableStreamLocked(e))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");ReadableStreamReaderGenericInitialize(this,e),this._readRequests=[]}return _createClass(ReadableStreamDefaultReader,[{key:\"cancel\",value:function cancel(e){return!1===IsReadableStreamDefaultReader(this)?Promise.reject(defaultReaderBrandCheckException(\"cancel\")):void 0===this._ownerReadableStream?Promise.reject(readerLockException(\"cancel\")):ReadableStreamReaderGenericCancel(this,e)}},{key:\"read\",value:function read(){return!1===IsReadableStreamDefaultReader(this)?Promise.reject(defaultReaderBrandCheckException(\"read\")):void 0===this._ownerReadableStream?Promise.reject(readerLockException(\"read from\")):ReadableStreamDefaultReaderRead(this)}},{key:\"releaseLock\",value:function releaseLock(){if(!1===IsReadableStreamDefaultReader(this))throw defaultReaderBrandCheckException(\"releaseLock\");if(void 0!==this._ownerReadableStream){if(this._readRequests.length>0)throw new TypeError(\"Tried to release a reader lock when that reader has pending read() calls un-settled\");ReadableStreamReaderGenericRelease(this)}}},{key:\"closed\",get:function get(){return!1===IsReadableStreamDefaultReader(this)?Promise.reject(defaultReaderBrandCheckException(\"closed\")):this._closedPromise}}]),ReadableStreamDefaultReader}(),ReadableStreamBYOBReader=function(){function ReadableStreamBYOBReader(e){if(_classCallCheck(this,ReadableStreamBYOBReader),!IsReadableStream(e))throw new TypeError(\"ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a byte source\");if(!1===IsReadableByteStreamController(e._readableStreamController))throw new TypeError(\"Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source\");if(IsReadableStreamLocked(e))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");ReadableStreamReaderGenericInitialize(this,e),this._readIntoRequests=[]}return _createClass(ReadableStreamBYOBReader,[{key:\"cancel\",value:function cancel(e){return IsReadableStreamBYOBReader(this)?void 0===this._ownerReadableStream?Promise.reject(readerLockException(\"cancel\")):ReadableStreamReaderGenericCancel(this,e):Promise.reject(byobReaderBrandCheckException(\"cancel\"))}},{key:\"read\",value:function read(e){return IsReadableStreamBYOBReader(this)?void 0===this._ownerReadableStream?Promise.reject(readerLockException(\"read from\")):ArrayBuffer.isView(e)?!0===IsDetachedBuffer(e.buffer)?Promise.reject(new TypeError(\"Cannot read into a view onto a detached ArrayBuffer\")):0===e.byteLength?Promise.reject(new TypeError(\"view must have non-zero byteLength\")):ReadableStreamBYOBReaderRead(this,e):Promise.reject(new TypeError(\"view must be an array buffer view\")):Promise.reject(byobReaderBrandCheckException(\"read\"))}},{key:\"releaseLock\",value:function releaseLock(){if(!IsReadableStreamBYOBReader(this))throw byobReaderBrandCheckException(\"releaseLock\");if(void 0!==this._ownerReadableStream){if(this._readIntoRequests.length>0)throw new TypeError(\"Tried to release a reader lock when that reader has pending read() calls un-settled\");ReadableStreamReaderGenericRelease(this)}}},{key:\"closed\",get:function get(){return IsReadableStreamBYOBReader(this)?this._closedPromise:Promise.reject(byobReaderBrandCheckException(\"closed\"))}}]),ReadableStreamBYOBReader}(),ReadableStreamDefaultController=function(){function ReadableStreamDefaultController(){throw _classCallCheck(this,ReadableStreamDefaultController),new TypeError}return _createClass(ReadableStreamDefaultController,[{key:\"close\",value:function close(){if(!1===IsReadableStreamDefaultController(this))throw defaultControllerBrandCheckException(\"close\");if(!1===ReadableStreamDefaultControllerCanCloseOrEnqueue(this))throw new TypeError(\"The stream is not in a state that permits close\");ReadableStreamDefaultControllerClose(this)}},{key:\"enqueue\",value:function enqueue(e){if(!1===IsReadableStreamDefaultController(this))throw defaultControllerBrandCheckException(\"enqueue\");if(!1===ReadableStreamDefaultControllerCanCloseOrEnqueue(this))throw new TypeError(\"The stream is not in a state that permits enqueue\");return ReadableStreamDefaultControllerEnqueue(this,e)}},{key:\"error\",value:function error(e){if(!1===IsReadableStreamDefaultController(this))throw defaultControllerBrandCheckException(\"error\");var r=this._controlledReadableStream;if(\"readable\"!==r._state)throw new TypeError(\"The stream is \"+r._state+\" and so cannot be errored\");ReadableStreamDefaultControllerError(this,e)}},{key:CancelSteps,value:function value(e){return ResetQueue(this),this._cancelAlgorithm(e)}},{key:PullSteps,value:function value(){var e=this._controlledReadableStream;if(this._queue.length>0){var r=DequeueValue(this);return!0===this._closeRequested&&0===this._queue.length?ReadableStreamClose(e):ReadableStreamDefaultControllerCallPullIfNeeded(this),Promise.resolve(CreateIterResultObject(r,!1))}var t=ReadableStreamAddReadRequest(e);return ReadableStreamDefaultControllerCallPullIfNeeded(this),t}},{key:\"desiredSize\",get:function get(){if(!1===IsReadableStreamDefaultController(this))throw defaultControllerBrandCheckException(\"desiredSize\");return ReadableStreamDefaultControllerGetDesiredSize(this)}}]),ReadableStreamDefaultController}(),ReadableStreamBYOBRequest=function(){function ReadableStreamBYOBRequest(){throw _classCallCheck(this,ReadableStreamBYOBRequest),new TypeError(\"ReadableStreamBYOBRequest cannot be used directly\")}return _createClass(ReadableStreamBYOBRequest,[{key:\"respond\",value:function respond(e){if(!1===IsReadableStreamBYOBRequest(this))throw byobRequestBrandCheckException(\"respond\");if(void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");if(!0===IsDetachedBuffer(this._view.buffer))throw new TypeError(\"The BYOB request's buffer has been detached and so cannot be used as a response\");ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController,e)}},{key:\"respondWithNewView\",value:function respondWithNewView(e){if(!1===IsReadableStreamBYOBRequest(this))throw byobRequestBrandCheckException(\"respond\");if(void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");if(!ArrayBuffer.isView(e))throw new TypeError(\"You can only respond with array buffer views\");if(!0===IsDetachedBuffer(e.buffer))throw new TypeError(\"The supplied view's buffer has been detached and so cannot be used as a response\");ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController,e)}},{key:\"view\",get:function get(){if(!1===IsReadableStreamBYOBRequest(this))throw byobRequestBrandCheckException(\"view\");return this._view}}]),ReadableStreamBYOBRequest}(),ReadableByteStreamController=function(){function ReadableByteStreamController(){throw _classCallCheck(this,ReadableByteStreamController),new TypeError(\"ReadableByteStreamController constructor cannot be used directly\")}return _createClass(ReadableByteStreamController,[{key:\"close\",value:function close(){if(!1===IsReadableByteStreamController(this))throw byteStreamControllerBrandCheckException(\"close\");if(!0===this._closeRequested)throw new TypeError(\"The stream has already been closed; do not close it again!\");var e=this._controlledReadableByteStream._state;if(\"readable\"!==e)throw new TypeError(\"The stream (in \"+e+\" state) is not in the readable state and cannot be closed\");ReadableByteStreamControllerClose(this)}},{key:\"enqueue\",value:function enqueue(e){if(!1===IsReadableByteStreamController(this))throw byteStreamControllerBrandCheckException(\"enqueue\");if(!0===this._closeRequested)throw new TypeError(\"stream is closed or draining\");var r=this._controlledReadableByteStream._state;if(\"readable\"!==r)throw new TypeError(\"The stream (in \"+r+\" state) is not in the readable state and cannot be enqueued to\");if(!ArrayBuffer.isView(e))throw new TypeError(\"You can only enqueue array buffer views when using a ReadableByteStreamController\");if(!0===IsDetachedBuffer(e.buffer))throw new TypeError(\"Cannot enqueue a view onto a detached ArrayBuffer\");ReadableByteStreamControllerEnqueue(this,e)}},{key:\"error\",value:function error(e){if(!1===IsReadableByteStreamController(this))throw byteStreamControllerBrandCheckException(\"error\");var r=this._controlledReadableByteStream;if(\"readable\"!==r._state)throw new TypeError(\"The stream is \"+r._state+\" and so cannot be errored\");ReadableByteStreamControllerError(this,e)}},{key:CancelSteps,value:function value(e){return this._pendingPullIntos.length>0&&(this._pendingPullIntos[0].bytesFilled=0),ResetQueue(this),this._cancelAlgorithm(e)}},{key:PullSteps,value:function value(){var e=this._controlledReadableByteStream;if(this._queueTotalSize>0){var r=this._queue.shift();this._queueTotalSize-=r.byteLength,ReadableByteStreamControllerHandleQueueDrain(this);var t=void 0;try{t=new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}catch(e){return Promise.reject(e)}return Promise.resolve(CreateIterResultObject(t,!1))}var a=this._autoAllocateChunkSize;if(void 0!==a){var l=void 0;try{l=new ArrayBuffer(a)}catch(e){return Promise.reject(e)}var o={buffer:l,byteOffset:0,byteLength:a,bytesFilled:0,elementSize:1,ctor:Uint8Array,readerType:\"default\"};this._pendingPullIntos.push(o)}var n=ReadableStreamAddReadRequest(e);return ReadableByteStreamControllerCallPullIfNeeded(this),n}},{key:\"byobRequest\",get:function get(){if(!1===IsReadableByteStreamController(this))throw byteStreamControllerBrandCheckException(\"byobRequest\");if(void 0===this._byobRequest&&this._pendingPullIntos.length>0){var e=this._pendingPullIntos[0],r=new Uint8Array(e.buffer,e.byteOffset+e.bytesFilled,e.byteLength-e.bytesFilled),t=Object.create(ReadableStreamBYOBRequest.prototype);SetUpReadableStreamBYOBRequest(t,this,r),this._byobRequest=t}return this._byobRequest}},{key:\"desiredSize\",get:function get(){if(!1===IsReadableByteStreamController(this))throw byteStreamControllerBrandCheckException(\"desiredSize\");return ReadableByteStreamControllerGetDesiredSize(this)}}]),ReadableByteStreamController}();\n\n},{\"./helpers.js\":10,\"./queue-with-sizes.js\":11,\"./utils.js\":14,\"./writable-stream.js\":15,\"better-assert\":16}],13:[function(_dereq_,module,exports){\n\"use strict\";function _classCallCheck(r,e){if(!(r instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function CreateTransformStream(r,e,t){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){return 1},n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:function(){return 1},i=Object.create(TransformStream.prototype),m=void 0;InitializeTransformStream(i,new Promise(function(r){m=r}),a,o,n,l),SetUpTransformStreamDefaultController(i,Object.create(TransformStreamDefaultController.prototype),e,t);var s=r();return m(s),i}function InitializeTransformStream(r,e,t,a,o,n){function startAlgorithm(){return e}r._writable=CreateWritableStream(startAlgorithm,function writeAlgorithm(e){return TransformStreamDefaultSinkWriteAlgorithm(r,e)},function closeAlgorithm(){return TransformStreamDefaultSinkCloseAlgorithm(r)},function abortAlgorithm(){return TransformStreamDefaultSinkAbortAlgorithm(r)},t,a),r._readable=CreateReadableStream(startAlgorithm,function pullAlgorithm(){return TransformStreamDefaultSourcePullAlgorithm(r)},function cancelAlgorithm(e){return TransformStreamErrorWritableAndUnblockWrite(r,e),Promise.resolve()},o,n),r._backpressure=void 0,r._backpressureChangePromise=void 0,r._backpressureChangePromise_resolve=void 0,TransformStreamSetBackpressure(r,!0),r._transformStreamController=void 0}function IsTransformStream(r){return!!typeIsObject(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_transformStreamController\")}function TransformStreamError(r,e){verbose(\"TransformStreamError()\"),\"readable\"===r._readable._state&&ReadableStreamDefaultControllerError(r._readable._readableStreamController,e),TransformStreamErrorWritableAndUnblockWrite(r,e)}function TransformStreamErrorWritableAndUnblockWrite(r,e){WritableStreamDefaultControllerErrorIfNeeded(r._writable._writableStreamController,e),!0===r._backpressure&&TransformStreamSetBackpressure(r,!1)}function TransformStreamSetBackpressure(r,e){verbose(\"TransformStreamSetBackpressure() [backpressure = \"+e+\"]\"),void 0!==r._backpressureChangePromise&&r._backpressureChangePromise_resolve(),r._backpressureChangePromise=new Promise(function(e){r._backpressureChangePromise_resolve=e}),r._backpressure=e}function IsTransformStreamDefaultController(r){return!!typeIsObject(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_controlledTransformStream\")}function SetUpTransformStreamDefaultController(r,e,t,a){e._controlledTransformStream=r,r._transformStreamController=e,e._transformAlgorithm=t,e._flushAlgorithm=a}function SetUpTransformStreamDefaultControllerFromTransformer(r,e){var t=Object.create(TransformStreamDefaultController.prototype),a=function transformAlgorithm(r){try{return TransformStreamDefaultControllerEnqueue(t,r),Promise.resolve()}catch(r){return Promise.reject(r)}},o=e.transform;if(void 0!==o){if(\"function\"!=typeof o)throw new TypeError(\"transform is not a method\");a=function transformAlgorithm(a){return PromiseCall(o,e,[a,t]).catch(function(e){throw TransformStreamError(r,e),e})}}var n=CreateAlgorithmFromUnderlyingMethod(e,\"flush\",0,[t]);SetUpTransformStreamDefaultController(r,t,a,n)}function TransformStreamDefaultControllerEnqueue(r,e){verbose(\"TransformStreamDefaultControllerEnqueue()\");var t=r._controlledTransformStream,a=t._readable._readableStreamController;if(!1===ReadableStreamDefaultControllerCanCloseOrEnqueue(a))throw new TypeError(\"Readable side is not in a state that permits enqueue\");try{ReadableStreamDefaultControllerEnqueue(a,e)}catch(r){throw TransformStreamErrorWritableAndUnblockWrite(t,r),t._readable._storedError}ReadableStreamDefaultControllerHasBackpressure(a)!==t._backpressure&&TransformStreamSetBackpressure(t,!0)}function TransformStreamDefaultControllerError(r,e){TransformStreamError(r._controlledTransformStream,e)}function TransformStreamDefaultControllerTerminate(r){verbose(\"TransformStreamDefaultControllerTerminate()\");var e=r._controlledTransformStream,t=e._readable._readableStreamController;!0===ReadableStreamDefaultControllerCanCloseOrEnqueue(t)&&ReadableStreamDefaultControllerClose(t),TransformStreamErrorWritableAndUnblockWrite(e,new TypeError(\"TransformStream terminated\"))}function TransformStreamDefaultSinkWriteAlgorithm(r,e){verbose(\"TransformStreamDefaultSinkWriteAlgorithm()\");var t=r._transformStreamController;return!0===r._backpressure?r._backpressureChangePromise.then(function(){var a=r._writable;if(\"erroring\"===a._state)throw a._storedError;return t._transformAlgorithm(e)}):t._transformAlgorithm(e)}function TransformStreamDefaultSinkAbortAlgorithm(r){return TransformStreamError(r,new TypeError(\"Writable side aborted\")),Promise.resolve()}function TransformStreamDefaultSinkCloseAlgorithm(r){verbose(\"TransformStreamDefaultSinkCloseAlgorithm()\");var e=r._readable;return r._transformStreamController._flushAlgorithm().then(function(){if(\"errored\"===e._state)throw e._storedError;var r=e._readableStreamController;!0===ReadableStreamDefaultControllerCanCloseOrEnqueue(r)&&ReadableStreamDefaultControllerClose(r)}).catch(function(t){throw TransformStreamError(r,t),e._storedError})}function TransformStreamDefaultSourcePullAlgorithm(r){return verbose(\"TransformStreamDefaultSourcePullAlgorithm()\"),TransformStreamSetBackpressure(r,!1),r._backpressureChangePromise}function defaultControllerBrandCheckException(r){return new TypeError(\"TransformStreamDefaultController.prototype.\"+r+\" can only be used on a TransformStreamDefaultController\")}function streamBrandCheckException(r){return new TypeError(\"TransformStream.prototype.\"+r+\" can only be used on a TransformStream\")}var _createClass=function(){function defineProperties(r,e){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(_classCallCheck(this,TransformStream),void 0!==r.readableType)throw new RangeError(\"Invalid readable type specified\");if(void 0!==r.writableType)throw new RangeError(\"Invalid writable type specified\");var a=e.size,o=MakeSizeAlgorithmFromSizeFunction(a),n=e.highWaterMark;void 0===n&&(n=1),n=ValidateAndNormalizeHighWaterMark(n);var l=t.size,i=MakeSizeAlgorithmFromSizeFunction(l),m=t.highWaterMark;void 0===m&&(m=0),m=ValidateAndNormalizeHighWaterMark(m);var s=void 0;InitializeTransformStream(this,new Promise(function(r){s=r}),n,o,m,i),SetUpTransformStreamDefaultControllerFromTransformer(this,r);var u=InvokeOrNoop(r,\"start\",[this._transformStreamController]);s(u)}return _createClass(TransformStream,[{key:\"readable\",get:function get(){if(!1===IsTransformStream(this))throw streamBrandCheckException(\"readable\");return this._readable}},{key:\"writable\",get:function get(){if(!1===IsTransformStream(this))throw streamBrandCheckException(\"writable\");return this._writable}}]),TransformStream}(),TransformStreamDefaultController=function(){function TransformStreamDefaultController(){throw _classCallCheck(this,TransformStreamDefaultController),new TypeError(\"TransformStreamDefaultController instances cannot be created directly\")}return _createClass(TransformStreamDefaultController,[{key:\"enqueue\",value:function enqueue(r){if(!1===IsTransformStreamDefaultController(this))throw defaultControllerBrandCheckException(\"enqueue\");TransformStreamDefaultControllerEnqueue(this,r)}},{key:\"error\",value:function error(r){if(!1===IsTransformStreamDefaultController(this))throw defaultControllerBrandCheckException(\"error\");TransformStreamDefaultControllerError(this,r)}},{key:\"terminate\",value:function terminate(){if(!1===IsTransformStreamDefaultController(this))throw defaultControllerBrandCheckException(\"terminate\");TransformStreamDefaultControllerTerminate(this)}},{key:\"desiredSize\",get:function get(){if(!1===IsTransformStreamDefaultController(this))throw defaultControllerBrandCheckException(\"desiredSize\");var r=this._controlledTransformStream._readable._readableStreamController;return ReadableStreamDefaultControllerGetDesiredSize(r)}}]),TransformStreamDefaultController}();module.exports={CreateTransformStream:CreateTransformStream,TransformStream:TransformStream};\n\n},{\"./helpers.js\":10,\"./readable-stream.js\":12,\"./writable-stream.js\":15,\"better-assert\":16,\"debug\":18}],14:[function(_dereq_,module,exports){\n\"use strict\";var assert=_dereq_(\"better-assert\");exports.rethrowAssertionErrorRejection=function(r){r&&r.constructor===assert.AssertionError&&setTimeout(function(){throw r},0)};\n\n},{\"better-assert\":16}],15:[function(_dereq_,module,exports){\n\"use strict\";function _classCallCheck(e,r){if(!(e instanceof r))throw new TypeError(\"Cannot call a class as a function\")}function AcquireWritableStreamDefaultWriter(e){return new WritableStreamDefaultWriter(e)}function CreateWritableStream(e,r,t,i){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:function(){return 1},l=Object.create(WritableStream.prototype);return InitializeWritableStream(l),SetUpWritableStreamDefaultController(l,Object.create(WritableStreamDefaultController.prototype),e,r,t,i,a,o),l}function InitializeWritableStream(e){e._state=\"writable\",e._storedError=void 0,e._writer=void 0,e._writableStreamController=void 0,e._writeRequests=[],e._inFlightWriteRequest=void 0,e._closeRequest=void 0,e._inFlightCloseRequest=void 0,e._pendingAbortRequest=void 0,e._backpressure=!1}function IsWritableStream(e){return!!typeIsObject(e)&&!!Object.prototype.hasOwnProperty.call(e,\"_writableStreamController\")}function IsWritableStreamLocked(e){return void 0!==e._writer}function WritableStreamAbort(e,r){var t=e._state;if(\"closed\"===t)return Promise.resolve(void 0);if(\"errored\"===t)return Promise.reject(e._storedError);var i=new TypeError(\"Requested to abort\");if(void 0!==e._pendingAbortRequest)return Promise.reject(i);var a=!1;\"erroring\"===t&&(a=!0,r=void 0);var o=new Promise(function(t,i){e._pendingAbortRequest={_resolve:t,_reject:i,_reason:r,_wasAlreadyErroring:a}});return!1===a&&WritableStreamStartErroring(e,i),o}function WritableStreamAddWriteRequest(e){return new Promise(function(r,t){var i={_resolve:r,_reject:t};e._writeRequests.push(i)})}function WritableStreamDealWithRejection(e,r){verbose(\"WritableStreamDealWithRejection(stream, %o)\",r),\"writable\"!==e._state?WritableStreamFinishErroring(e):WritableStreamStartErroring(e,r)}function WritableStreamStartErroring(e,r){verbose(\"WritableStreamStartErroring(stream, %o)\",r);var t=e._writableStreamController;e._state=\"erroring\",e._storedError=r;var i=e._writer;void 0!==i&&WritableStreamDefaultWriterEnsureReadyPromiseRejected(i,r),!1===WritableStreamHasOperationMarkedInFlight(e)&&!0===t._started&&WritableStreamFinishErroring(e)}function WritableStreamFinishErroring(e){verbose(\"WritableStreamFinishErroring()\"),e._state=\"errored\",e._writableStreamController[ErrorSteps]();var r=e._storedError,t=!0,i=!1,a=void 0;try{for(var o,l=e._writeRequests[Symbol.iterator]();!(t=(o=l.next()).done);t=!0)o.value._reject(r)}catch(e){i=!0,a=e}finally{try{!t&&l.return&&l.return()}finally{if(i)throw a}}if(e._writeRequests=[],void 0!==e._pendingAbortRequest){var s=e._pendingAbortRequest;if(e._pendingAbortRequest=void 0,!0===s._wasAlreadyErroring)return s._reject(r),void WritableStreamRejectCloseAndClosedPromiseIfNeeded(e);e._writableStreamController[AbortSteps](s._reason).then(function(){s._resolve(),WritableStreamRejectCloseAndClosedPromiseIfNeeded(e)},function(r){s._reject(r),WritableStreamRejectCloseAndClosedPromiseIfNeeded(e)})}else WritableStreamRejectCloseAndClosedPromiseIfNeeded(e)}function WritableStreamFinishInFlightWrite(e){e._inFlightWriteRequest._resolve(void 0),e._inFlightWriteRequest=void 0}function WritableStreamFinishInFlightWriteWithError(e,r){e._inFlightWriteRequest._reject(r),e._inFlightWriteRequest=void 0,WritableStreamDealWithRejection(e,r)}function WritableStreamFinishInFlightClose(e){e._inFlightCloseRequest._resolve(void 0),e._inFlightCloseRequest=void 0,\"erroring\"===e._state&&(e._storedError=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._resolve(),e._pendingAbortRequest=void 0)),e._state=\"closed\";var r=e._writer;void 0!==r&&defaultWriterClosedPromiseResolve(r)}function WritableStreamFinishInFlightCloseWithError(e,r){e._inFlightCloseRequest._reject(r),e._inFlightCloseRequest=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._reject(r),e._pendingAbortRequest=void 0),WritableStreamDealWithRejection(e,r)}function WritableStreamCloseQueuedOrInFlight(e){return void 0!==e._closeRequest||void 0!==e._inFlightCloseRequest}function WritableStreamHasOperationMarkedInFlight(e){return void 0===e._inFlightWriteRequest&&void 0===e._inFlightCloseRequest?(verbose(\"WritableStreamHasOperationMarkedInFlight() is false\"),!1):(verbose(\"WritableStreamHasOperationMarkedInFlight() is true\"),!0)}function WritableStreamMarkCloseRequestInFlight(e){e._inFlightCloseRequest=e._closeRequest,e._closeRequest=void 0}function WritableStreamMarkFirstWriteRequestInFlight(e){e._inFlightWriteRequest=e._writeRequests.shift()}function WritableStreamRejectCloseAndClosedPromiseIfNeeded(e){verbose(\"WritableStreamRejectCloseAndClosedPromiseIfNeeded()\"),void 0!==e._closeRequest&&(e._closeRequest._reject(e._storedError),e._closeRequest=void 0);var r=e._writer;void 0!==r&&(defaultWriterClosedPromiseReject(r,e._storedError),r._closedPromise.catch(function(){}))}function WritableStreamUpdateBackpressure(e,r){var t=e._writer;void 0!==t&&r!==e._backpressure&&(!0===r?defaultWriterReadyPromiseReset(t):defaultWriterReadyPromiseResolve(t)),e._backpressure=r}function IsWritableStreamDefaultWriter(e){return!!typeIsObject(e)&&!!Object.prototype.hasOwnProperty.call(e,\"_ownerWritableStream\")}function WritableStreamDefaultWriterAbort(e,r){return WritableStreamAbort(e._ownerWritableStream,r)}function WritableStreamDefaultWriterClose(e){var r=e._ownerWritableStream,t=r._state;if(\"closed\"===t||\"errored\"===t)return Promise.reject(new TypeError(\"The stream (in \"+t+\" state) is not in the writable state and cannot be closed\"));var i=new Promise(function(e,t){var i={_resolve:e,_reject:t};r._closeRequest=i});return!0===r._backpressure&&\"writable\"===t&&defaultWriterReadyPromiseResolve(e),WritableStreamDefaultControllerClose(r._writableStreamController),i}function WritableStreamDefaultWriterCloseWithErrorPropagation(e){var r=e._ownerWritableStream,t=r._state;return!0===WritableStreamCloseQueuedOrInFlight(r)||\"closed\"===t?Promise.resolve():\"errored\"===t?Promise.reject(r._storedError):WritableStreamDefaultWriterClose(e)}function WritableStreamDefaultWriterEnsureClosedPromiseRejected(e,r){\"pending\"===e._closedPromiseState?defaultWriterClosedPromiseReject(e,r):defaultWriterClosedPromiseResetToRejected(e,r),e._closedPromise.catch(function(){})}function WritableStreamDefaultWriterEnsureReadyPromiseRejected(e,r){verbose(\"WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, %o)\",r),\"pending\"===e._readyPromiseState?defaultWriterReadyPromiseReject(e,r):defaultWriterReadyPromiseResetToRejected(e,r),e._readyPromise.catch(function(){})}function WritableStreamDefaultWriterGetDesiredSize(e){var r=e._ownerWritableStream,t=r._state;return\"errored\"===t||\"erroring\"===t?null:\"closed\"===t?0:WritableStreamDefaultControllerGetDesiredSize(r._writableStreamController)}function WritableStreamDefaultWriterRelease(e){var r=e._ownerWritableStream,t=new TypeError(\"Writer was released and can no longer be used to monitor the stream's closedness\");WritableStreamDefaultWriterEnsureReadyPromiseRejected(e,t),WritableStreamDefaultWriterEnsureClosedPromiseRejected(e,t),r._writer=void 0,e._ownerWritableStream=void 0}function WritableStreamDefaultWriterWrite(e,r){var t=e._ownerWritableStream,i=t._writableStreamController,a=WritableStreamDefaultControllerGetChunkSize(i,r);if(t!==e._ownerWritableStream)return Promise.reject(defaultWriterLockException(\"write to\"));var o=t._state;if(\"errored\"===o)return Promise.reject(t._storedError);if(!0===WritableStreamCloseQueuedOrInFlight(t)||\"closed\"===o)return Promise.reject(new TypeError(\"The stream is closing or closed and cannot be written to\"));if(\"erroring\"===o)return Promise.reject(t._storedError);var l=WritableStreamAddWriteRequest(t);return WritableStreamDefaultControllerWrite(i,r,a),l}function IsWritableStreamDefaultController(e){return!!typeIsObject(e)&&!!Object.prototype.hasOwnProperty.call(e,\"_controlledWritableStream\")}function SetUpWritableStreamDefaultController(e,r,t,i,a,o,l,s){r._controlledWritableStream=e,e._writableStreamController=r,r._queue=void 0,r._queueTotalSize=void 0,ResetQueue(r),r._started=!1,r._strategySizeAlgorithm=s,r._strategyHWM=l,r._writeAlgorithm=i,r._closeAlgorithm=a,r._abortAlgorithm=o;var n=WritableStreamDefaultControllerGetBackpressure(r);WritableStreamUpdateBackpressure(e,n);var u=t();Promise.resolve(u).then(function(){r._started=!0,WritableStreamDefaultControllerAdvanceQueueIfNeeded(r)},function(t){r._started=!0,WritableStreamDealWithRejection(e,t)}).catch(rethrowAssertionErrorRejection)}function SetUpWritableStreamDefaultControllerFromUnderlyingSink(e,r,t,i){var a=Object.create(WritableStreamDefaultController.prototype),o=CreateAlgorithmFromUnderlyingMethod(r,\"write\",1,[a]),l=CreateAlgorithmFromUnderlyingMethod(r,\"close\",0,[]),s=CreateAlgorithmFromUnderlyingMethod(r,\"abort\",1,[]);SetUpWritableStreamDefaultController(e,a,function startAlgorithm(){return InvokeOrNoop(r,\"start\",[a])},o,l,s,t,i)}function WritableStreamDefaultControllerClose(e){EnqueueValueWithSize(e,\"close\",0),WritableStreamDefaultControllerAdvanceQueueIfNeeded(e)}function WritableStreamDefaultControllerGetChunkSize(e,r){try{return e._strategySizeAlgorithm(r)}catch(r){return WritableStreamDefaultControllerErrorIfNeeded(e,r),1}}function WritableStreamDefaultControllerGetDesiredSize(e){return e._strategyHWM-e._queueTotalSize}function WritableStreamDefaultControllerWrite(e,r,t){var i={chunk:r};try{EnqueueValueWithSize(e,i,t)}catch(r){return void WritableStreamDefaultControllerErrorIfNeeded(e,r)}var a=e._controlledWritableStream;!1===WritableStreamCloseQueuedOrInFlight(a)&&\"writable\"===a._state&&WritableStreamUpdateBackpressure(a,WritableStreamDefaultControllerGetBackpressure(e)),WritableStreamDefaultControllerAdvanceQueueIfNeeded(e)}function WritableStreamDefaultControllerAdvanceQueueIfNeeded(e){verbose(\"WritableStreamDefaultControllerAdvanceQueueIfNeeded()\");var r=e._controlledWritableStream;if(!1!==e._started&&void 0===r._inFlightWriteRequest){var t=r._state;if(\"closed\"!==t&&\"errored\"!==t)if(\"erroring\"!==t){if(0!==e._queue.length){var i=PeekQueueValue(e);\"close\"===i?WritableStreamDefaultControllerProcessClose(e):WritableStreamDefaultControllerProcessWrite(e,i.chunk)}}else WritableStreamFinishErroring(r)}}function WritableStreamDefaultControllerErrorIfNeeded(e,r){\"writable\"===e._controlledWritableStream._state&&WritableStreamDefaultControllerError(e,r)}function WritableStreamDefaultControllerProcessClose(e){var r=e._controlledWritableStream;WritableStreamMarkCloseRequestInFlight(r),DequeueValue(e),e._closeAlgorithm().then(function(){WritableStreamFinishInFlightClose(r)},function(e){WritableStreamFinishInFlightCloseWithError(r,e)}).catch(rethrowAssertionErrorRejection)}function WritableStreamDefaultControllerProcessWrite(e,r){var t=e._controlledWritableStream;WritableStreamMarkFirstWriteRequestInFlight(t),e._writeAlgorithm(r).then(function(){WritableStreamFinishInFlightWrite(t);var r=t._state;if(DequeueValue(e),!1===WritableStreamCloseQueuedOrInFlight(t)&&\"writable\"===r){var i=WritableStreamDefaultControllerGetBackpressure(e);WritableStreamUpdateBackpressure(t,i)}WritableStreamDefaultControllerAdvanceQueueIfNeeded(e)},function(e){WritableStreamFinishInFlightWriteWithError(t,e)}).catch(rethrowAssertionErrorRejection)}function WritableStreamDefaultControllerGetBackpressure(e){return WritableStreamDefaultControllerGetDesiredSize(e)<=0}function WritableStreamDefaultControllerError(e,r){WritableStreamStartErroring(e._controlledWritableStream,r)}function streamBrandCheckException(e){return new TypeError(\"WritableStream.prototype.\"+e+\" can only be used on a WritableStream\")}function defaultWriterBrandCheckException(e){return new TypeError(\"WritableStreamDefaultWriter.prototype.\"+e+\" can only be used on a WritableStreamDefaultWriter\")}function defaultWriterLockException(e){return new TypeError(\"Cannot \"+e+\" a stream using a released writer\")}function defaultWriterClosedPromiseInitialize(e){e._closedPromise=new Promise(function(r,t){e._closedPromise_resolve=r,e._closedPromise_reject=t,e._closedPromiseState=\"pending\"})}function defaultWriterClosedPromiseInitializeAsRejected(e,r){e._closedPromise=Promise.reject(r),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"rejected\"}function defaultWriterClosedPromiseInitializeAsResolved(e){e._closedPromise=Promise.resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"resolved\"}function defaultWriterClosedPromiseReject(e,r){e._closedPromise_reject(r),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"rejected\"}function defaultWriterClosedPromiseResetToRejected(e,r){e._closedPromise=Promise.reject(r),e._closedPromiseState=\"rejected\"}function defaultWriterClosedPromiseResolve(e){e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"resolved\"}function defaultWriterReadyPromiseInitialize(e){verbose(\"defaultWriterReadyPromiseInitialize()\"),e._readyPromise=new Promise(function(r,t){e._readyPromise_resolve=r,e._readyPromise_reject=t}),e._readyPromiseState=\"pending\"}function defaultWriterReadyPromiseInitializeAsRejected(e,r){verbose(\"defaultWriterReadyPromiseInitializeAsRejected(writer, %o)\",r),e._readyPromise=Promise.reject(r),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"rejected\"}function defaultWriterReadyPromiseInitializeAsResolved(e){verbose(\"defaultWriterReadyPromiseInitializeAsResolved()\"),e._readyPromise=Promise.resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"fulfilled\"}function defaultWriterReadyPromiseReject(e,r){verbose(\"defaultWriterReadyPromiseReject(writer, %o)\",r),e._readyPromise_reject(r),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"rejected\"}function defaultWriterReadyPromiseReset(e){verbose(\"defaultWriterReadyPromiseReset()\"),e._readyPromise=new Promise(function(r,t){e._readyPromise_resolve=r,e._readyPromise_reject=t}),e._readyPromiseState=\"pending\"}function defaultWriterReadyPromiseResetToRejected(e,r){verbose(\"defaultWriterReadyPromiseResetToRejected(writer, %o)\",r),e._readyPromise=Promise.reject(r),e._readyPromiseState=\"rejected\"}function defaultWriterReadyPromiseResolve(e){verbose(\"defaultWriterReadyPromiseResolve()\"),e._readyPromise_resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"fulfilled\"}var _createClass=function(){function defineProperties(e,r){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=r.size,i=r.highWaterMark,a=void 0===i?1:i;if(_classCallCheck(this,WritableStream),InitializeWritableStream(this),void 0!==e.type)throw new RangeError(\"Invalid type is specified\");var o=MakeSizeAlgorithmFromSizeFunction(t);SetUpWritableStreamDefaultControllerFromUnderlyingSink(this,e,a=ValidateAndNormalizeHighWaterMark(a),o)}return _createClass(WritableStream,[{key:\"abort\",value:function abort(e){return!1===IsWritableStream(this)?Promise.reject(streamBrandCheckException(\"abort\")):!0===IsWritableStreamLocked(this)?Promise.reject(new TypeError(\"Cannot abort a stream that already has a writer\")):WritableStreamAbort(this,e)}},{key:\"getWriter\",value:function getWriter(){if(!1===IsWritableStream(this))throw streamBrandCheckException(\"getWriter\");return AcquireWritableStreamDefaultWriter(this)}},{key:\"locked\",get:function get(){if(!1===IsWritableStream(this))throw streamBrandCheckException(\"locked\");return IsWritableStreamLocked(this)}}]),WritableStream}();module.exports={AcquireWritableStreamDefaultWriter:AcquireWritableStreamDefaultWriter,CreateWritableStream:CreateWritableStream,IsWritableStream:IsWritableStream,IsWritableStreamLocked:IsWritableStreamLocked,WritableStream:WritableStream,WritableStreamAbort:WritableStreamAbort,WritableStreamDefaultControllerErrorIfNeeded:WritableStreamDefaultControllerErrorIfNeeded,WritableStreamDefaultWriterCloseWithErrorPropagation:WritableStreamDefaultWriterCloseWithErrorPropagation,WritableStreamDefaultWriterRelease:WritableStreamDefaultWriterRelease,WritableStreamDefaultWriterWrite:WritableStreamDefaultWriterWrite,WritableStreamCloseQueuedOrInFlight:WritableStreamCloseQueuedOrInFlight};var WritableStreamDefaultWriter=function(){function WritableStreamDefaultWriter(e){if(_classCallCheck(this,WritableStreamDefaultWriter),!1===IsWritableStream(e))throw new TypeError(\"WritableStreamDefaultWriter can only be constructed with a WritableStream instance\");if(!0===IsWritableStreamLocked(e))throw new TypeError(\"This stream has already been locked for exclusive writing by another writer\");this._ownerWritableStream=e,e._writer=this;var r=e._state;if(\"writable\"===r)!1===WritableStreamCloseQueuedOrInFlight(e)&&!0===e._backpressure?defaultWriterReadyPromiseInitialize(this):defaultWriterReadyPromiseInitializeAsResolved(this),defaultWriterClosedPromiseInitialize(this);else if(\"erroring\"===r)defaultWriterReadyPromiseInitializeAsRejected(this,e._storedError),this._readyPromise.catch(function(){}),defaultWriterClosedPromiseInitialize(this);else if(\"closed\"===r)defaultWriterReadyPromiseInitializeAsResolved(this),defaultWriterClosedPromiseInitializeAsResolved(this);else{var t=e._storedError;defaultWriterReadyPromiseInitializeAsRejected(this,t),this._readyPromise.catch(function(){}),defaultWriterClosedPromiseInitializeAsRejected(this,t),this._closedPromise.catch(function(){})}}return _createClass(WritableStreamDefaultWriter,[{key:\"abort\",value:function abort(e){return!1===IsWritableStreamDefaultWriter(this)?Promise.reject(defaultWriterBrandCheckException(\"abort\")):void 0===this._ownerWritableStream?Promise.reject(defaultWriterLockException(\"abort\")):WritableStreamDefaultWriterAbort(this,e)}},{key:\"close\",value:function close(){if(!1===IsWritableStreamDefaultWriter(this))return Promise.reject(defaultWriterBrandCheckException(\"close\"));var e=this._ownerWritableStream;return void 0===e?Promise.reject(defaultWriterLockException(\"close\")):!0===WritableStreamCloseQueuedOrInFlight(e)?Promise.reject(new TypeError(\"cannot close an already-closing stream\")):WritableStreamDefaultWriterClose(this)}},{key:\"releaseLock\",value:function releaseLock(){if(!1===IsWritableStreamDefaultWriter(this))throw defaultWriterBrandCheckException(\"releaseLock\");void 0!==this._ownerWritableStream&&WritableStreamDefaultWriterRelease(this)}},{key:\"write\",value:function write(e){return!1===IsWritableStreamDefaultWriter(this)?Promise.reject(defaultWriterBrandCheckException(\"write\")):void 0===this._ownerWritableStream?Promise.reject(defaultWriterLockException(\"write to\")):WritableStreamDefaultWriterWrite(this,e)}},{key:\"closed\",get:function get(){return!1===IsWritableStreamDefaultWriter(this)?Promise.reject(defaultWriterBrandCheckException(\"closed\")):this._closedPromise}},{key:\"desiredSize\",get:function get(){if(!1===IsWritableStreamDefaultWriter(this))throw defaultWriterBrandCheckException(\"desiredSize\");if(void 0===this._ownerWritableStream)throw defaultWriterLockException(\"desiredSize\");return WritableStreamDefaultWriterGetDesiredSize(this)}},{key:\"ready\",get:function get(){return!1===IsWritableStreamDefaultWriter(this)?Promise.reject(defaultWriterBrandCheckException(\"ready\")):this._readyPromise}}]),WritableStreamDefaultWriter}(),WritableStreamDefaultController=function(){function WritableStreamDefaultController(){throw _classCallCheck(this,WritableStreamDefaultController),new TypeError(\"WritableStreamDefaultController cannot be constructed explicitly\")}return _createClass(WritableStreamDefaultController,[{key:\"error\",value:function error(e){if(!1===IsWritableStreamDefaultController(this))throw new TypeError(\"WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController\");\"writable\"===this._controlledWritableStream._state&&WritableStreamDefaultControllerError(this,e)}},{key:AbortSteps,value:function value(e){return this._abortAlgorithm(e)}},{key:ErrorSteps,value:function value(){ResetQueue(this)}}]),WritableStreamDefaultController}();\n\n},{\"./helpers.js\":10,\"./queue-with-sizes.js\":11,\"./utils.js\":14,\"better-assert\":16,\"debug\":18}],16:[function(_dereq_,module,exports){\n(function (process){\nfunction assert(e){if(!e){var r=callsite(),s=r[1],t=s.getFileName(),i=s.getLineNumber(),n=(n=fs.readFileSync(t,\"utf8\")).split(\"\\n\")[i-1].match(/assert\\((.*)\\)/)[1];throw new AssertionError({message:n,stackStartFunction:r[0].getFunction()})}}var AssertionError=_dereq_(\"assert\").AssertionError,callsite=_dereq_(\"callsite\"),fs=_dereq_(\"fs\");module.exports=process.env.NO_ASSERT?function(){}:assert;\n\n}).call(this,_dereq_('_process'))\n\n},{\"_process\":4,\"assert\":2,\"callsite\":17,\"fs\":3}],17:[function(_dereq_,module,exports){\nmodule.exports=function(){var r=Error.prepareStackTrace;Error.prepareStackTrace=function(r,e){return e};var e=new Error;Error.captureStackTrace(e,arguments.callee);var a=e.stack;return Error.prepareStackTrace=r,a};\n\n},{}],18:[function(_dereq_,module,exports){\n(function (process){\nfunction useColors(){return!(\"undefined\"==typeof window||!window.process||\"renderer\"!==window.process.type)||(\"undefined\"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/))&&(\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))}function formatArgs(e){var o=this.useColors;if(e[0]=(o?\"%c\":\"\")+this.namespace+(o?\" %c\":\" \")+e[0]+(o?\"%c \":\" \")+\"+\"+exports.humanize(this.diff),o){var C=\"color: \"+this.color;e.splice(1,0,C,\"color: inherit\");var t=0,r=0;e[0].replace(/%[a-zA-Z%]/g,function(e){\"%%\"!==e&&(t++,\"%c\"===e&&(r=t))}),e.splice(r,0,C)}}function log(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function save(e){try{null==e?exports.storage.removeItem(\"debug\"):exports.storage.debug=e}catch(e){}}function load(){var e;try{e=exports.storage.debug}catch(e){}return!e&&\"undefined\"!=typeof process&&\"env\"in process&&(e=process.env.DEBUG),e}function localstorage(){try{return window.localStorage}catch(e){}}exports=module.exports=_dereq_(\"./debug\"),exports.log=log,exports.formatArgs=formatArgs,exports.save=save,exports.load=load,exports.useColors=useColors,exports.storage=\"undefined\"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:localstorage(),exports.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"],exports.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return\"[UnexpectedJSONParseError]: \"+e.message}},exports.enable(load());\n\n}).call(this,_dereq_('_process'))\n\n},{\"./debug\":19,\"_process\":4}],19:[function(_dereq_,module,exports){\nfunction selectColor(e){var r,t=0;for(r in e)t=(t<<5)-t+e.charCodeAt(r),t|=0;return exports.colors[Math.abs(t)%exports.colors.length]}function createDebug(e){function debug(){if(debug.enabled){var e=debug,t=+new Date,s=t-(r||t);e.diff=s,e.prev=r,e.curr=t,r=t;for(var o=new Array(arguments.length),n=0;n100)){var r=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(r){var a=parseFloat(r[1]);switch((r[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return a*y;case\"days\":case\"day\":case\"d\":return a*d;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return a*h;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return a*m;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return a*s;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return a;default:return}}}}function fmtShort(e){return e>=d?Math.round(e/d)+\"d\":e>=h?Math.round(e/h)+\"h\":e>=m?Math.round(e/m)+\"m\":e>=s?Math.round(e/s)+\"s\":e+\"ms\"}function fmtLong(e){return plural(e,d,\"day\")||plural(e,h,\"hour\")||plural(e,m,\"minute\")||plural(e,s,\"second\")||e+\" ms\"}function plural(s,e,r){if(!(s0)return parse(s);if(\"number\"===r&&!1===isNaN(s))return e.long?fmtLong(s):fmtShort(s);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(s))};\n\n},{}]},{},[1])(1)\n});\n//# sourceMappingURL=polyfill-ie11.min.js.map\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorAbstractMediaTyped = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * An abstract actor that handles media-typed actions.\n *\n * It splits up a action between a 'handle' and a 'mediaTypes' action.\n * A 'mediaTypes' action is used to retrieve the available media types from this actor.\n * A 'handle' action is abstract, and can be implemented to do anything,\n * such as parsing, serializing, etc.\n * @see IActionAbstractMediaTyped\n *\n * @see ActorAbstractMediaTypedFixed\n */\nclass ActorAbstractMediaTyped extends core_1.Actor {\n constructor(args) {\n super(args);\n }\n async run(action) {\n if ('handle' in action) {\n const typedAction = action;\n return { handle: await this.runHandle(typedAction.handle, typedAction.handleMediaType, action.context) };\n }\n if ('mediaTypes' in action) {\n return { mediaTypes: await this.getMediaTypes(action.context) };\n }\n if ('mediaTypeFormats' in action) {\n return { mediaTypeFormats: await this.getMediaTypeFormats(action.context) };\n }\n throw new Error('Either a handle, mediaTypes or mediaTypeFormats action needs to be provided');\n }\n async test(action) {\n if ('handle' in action) {\n const typedAction = action;\n return { handle: await this.testHandle(typedAction.handle, typedAction.handleMediaType, action.context) };\n }\n if ('mediaTypes' in action) {\n return { mediaTypes: await this.testMediaType(action.context) };\n }\n if ('mediaTypeFormats' in action) {\n return { mediaTypeFormats: await this.testMediaTypeFormats(action.context) };\n }\n throw new Error('Either a handle, mediaTypes or mediaTypeFormats action needs to be provided');\n }\n}\nexports.ActorAbstractMediaTyped = ActorAbstractMediaTyped;\n//# sourceMappingURL=ActorAbstractMediaTyped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorAbstractMediaTypedFixed = void 0;\nconst ActorAbstractMediaTyped_1 = require(\"./ActorAbstractMediaTyped\");\nclass ActorAbstractMediaTypedFixed extends ActorAbstractMediaTyped_1.ActorAbstractMediaTyped {\n constructor(args) {\n super(args);\n const scale = this.priorityScale || this.priorityScale === 0 ? this.priorityScale : 1;\n if (this.mediaTypePriorities) {\n Object.entries(this.mediaTypePriorities).forEach(([key, value], index) => {\n this.mediaTypePriorities[key] = scale * value;\n });\n }\n this.mediaTypePriorities = Object.freeze(this.mediaTypePriorities);\n this.mediaTypeFormats = Object.freeze(this.mediaTypeFormats);\n }\n async testHandle(action, mediaType, context) {\n if (!(mediaType in this.mediaTypePriorities)) {\n throw new Error(`Unrecognized media type: ${mediaType}`);\n }\n return await this.testHandleChecked(action, context);\n }\n async testMediaType(context) {\n return true;\n }\n async getMediaTypes(context) {\n return this.mediaTypePriorities;\n }\n async testMediaTypeFormats(context) {\n return true;\n }\n async getMediaTypeFormats(context) {\n return this.mediaTypeFormats;\n }\n}\nexports.ActorAbstractMediaTypedFixed = ActorAbstractMediaTypedFixed;\n//# sourceMappingURL=ActorAbstractMediaTypedFixed.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorAbstractMediaTyped\"), exports);\n__exportStar(require(\"./ActorAbstractMediaTypedFixed\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorAbstractPath = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * An abstract actor that handles Path operations.\n *\n * Provides multiple helper functions used by the Path operation actors.\n */\nclass ActorAbstractPath extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args, predicateType) {\n super(args, 'path');\n this.predicateType = predicateType;\n }\n async testOperation(operation, context) {\n if (operation.predicate.type !== this.predicateType) {\n throw new Error(`This Actor only supports ${this.predicateType} Path operations.`);\n }\n return true;\n }\n // Generates a variable that does not yet occur in the path\n generateVariable(path, name) {\n if (!name) {\n return this.generateVariable(path, 'b');\n }\n // Path predicates can't contain variables\n if (path && (path.subject.value === name || path.object.value === name)) {\n return this.generateVariable(path, `${name}b`);\n }\n return DF.variable(name);\n }\n // Such connectivity matching does not introduce duplicates (it does not incorporate any count of the number\n // of ways the connection can be made) even if the repeated path itself would otherwise result in duplicates.\n // https://www.w3.org/TR/sparql11-query/#propertypaths\n async isPathArbitraryLengthDistinct(context, path) {\n if (!context.get(context_entries_1.KeysQueryOperation.isPathArbitraryLengthDistinctKey)) {\n context = context.set(context_entries_1.KeysQueryOperation.isPathArbitraryLengthDistinctKey, true);\n return { context,\n operation: bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n operation: ActorAbstractPath.FACTORY.createDistinct(path),\n context,\n })) };\n }\n context = context.set(context_entries_1.KeysQueryOperation.isPathArbitraryLengthDistinctKey, false);\n return { context, operation: undefined };\n }\n async predicateStarGraphVariable(subject, object, predicate, graph, context) {\n // Construct path to obtain all graphs where subject exists\n const predVar = this.generateVariable(ActorAbstractPath.FACTORY.createPath(subject, predicate, object, graph));\n const findGraphs = ActorAbstractPath.FACTORY.createUnion([\n ActorAbstractPath.FACTORY.createPattern(subject, predVar, object, graph),\n ActorAbstractPath.FACTORY.createPattern(object, predVar, subject, graph),\n ]);\n const results = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ context, operation: findGraphs }));\n const passedGraphs = new Set();\n const bindingsStream = new asynciterator_1.MultiTransformIterator(results.bindingsStream, {\n multiTransform: (bindings) => {\n // Extract the graph and start a predicate* search starting from subject in each graph\n const graphValue = bindings.get(graph);\n if (passedGraphs.has(graphValue.value)) {\n return new asynciterator_1.EmptyIterator();\n }\n passedGraphs.add(graphValue.value);\n return new asynciterator_1.TransformIterator(async () => {\n const it = new asynciterator_1.BufferedIterator();\n await this.getObjectsPredicateStar(subject, predicate, graphValue, context, {}, it, { count: 0 });\n return it.transform({\n transform(item, next, push) {\n push(BF.bindings([\n [object, item],\n [graph, graphValue],\n ]));\n next();\n },\n });\n }, { maxBufferSize: 128 });\n },\n autoStart: false,\n });\n return {\n bindingsStream,\n metadata: results.metadata,\n };\n }\n /**\n * Returns an iterator with Bindings of the query subject predicate* ?o\n * If graph is a variable, it will also be in those bindings\n * @param {Term} subject Term of where we start the predicate* search.\n * @param {Variable} object Variable of the zeroOrMore-query.\n * @param {Term} objectVal\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern. (Possibly a variable)\n * @param {ActionContext} context\n * @return {Promise} Iterator to where all bindings of query should have been pushed.\n */\n async getObjectsPredicateStarEval(subject, object, predicate, graph, context) {\n if (graph.termType === 'Variable') {\n return this.predicateStarGraphVariable(subject, object, predicate, graph, context);\n }\n const it = new asynciterator_1.BufferedIterator();\n // We can safely ignore undefs because termHashes is empty\n // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style\n const metadata = await this\n .getObjectsPredicateStar(subject, predicate, graph, context, {}, it, { count: 0 });\n const bindingsStream = it.transform({\n transform(item, next, push) {\n push(BF.bindings([[object, item]]));\n next();\n },\n });\n return {\n bindingsStream,\n metadata,\n };\n }\n /**\n * Pushes all terms to iterator `it` that are a solution of object predicate* ?o.\n * @param {Term} object Term of where we start the predicate* search.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {Record} termHashes Remembers the objects we've already searched for.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} The results metadata.\n */\n async getObjectsPredicateStar(object, predicate, graph, context, termHashes, it, counter) {\n const termString = (0, rdf_string_1.termToString)(object);\n if (termHashes[termString]) {\n return;\n }\n it._push(object);\n termHashes[termString] = object;\n counter.count++;\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(object, predicate, thisVariable, graph);\n const results = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ operation: path, context }));\n results.bindingsStream.on('data', async (bindings) => {\n const result = bindings.get(thisVariable);\n await this.getObjectsPredicateStar(result, predicate, graph, context, termHashes, it, counter);\n });\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n });\n return results.metadata;\n }\n /**\n * Pushes all terms to iterator `it` that are a solution of ?s predicate* ?o.\n * @param {string} subjectVar String representation of subjectVariable\n * @param {string} objectVar String representation of objectVariable\n * @param {Term} subjectVal Term of where we start the predicate* search.\n * @param {Term} objectVal Found solution for an object, start for the new step.\n * @param {Algebra.PropertyPathSymbol} predicate Predicate of the *-path.\n * @param {Term} graph The graph in which we search for the pattern.\n * @param {ActionContext} context\n * @param {{[id: string]: Promise}} termHashesGlobal\n * Remembers solutions for when objectVal is already been calculated, can be reused when same objectVal occurs\n * @param {{[id: string]: Term}} termHashesCurrentSubject\n * Remembers the pairs we've already searched for, can stop searching if so.\n * @param {BufferedIterator} it Iterator to push terms to.\n * @param {any} counter Counts how many searches are in progress to close it when needed (when counter == 0).\n * @return {Promise} All solutions of query should have been pushed to it by then.\n */\n // Let the iterator `it` emit all bindings of size 2, with subjectStringVariable as value subjectVal\n // and objectStringVariable as value all nodes reachable through predicate* beginning at objectVal\n async getSubjectAndObjectBindingsPredicateStar(subjectVar, objectVar, subjectVal, objectVal, predicate, graph, context, termHashesGlobal, termHashesCurrentSubject, it, counter) {\n const termString = (0, rdf_string_1.termToString)(objectVal) + (0, rdf_string_1.termToString)(graph);\n // If this combination of subject and object already done, return nothing\n if (termHashesCurrentSubject[termString]) {\n return;\n }\n counter.count++;\n termHashesCurrentSubject[termString] = true;\n it._push(BF.bindings([\n [subjectVar, subjectVal],\n [objectVar, objectVal],\n ]));\n // If every reachable node from object has already been calculated, use these for current subject too\n if (termString in termHashesGlobal) {\n const objects = await termHashesGlobal[termString];\n for (const object of objects) {\n await this.getSubjectAndObjectBindingsPredicateStar(subjectVar, objectVar, subjectVal, object, predicate, graph, context, termHashesGlobal, termHashesCurrentSubject, it, counter);\n }\n if (--counter.count === 0) {\n it.close();\n }\n return;\n }\n // Construct promise to calculate all reachable nodes from this object\n const promise = new Promise(async (resolve, reject) => {\n const objectsArray = [];\n // Construct path that leads us one step through predicate\n const thisVariable = this.generateVariable();\n const path = ActorAbstractPath.FACTORY.createPath(objectVal, predicate, thisVariable, graph);\n const results = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ operation: path, context }));\n // Recursive call on all neighbours\n results.bindingsStream.on('data', async (bindings) => {\n const result = bindings.get(thisVariable);\n objectsArray.push(result);\n await this.getSubjectAndObjectBindingsPredicateStar(subjectVar, objectVar, subjectVal, result, predicate, graph, context, termHashesGlobal, termHashesCurrentSubject, it, counter);\n });\n results.bindingsStream.on('error', reject);\n results.bindingsStream.on('end', () => {\n if (--counter.count === 0) {\n it.close();\n }\n resolve(objectsArray);\n });\n });\n // Set it in the termHashesGlobal when this object occurs again they can wait for this promise\n termHashesGlobal[termString] = promise;\n }\n}\nexports.ActorAbstractPath = ActorAbstractPath;\nActorAbstractPath.FACTORY = new sparqlalgebrajs_1.Factory();\n//# sourceMappingURL=ActorAbstractPath.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorAbstractPath\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorContextPreprocessSourceToDestination = void 0;\nconst bus_context_preprocess_1 = require(\"@comunica/bus-context-preprocess\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * A comunica Source To Destination Context Preprocess Actor.\n */\nclass ActorContextPreprocessSourceToDestination extends bus_context_preprocess_1.ActorContextPreprocess {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n if (action.context.get(context_entries_1.KeysRdfResolveQuadPattern.sources) && !action.context.get(context_entries_1.KeysRdfUpdateQuads.destination)) {\n const sources = action.context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n if (sources.length === 1) {\n return { context: action.context.set(context_entries_1.KeysRdfUpdateQuads.destination, sources[0]) };\n }\n }\n return action;\n }\n}\nexports.ActorContextPreprocessSourceToDestination = ActorContextPreprocessSourceToDestination;\n//# sourceMappingURL=ActorContextPreprocessSourceToDestination.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorContextPreprocessSourceToDestination\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceFallback = void 0;\nconst bus_dereference_1 = require(\"@comunica/bus-dereference\");\n/**\n * A comunica Fallback Dereference Actor.\n */\nclass ActorDereferenceFallback extends bus_dereference_1.ActorDereference {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n return this.handleDereferenceErrors(action, new Error(`Could not dereference '${action.url}'`));\n }\n}\nexports.ActorDereferenceFallback = ActorDereferenceFallback;\n//# sourceMappingURL=ActorDereferenceFallback.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorDereferenceFallback\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceHttp = void 0;\n/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nconst ActorDereferenceHttpBase_1 = require(\"./ActorDereferenceHttpBase\");\n/**\n * The browser variant of {@link ActorDereferenceHttp}.\n */\nclass ActorDereferenceHttp extends ActorDereferenceHttpBase_1.ActorDereferenceHttpBase {\n getMaxAcceptHeaderLength() {\n return this.maxAcceptHeaderLengthBrowser;\n }\n}\nexports.ActorDereferenceHttp = ActorDereferenceHttp;\n//# sourceMappingURL=ActorDereferenceHttp-browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceHttpBase = exports.mediaTypesToAcceptString = void 0;\nconst bus_dereference_1 = require(\"@comunica/bus-dereference\");\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst cross_fetch_1 = require(\"cross-fetch\");\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\nconst stringifyStream = require(\"stream-to-string\");\nconst REGEX_MEDIATYPE = /^[^ ;]*/u;\nfunction mediaTypesToAcceptString(mediaTypes, maxLength) {\n const wildcard = '*/*;q=0.1';\n const parts = [];\n const sortedMediaTypes = Object.entries(mediaTypes)\n .map(([mediaType, priority]) => ({ mediaType, priority }))\n .sort((left, right) => right.priority === left.priority ?\n left.mediaType.localeCompare(right.mediaType) :\n right.priority - left.priority);\n // Take into account the ',' characters joining each type\n let partsLength = sortedMediaTypes.length - 1;\n for (const { mediaType, priority } of sortedMediaTypes) {\n const part = mediaType + (priority !== 1 ? `;q=${priority.toFixed(3).replace(/0*$/u, '')}` : '');\n if (partsLength + part.length > maxLength) {\n while (partsLength + wildcard.length > maxLength) {\n const last = parts.pop() || '';\n // Don't forget the ','\n partsLength -= last.length + 1;\n }\n parts.push(wildcard);\n break;\n }\n parts.push(part);\n partsLength += part.length;\n }\n return parts.length === 0 ? '*/*' : parts.join(',');\n}\nexports.mediaTypesToAcceptString = mediaTypesToAcceptString;\n/**\n * An actor that listens on the 'dereference' bus.\n *\n * It resolves the URL using the HTTP bus using an accept header compiled from the available media types.\n */\nclass ActorDereferenceHttpBase extends bus_dereference_1.ActorDereference {\n constructor(args) {\n super(args);\n }\n async test({ url }) {\n if (!/^https?:/u.test(url)) {\n throw new Error(`Cannot retrieve ${url} because it is not an HTTP(S) URL.`);\n }\n return true;\n }\n async run(action) {\n let exists = true;\n // Append any custom passed headers\n const headers = new cross_fetch_1.Headers(action.headers);\n // Resolve HTTP URL using appropriate accept header\n headers.append('Accept', mediaTypesToAcceptString(await action.mediaTypes?.() ?? {}, this.getMaxAcceptHeaderLength()));\n let httpResponse;\n const requestTimeStart = Date.now();\n try {\n httpResponse = await this.mediatorHttp.mediate({\n context: action.context,\n init: { headers, method: action.method },\n input: action.url,\n });\n }\n catch (error) {\n return this.handleDereferenceErrors(action, error);\n }\n // The response URL can be relative to the given URL\n const url = (0, relative_to_absolute_iri_1.resolve)(httpResponse.url, action.url);\n const requestTime = Date.now() - requestTimeStart;\n // Only parse if retrieval was successful\n if (httpResponse.status !== 200) {\n exists = false;\n // Consume the body, to avoid process to hang\n const bodyString = httpResponse.body ?\n await stringifyStream(bus_http_1.ActorHttp.toNodeReadable(httpResponse.body)) :\n 'empty response';\n if (!action.acceptErrors) {\n const error = new Error(`Could not retrieve ${action.url} (HTTP status ${httpResponse.status}):\\n${bodyString}`);\n return this.handleDereferenceErrors(action, error, httpResponse.headers, requestTime);\n }\n }\n const mediaType = REGEX_MEDIATYPE.exec(httpResponse.headers.get('content-type') ?? '')?.[0];\n // Return the parsed quad stream and whether or not only triples are supported\n return {\n url,\n data: exists ? bus_http_1.ActorHttp.toNodeReadable(httpResponse.body) : (0, bus_dereference_1.emptyReadable)(),\n exists,\n requestTime,\n headers: httpResponse.headers,\n mediaType: mediaType !== 'text/plain' ? mediaType : undefined,\n };\n }\n}\nexports.ActorDereferenceHttpBase = ActorDereferenceHttpBase;\n//# sourceMappingURL=ActorDereferenceHttpBase.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorDereferenceHttp\"), exports);\n__exportStar(require(\"./ActorDereferenceHttpBase\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceRdfParse = void 0;\nconst bus_dereference_rdf_1 = require(\"@comunica/bus-dereference-rdf\");\n/**\n * A comunica Parse Dereference RDF Actor.\n */\nclass ActorDereferenceRdfParse extends bus_dereference_rdf_1.ActorDereferenceRdf {\n /**\n * @param args - @defaultNested {{\n * \"ttl\": \"text/turtle\",\n * \"turtle\": \"text/turtle\",\n * \"nt\": \"application/n-triples\",\n * \"ntriples\": \"application/n-triples\",\n * \"nq\": \"application/n-quads\",\n * \"nquads\": \"application/n-quads\",\n * \"rdf\": \"application/rdf+xml\",\n * \"rdfxml\": \"application/rdf+xml\",\n * \"owl\": \"application/rdf+xml\",\n * \"n3\": \"text/n3\",\n * \"trig\": \"application/trig\",\n * \"jsonld\": \"application/ld+json\",\n * \"json\": \"application/json\",\n * \"html\": \"text/html\",\n * \"htm\": \"text/html\",\n * \"xhtml\": \"application/xhtml+xml\",\n * \"xht\": \"application/xhtml+xml\",\n * \"xml\": \"application/xml\",\n * \"svg\": \"image/svg+xml\",\n * \"svgz\": \"image/svg+xml\"\n * }} mediaMappings\n */\n constructor(args) {\n super(args);\n }\n async getMetadata(dereference) {\n return { baseIRI: dereference.url };\n }\n}\nexports.ActorDereferenceRdfParse = ActorDereferenceRdfParse;\n//# sourceMappingURL=ActorDereferenceRdfParse.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorDereferenceRdfParse\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHashBindingsSha1 = void 0;\nconst bus_hash_bindings_1 = require(\"@comunica/bus-hash-bindings\");\nconst hash_js_1 = require(\"hash.js\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst canonicalize = require('canonicalize');\n/**\n * A comunica Memento Http Actor.\n */\nclass ActorHashBindingsSha1 extends bus_hash_bindings_1.ActorHashBindings {\n async test(action) {\n if (!action.allowHashCollisions) {\n throw new Error(`Actor ${this.name} can not provide hash functions without hash collisions`);\n }\n return true;\n }\n async run(action) {\n return {\n hashFunction: bindings => (0, hash_js_1.sha1)()\n .update(canonicalize(Object.fromEntries([...bindings]\n .map(([key, value]) => [(0, rdf_string_1.termToString)(key), (0, rdf_string_1.termToString)(value)]))))\n .digest('hex'),\n hashCollisions: true,\n };\n }\n}\nexports.ActorHashBindingsSha1 = ActorHashBindingsSha1;\n//# sourceMappingURL=ActorHashBindingsSha1.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHashBindingsSha1\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttpFetch = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nrequire(\"cross-fetch/polyfill\");\nconst FetchInitPreprocessor_1 = require(\"./FetchInitPreprocessor\");\n/**\n * A node-fetch actor that listens on the 'init' bus.\n *\n * It will call `fetch` with either action.input or action.url.\n */\nclass ActorHttpFetch extends bus_http_1.ActorHttp {\n constructor(args) {\n super(args);\n this.userAgent = ActorHttpFetch.createUserAgent();\n this.fetchInitPreprocessor = new FetchInitPreprocessor_1.FetchInitPreprocessor(args.agentOptions);\n }\n static createUserAgent() {\n return `Comunica/actor-http-fetch (${typeof global.navigator === 'undefined' ?\n `Node.js ${process.version}; ${process.platform}` :\n `Browser-${global.navigator.userAgent}`})`;\n }\n async test(action) {\n return { time: Number.POSITIVE_INFINITY };\n }\n run(action) {\n // Prepare headers\n const initHeaders = action.init ? action.init.headers || {} : {};\n action.init = action.init ? action.init : {};\n action.init.headers = new Headers(initHeaders);\n if (!action.init.headers.has('user-agent')) {\n action.init.headers.append('user-agent', this.userAgent);\n }\n const authString = action.context.get(context_entries_1.KeysHttp.auth);\n if (authString) {\n action.init.headers.append('Authorization', `Basic ${Buffer.from(authString).toString('base64')}`);\n }\n // Log request\n this.logInfo(action.context, `Requesting ${typeof action.input === 'string' ?\n action.input :\n action.input.url}`, () => ({\n headers: bus_http_1.ActorHttp.headersToHash(new Headers(action.init.headers)),\n method: action.init.method || 'GET',\n }));\n // TODO: remove this workaround once this has a fix: https://github.com/inrupt/solid-client-authn-js/issues/1708\n if (action.init?.headers && 'append' in action.init.headers && action.context.has(context_entries_1.KeysHttp.fetch)) {\n action.init.headers = bus_http_1.ActorHttp.headersToHash(action.init.headers);\n }\n // Perform request\n const customFetch = action\n .context?.get(context_entries_1.KeysHttp.fetch);\n return (customFetch || fetch)(action.input, this.fetchInitPreprocessor.handle({\n ...action.init,\n ...action.context.get(context_entries_1.KeysHttp.includeCredentials) ? { credentials: 'include' } : {},\n })).then(response => {\n // Node-fetch does not support body.cancel, while it is mandatory according to the fetch and readablestream api.\n // If it doesn't exist, we monkey-patch it.\n if (response.body && !response.body.cancel) {\n response.body.cancel = async (error) => {\n response.body.destroy(error);\n };\n }\n return response;\n });\n }\n}\nexports.ActorHttpFetch = ActorHttpFetch;\n//# sourceMappingURL=ActorHttpFetch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FetchInitPreprocessor = void 0;\n/**\n * Does nothing in browsers\n */\nclass FetchInitPreprocessor {\n handle(init) {\n // Remove overridden user-agent header within browsers to avoid CORS issues\n if (init.headers) {\n const headers = new Headers(init.headers);\n if (headers.has('user-agent')) {\n headers.delete('user-agent');\n }\n init.headers = headers;\n }\n // Only enable keepalive functionality if we are not sending a body (some browsers seem to trip over this)\n return { keepalive: !init.body, ...init };\n }\n}\nexports.FetchInitPreprocessor = FetchInitPreprocessor;\n//# sourceMappingURL=FetchInitPreprocessor-browser.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttpFetch\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttpProxy = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * A comunica Proxy Http Actor.\n */\nclass ActorHttpProxy extends bus_http_1.ActorHttp {\n constructor(args) {\n super(args);\n }\n async test(action) {\n const proxyHandler = action.context.get(context_entries_1.KeysHttpProxy.httpProxyHandler);\n if (!proxyHandler) {\n throw new Error(`Actor ${this.name} could not find a proxy handler in the context.`);\n }\n if (!await proxyHandler.getProxy(action)) {\n throw new Error(`Actor ${this.name} could not determine a proxy for the given request.`);\n }\n return { time: Number.POSITIVE_INFINITY };\n }\n async run(action) {\n const requestedUrl = typeof action.input === 'string' ? action.input : action.input.url;\n const proxyHandler = action.context.get(context_entries_1.KeysHttpProxy.httpProxyHandler);\n // Send a request for the modified request\n const output = await this.mediatorHttp.mediate({\n ...await proxyHandler.getProxy(action),\n context: action.context.delete(context_entries_1.KeysHttpProxy.httpProxyHandler),\n });\n // Modify the response URL\n // use defineProperty to allow modification of unmodifiable objects\n Object.defineProperty(output, 'url', {\n configurable: true,\n enumerable: true,\n get: () => output.headers.get('x-final-url') ?? requestedUrl,\n });\n return output;\n }\n}\nexports.ActorHttpProxy = ActorHttpProxy;\n//# sourceMappingURL=ActorHttpProxy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyHandlerStatic = void 0;\n/**\n * A proxy handler that prefixes all URLs with a given string.\n */\nclass ProxyHandlerStatic {\n constructor(prefixUrl) {\n this.prefixUrl = prefixUrl;\n }\n async getProxy(request) {\n return {\n init: request.init,\n input: this.modifyInput(request.input),\n };\n }\n modifyInput(input) {\n if (typeof input === 'string') {\n return this.prefixUrl + input;\n }\n return new Request(this.prefixUrl + input.url, input);\n }\n}\nexports.ProxyHandlerStatic = ProxyHandlerStatic;\n//# sourceMappingURL=ProxyHandlerStatic.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttpProxy\"), exports);\n__exportStar(require(\"./ProxyHandlerStatic\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorInitQuery = void 0;\n/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\nconst ActorInitQueryBase_1 = require(\"./ActorInitQueryBase\");\nclass ActorInitQuery extends ActorInitQueryBase_1.ActorInitQueryBase {\n}\nexports.ActorInitQuery = ActorInitQuery;\n//# sourceMappingURL=ActorInitQuery-browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorInitQueryBase = void 0;\nconst bus_init_1 = require(\"@comunica/bus-init\");\n/**\n * A browser-safe comunica Query Init Actor.\n */\nclass ActorInitQueryBase extends bus_init_1.ActorInit {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n throw new Error('ActorInitSparql#run is not supported in the browser.');\n }\n}\nexports.ActorInitQueryBase = ActorInitQueryBase;\n//# sourceMappingURL=ActorInitQueryBase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MemoryPhysicalQueryPlanLogger = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * A physical query plan logger that stores everything in memory.\n */\nclass MemoryPhysicalQueryPlanLogger {\n constructor() {\n this.children = new Map();\n }\n logOperation(logicalOperator, physicalOperator, node, parentNode, actor, metadata) {\n const planNode = {\n actor,\n logicalOperator,\n physicalOperator,\n rawNode: node,\n children: [],\n metadata,\n };\n this.children.set(node, planNode.children);\n if (!this.rootNode) {\n if (parentNode) {\n throw new Error(`No root node has been set yet, while a parent is being referenced`);\n }\n this.rootNode = planNode;\n }\n else {\n if (!parentNode) {\n throw new Error(`Detected more than one parent-less node`);\n }\n const children = this.children.get(parentNode);\n if (!children) {\n throw new Error(`Could not find parent node`);\n }\n children.push(planNode);\n }\n }\n toJson() {\n return this.rootNode ? this.planNodeToJson(this.rootNode) : {};\n }\n planNodeToJson(node) {\n return {\n logical: node.logicalOperator,\n physical: node.physicalOperator,\n ...this.getLogicalMetadata(node.rawNode),\n ...node.metadata,\n ...node.children.length > 0 ? { children: node.children.map(child => this.planNodeToJson(child)) } : {},\n };\n }\n getLogicalMetadata(rawNode) {\n if ('type' in rawNode) {\n const operation = rawNode;\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (operation.type) {\n case 'pattern':\n return {\n pattern: this.quadToString(operation),\n };\n case 'project':\n return {\n variables: operation.variables.map(variable => variable.value),\n };\n }\n }\n return {};\n }\n quadToString(quad) {\n return `${(0, rdf_string_1.termToString)(quad.subject)} ${(0, rdf_string_1.termToString)(quad.predicate)} ${(0, rdf_string_1.termToString)(quad.object)}${quad.graph.termType === 'DefaultGraph' ? '' : ` ${(0, rdf_string_1.termToString)(quad.graph)}`}`;\n }\n}\nexports.MemoryPhysicalQueryPlanLogger = MemoryPhysicalQueryPlanLogger;\n//# sourceMappingURL=MemoryPhysicalQueryPlanLogger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueryEngineBase = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst MemoryPhysicalQueryPlanLogger_1 = require(\"./MemoryPhysicalQueryPlanLogger\");\n/**\n * Base implementation of a Comunica query engine.\n */\nclass QueryEngineBase {\n constructor(actorInitQuery) {\n this.actorInitQuery = actorInitQuery;\n }\n async queryBindings(query, context) {\n return this.queryOfType(query, context, 'bindings');\n }\n async queryQuads(query, context) {\n return this.queryOfType(query, context, 'quads');\n }\n async queryBoolean(query, context) {\n return this.queryOfType(query, context, 'boolean');\n }\n async queryVoid(query, context) {\n return this.queryOfType(query, context, 'void');\n }\n async queryOfType(query, context, expectedType) {\n const result = await this.query(query, context);\n if (result.resultType === expectedType) {\n return result.execute();\n }\n throw new Error(`Query result type '${expectedType}' was expected, while '${result.resultType}' was found.`);\n }\n /**\n * Evaluate the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to the query output.\n */\n async query(query, context) {\n const output = await this.queryOrExplain(query, context);\n if ('explain' in output) {\n throw new Error(`Tried to explain a query when in query-only mode`);\n }\n return output;\n }\n /**\n * Explain the given query\n * @param {string | Algebra.Operation} query A query string or algebra.\n * @param context An optional query context.\n * @param explainMode The explain mode.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n async explain(query, context, explainMode) {\n context.explain = explainMode;\n const output = await this.queryOrExplain(query, context);\n return output;\n }\n /**\n * Evaluate or explain the given query\n * @param {string | Algebra.Operation} query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise} A promise that resolves to\n * the query output or explanation.\n */\n async queryOrExplain(query, context) {\n context = context || {};\n // Expand shortcuts\n for (const key in context) {\n if (this.actorInitQuery.contextKeyShortcuts[key]) {\n context[this.actorInitQuery.contextKeyShortcuts[key]] = context[key];\n delete context[key];\n }\n }\n // Prepare context\n let actionContext = new core_1.ActionContext(context);\n let queryFormat = { language: 'sparql', version: '1.1' };\n if (actionContext.has(context_entries_1.KeysInitQuery.queryFormat)) {\n queryFormat = actionContext.get(context_entries_1.KeysInitQuery.queryFormat);\n actionContext = actionContext.delete(context_entries_1.KeysInitQuery.queryFormat);\n if (queryFormat.language === 'graphql') {\n actionContext = actionContext.setDefault(context_entries_1.KeysInitQuery.graphqlSingularizeVariables, {});\n }\n }\n const baseIRI = actionContext.get(context_entries_1.KeysInitQuery.baseIRI);\n actionContext = actionContext\n .setDefault(context_entries_1.KeysInitQuery.queryTimestamp, new Date())\n .setDefault(context_entries_1.KeysRdfResolveQuadPattern.sourceIds, new Map())\n // Set the default logger if none is provided\n .setDefault(context_entries_1.KeysCore.log, this.actorInitQuery.logger);\n // Pre-processing the context\n actionContext = (await this.actorInitQuery.mediatorContextPreprocess.mediate({ context: actionContext })).context;\n // Determine explain mode\n const explainMode = actionContext.get(context_entries_1.KeysInitQuery.explain);\n // Parse query\n let operation;\n if (typeof query === 'string') {\n // Save the original query string in the context\n actionContext = actionContext.set(context_entries_1.KeysInitQuery.queryString, query);\n const queryParseOutput = await this.actorInitQuery.mediatorQueryParse\n .mediate({ context: actionContext, query, queryFormat, baseIRI });\n operation = queryParseOutput.operation;\n // Update the baseIRI in the context if the query modified it.\n if (queryParseOutput.baseIRI) {\n actionContext = actionContext.set(context_entries_1.KeysInitQuery.baseIRI, queryParseOutput.baseIRI);\n }\n }\n else {\n operation = query;\n }\n // Print parsed query\n if (explainMode === 'parsed') {\n return {\n explain: true,\n type: explainMode,\n data: operation,\n };\n }\n // Apply initial bindings in context\n if (actionContext.has(context_entries_1.KeysInitQuery.initialBindings)) {\n operation = (0, bus_query_operation_1.materializeOperation)(operation, actionContext.get(context_entries_1.KeysInitQuery.initialBindings));\n // Delete the query string from the context, since our initial query might have changed\n actionContext = actionContext.delete(context_entries_1.KeysInitQuery.queryString);\n }\n // Optimize the query operation\n const mediatorResult = await this.actorInitQuery.mediatorOptimizeQueryOperation\n .mediate({ context: actionContext, operation });\n operation = mediatorResult.operation;\n actionContext = mediatorResult.context || actionContext;\n // Print logical query plan\n if (explainMode === 'logical') {\n return {\n explain: true,\n type: explainMode,\n data: operation,\n };\n }\n // Save original query in context\n actionContext = actionContext.set(context_entries_1.KeysInitQuery.query, operation);\n // If we need a physical query plan, store a physical query plan logger in the context, and collect it after exec\n let physicalQueryPlanLogger;\n if (explainMode === 'physical') {\n physicalQueryPlanLogger = new MemoryPhysicalQueryPlanLogger_1.MemoryPhysicalQueryPlanLogger();\n actionContext = actionContext.set(context_entries_1.KeysInitQuery.physicalQueryPlanLogger, physicalQueryPlanLogger);\n }\n // Execute query\n const output = await this.actorInitQuery.mediatorQueryOperation.mediate({\n context: actionContext,\n operation,\n });\n output.context = actionContext;\n const finalOutput = QueryEngineBase.internalToFinalResult(output);\n // Output physical query plan after query exec if needed\n if (physicalQueryPlanLogger) {\n // Make sure the whole result is produced\n switch (finalOutput.resultType) {\n case 'bindings':\n await (await finalOutput.execute()).toArray();\n break;\n case 'quads':\n await (await finalOutput.execute()).toArray();\n break;\n case 'boolean':\n await finalOutput.execute();\n break;\n case 'void':\n await finalOutput.execute();\n break;\n }\n return {\n explain: true,\n type: explainMode,\n data: physicalQueryPlanLogger.toJson(),\n };\n }\n return finalOutput;\n }\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL (weighted) result media types.\n */\n async getResultMediaTypes(context) {\n context = core_1.ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeCombiner\n .mediate({ context, mediaTypes: true })).mediaTypes;\n }\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL result media type formats.\n */\n async getResultMediaTypeFormats(context) {\n context = core_1.ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeFormatCombiner\n .mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n /**\n * Convert a query result to a string stream based on a certain media type.\n * @param {IQueryOperationResult} queryResult A query result.\n * @param {string} mediaType A media type.\n * @param {ActionContext} context An optional context.\n * @return {Promise} A text stream.\n */\n async resultToString(queryResult, mediaType, context) {\n context = core_1.ActionContext.ensureActionContext(context);\n if (!mediaType) {\n switch (queryResult.resultType) {\n case 'bindings':\n mediaType = 'application/json';\n break;\n case 'quads':\n mediaType = 'application/trig';\n break;\n default:\n mediaType = 'simple';\n break;\n }\n }\n const handle = { ...await QueryEngineBase.finalToInternalResult(queryResult), context };\n return (await this.actorInitQuery.mediatorQueryResultSerialize\n .mediate({ context, handle, handleMediaType: mediaType })).handle;\n }\n /**\n * Invalidate all internal caches related to the given page URL.\n * If no page URL is given, then all pages will be invalidated.\n * @param {string} url The page URL to invalidate.\n * @param context An optional ActionContext to pass to the actors.\n * @return {Promise} A promise resolving when the caches have been invalidated.\n */\n invalidateHttpCache(url, context) {\n context = core_1.ActionContext.ensureActionContext(context);\n return this.actorInitQuery.mediatorHttpInvalidate.mediate({ url, context });\n }\n /**\n * Convert an internal query result to a final one.\n * @param internalResult An intermediary query result.\n */\n static internalToFinalResult(internalResult) {\n switch (internalResult.type) {\n case 'bindings':\n return {\n resultType: 'bindings',\n execute: async () => internalResult.bindingsStream,\n metadata: async () => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'quads':\n return {\n resultType: 'quads',\n execute: async () => internalResult.quadStream,\n metadata: async () => await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'boolean':\n return {\n resultType: 'boolean',\n execute: async () => internalResult.execute(),\n context: internalResult.context,\n };\n case 'void':\n return {\n resultType: 'void',\n execute: async () => internalResult.execute(),\n context: internalResult.context,\n };\n }\n }\n /**\n * Convert a final query result to an internal one.\n * @param finalResult A final query result.\n */\n static async finalToInternalResult(finalResult) {\n switch (finalResult.resultType) {\n case 'bindings':\n return {\n type: 'bindings',\n bindingsStream: await finalResult.execute(),\n metadata: async () => await finalResult.metadata(),\n };\n case 'quads':\n return {\n type: 'quads',\n quadStream: await finalResult.execute(),\n metadata: async () => await finalResult.metadata(),\n };\n case 'boolean':\n return {\n type: 'boolean',\n execute: () => finalResult.execute(),\n };\n case 'void':\n return {\n type: 'void',\n execute: () => finalResult.execute(),\n };\n }\n }\n}\nexports.QueryEngineBase = QueryEngineBase;\n//# sourceMappingURL=QueryEngineBase.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueryEngineBase = void 0;\n/* eslint-disable unicorn/filename-case */\n/* eslint-enable unicorn/filename-case */\n__exportStar(require(\"./ActorInitQueryBase\"), exports);\n__exportStar(require(\"./ActorInitQuery-browser\"), exports);\nvar QueryEngineBase_1 = require(\"./QueryEngineBase\");\nObject.defineProperty(exports, \"QueryEngineBase\", { enumerable: true, get: function () { return QueryEngineBase_1.QueryEngineBase; } });\n//# sourceMappingURL=index-browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorOptimizeQueryOperationBgpToJoin = void 0;\nconst bus_optimize_query_operation_1 = require(\"@comunica/bus-optimize-query-operation\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica BGP to Join Optimize Query Operation Actor.\n */\nclass ActorOptimizeQueryOperationBgpToJoin extends bus_optimize_query_operation_1.ActorOptimizeQueryOperation {\n async test(action) {\n return true;\n }\n async run(action) {\n const operation = sparqlalgebrajs_1.Util.mapOperation(action.operation, {\n bgp(op, factory) {\n return {\n recurse: false,\n result: factory.createJoin(op.patterns),\n };\n },\n });\n return { operation, context: action.context };\n }\n}\nexports.ActorOptimizeQueryOperationBgpToJoin = ActorOptimizeQueryOperationBgpToJoin;\n//# sourceMappingURL=ActorOptimizeQueryOperationBgpToJoin.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorOptimizeQueryOperationBgpToJoin\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorOptimizeQueryOperationJoinBgp = void 0;\nconst bus_optimize_query_operation_1 = require(\"@comunica/bus-optimize-query-operation\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica Join BGP Optimize Query Operation Actor.\n */\nclass ActorOptimizeQueryOperationJoinBgp extends bus_optimize_query_operation_1.ActorOptimizeQueryOperation {\n async test(action) {\n return true;\n }\n async run(action) {\n const operation = sparqlalgebrajs_1.Util.mapOperation(action.operation, {\n join(op, factory) {\n if (op.input.every(subInput => subInput.type === 'bgp')) {\n return {\n recurse: false,\n result: factory.createBgp(op.input.flatMap(subInput => subInput.patterns)),\n };\n }\n return {\n recurse: false,\n result: op,\n };\n },\n });\n return { operation, context: action.context };\n }\n}\nexports.ActorOptimizeQueryOperationJoinBgp = ActorOptimizeQueryOperationJoinBgp;\n//# sourceMappingURL=ActorOptimizeQueryOperationJoinBgp.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorOptimizeQueryOperationJoinBgp\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorOptimizeQueryOperationJoinConnected = void 0;\nconst bus_optimize_query_operation_1 = require(\"@comunica/bus-optimize-query-operation\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica Join Connected Optimize Query Operation Actor.\n */\nclass ActorOptimizeQueryOperationJoinConnected extends bus_optimize_query_operation_1.ActorOptimizeQueryOperation {\n async test(action) {\n return true;\n }\n async run(action) {\n const operation = sparqlalgebrajs_1.Util.mapOperation(action.operation, {\n join(op, factory) {\n return {\n recurse: false,\n result: ActorOptimizeQueryOperationJoinConnected.cluster(op, factory),\n };\n },\n });\n return { operation, context: action.context };\n }\n /**\n * Iteratively cluster join entries based on their overlapping variables.\n * @param op A join operation.\n * @param factory An algebra factory.\n */\n static cluster(op, factory) {\n // Initialize each entry to be in a separate cluster\n const initialClusters = op.input.map(subOp => ({\n inScopeVariables: Object.fromEntries(sparqlalgebrajs_1.Util.inScopeVariables(subOp).map(variable => [variable.value, true])),\n entries: [subOp],\n }));\n // Iteratively merge clusters until they don't change anymore\n let oldClusters;\n let newClusters = initialClusters;\n do {\n oldClusters = newClusters;\n newClusters = ActorOptimizeQueryOperationJoinConnected.clusterIteration(oldClusters);\n } while (oldClusters.length !== newClusters.length);\n // Create new join operation of latest clusters\n const subJoins = newClusters.map(cluster => factory.createJoin(cluster.entries));\n return subJoins.length === 1 ? subJoins[0] : factory.createJoin(subJoins, false);\n }\n /**\n * Perform a single clustering iteration.\n * Clusters will be joined if they have overlapping variables.\n * @param oldCluster\n */\n static clusterIteration(oldCluster) {\n const newClusters = [];\n for (const entry of oldCluster) {\n // Try to add entry to a join cluster\n let joined = false;\n for (const newEntry of newClusters) {\n if (ActorOptimizeQueryOperationJoinConnected\n .haveOverlappingVariables(entry.inScopeVariables, newEntry.inScopeVariables)) {\n newEntry.entries = [...newEntry.entries, ...entry.entries];\n newEntry.inScopeVariables = { ...newEntry.inScopeVariables, ...entry.inScopeVariables };\n joined = true;\n break;\n }\n }\n // If none was found, create new cluster\n if (!joined) {\n newClusters.push({\n inScopeVariables: entry.inScopeVariables,\n entries: entry.entries,\n });\n }\n }\n return newClusters;\n }\n /**\n * Check if the two given variable objects are overlapping.\n * @param variablesA A variables objects.\n * @param variablesB A variables objects.\n */\n static haveOverlappingVariables(variablesA, variablesB) {\n for (const variableA of Object.keys(variablesA)) {\n if (variablesB[variableA]) {\n return true;\n }\n }\n return false;\n }\n}\nexports.ActorOptimizeQueryOperationJoinConnected = ActorOptimizeQueryOperationJoinConnected;\n//# sourceMappingURL=ActorOptimizeQueryOperationJoinConnected.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorOptimizeQueryOperationJoinConnected\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationAsk = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\n/**\n * A comunica Ask Query Operation Actor.\n */\nclass ActorQueryOperationAsk extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'ask');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operation, context) {\n // Call other query operations like this:\n const output = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const bindings = bus_query_operation_1.ActorQueryOperation.getSafeBindings(output);\n const execute = () => new Promise((resolve, reject) => {\n // Resolve to true if we find one element, and close immediately\n bindings.bindingsStream.once('data', () => {\n resolve(true);\n bindings.bindingsStream.close();\n });\n // If we reach the end of the stream without finding anything, resolve to false\n bindings.bindingsStream.on('end', () => resolve(false));\n // Reject if an error occurs in the stream\n bindings.bindingsStream.on('error', reject);\n });\n return { type: 'boolean', execute };\n }\n}\nexports.ActorQueryOperationAsk = ActorQueryOperationAsk;\n//# sourceMappingURL=ActorQueryOperationAsk.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationAsk\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationBgpJoin = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL BGP operations by rewriting it as a join operator.\n */\nclass ActorQueryOperationBgpJoin extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'bgp');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operation, context) {\n return this.mediatorQueryOperation.mediate({\n operation: ActorQueryOperationBgpJoin.FACTORY.createJoin(operation.patterns),\n context,\n });\n }\n}\nexports.ActorQueryOperationBgpJoin = ActorQueryOperationBgpJoin;\nActorQueryOperationBgpJoin.FACTORY = new sparqlalgebrajs_1.Factory();\n//# sourceMappingURL=ActorQueryOperationBgpJoin.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationBgpJoin\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationConstruct = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst BindingsToQuadsIterator_1 = require(\"./BindingsToQuadsIterator\");\n/**\n * A comunica Construct Query Operation Actor.\n */\nclass ActorQueryOperationConstruct extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'construct');\n }\n /**\n * Find all variables in a list of triple patterns.\n * @param {Algebra.Pattern[]} patterns An array of triple patterns.\n * @return {RDF.Variable[]} The variables in the triple patterns.\n */\n static getVariables(patterns) {\n return (0, rdf_terms_1.uniqTerms)([].concat\n .apply([], patterns.map(pattern => (0, rdf_terms_1.getVariables)((0, rdf_terms_1.getTerms)(pattern)))));\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operationOriginal, context) {\n // Apply a projection on our CONSTRUCT variables first, as the query may contain other variables as well.\n const variables = ActorQueryOperationConstruct.getVariables(operationOriginal.template);\n const operation = { type: sparqlalgebrajs_1.Algebra.types.PROJECT, input: operationOriginal.input, variables };\n // Evaluate the input query\n const output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ operation, context }));\n // Construct triples using the result based on the pattern.\n const quadStream = new BindingsToQuadsIterator_1.BindingsToQuadsIterator(operationOriginal.template, output.bindingsStream);\n // Let the final metadata contain the estimated number of triples\n const metadata = () => output.metadata().then(meta => ({\n ...meta,\n order: undefined,\n cardinality: {\n type: meta.cardinality.type,\n value: meta.cardinality.value * operationOriginal.template.length,\n },\n canContainUndefs: false,\n availableOrders: undefined,\n }));\n return {\n metadata,\n quadStream,\n type: 'quads',\n };\n }\n}\nexports.ActorQueryOperationConstruct = ActorQueryOperationConstruct;\n//# sourceMappingURL=ActorQueryOperationConstruct.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingsToQuadsIterator = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * Transforms a bindings stream into a quad stream given a quad template.\n *\n * This conforms to the SPARQL 1.1 spec on constructing triples:\n * https://www.w3.org/TR/sparql11-query/#rConstructTriples\n */\nclass BindingsToQuadsIterator extends asynciterator_1.MultiTransformIterator {\n constructor(template, bindingsStream, localizeBlankNodes = true) {\n super(bindingsStream, { autoStart: false });\n this.template = template;\n this.localizeBlankNodes = localizeBlankNodes;\n this.blankNodeCounter = 0;\n }\n /**\n * Bind the given term.\n * If the term is a variable and the variable is bound in the bindings object,\n * return the bindings value.\n * If the term is a variable and the variable is not bound in the bindings object,\n * a falsy value is returned..\n * Otherwise, the term itself is returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Term} term An RDF term.\n * @return {RDF.Term} If the given term is not a variable, the term itself is returned.\n * If the given term is a variable, then the bound term is returned,\n * or a falsy value if it did not exist in the bindings.\n */\n static bindTerm(bindings, term) {\n if (term.termType === 'Variable') {\n return bindings.get(term);\n }\n return term;\n }\n /**\n * Bind the given quad pattern.\n * If one of the terms was a variable AND is not bound in the bindings,\n * a falsy value will be returned.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad} pattern An RDF quad.\n * @return {RDF.Quad} A bound RDF quad or undefined.\n */\n static bindQuad(bindings, pattern) {\n try {\n return (0, rdf_terms_1.mapTerms)(pattern, term => {\n const boundTerm = BindingsToQuadsIterator.bindTerm(bindings, term);\n if (!boundTerm) {\n throw new Error('Unbound term');\n }\n return boundTerm;\n });\n }\n catch {\n // Do nothing\n }\n }\n /**\n * Convert a blank node to a unique blank node in the given context.\n * If the given term is not a blank node, the term itself will be returned.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.Term} term The term that should be localized.\n * @return {RDF.Term} A term.\n */\n static localizeBlankNode(blankNodeCounter, term) {\n if (term.termType === 'BlankNode') {\n return DF.blankNode(`${term.value}${blankNodeCounter}`);\n }\n return term;\n }\n /**\n * Convert the given quad to a quad that only contains unique blank nodes.\n * @param blankNodeCounter A counter value for the blank node.\n * @param {RDF.BaseQuad} pattern The pattern that should be localized.\n * @return {RDF.BaseQuad} A quad.\n */\n static localizeQuad(blankNodeCounter, pattern) {\n return (0, rdf_terms_1.mapTerms)(pattern, term => BindingsToQuadsIterator.localizeBlankNode(blankNodeCounter, term));\n }\n /**\n * Convert the given template to a list of quads based on the given bindings.\n * @param {Bindings} bindings A bindings object.\n * @param {RDF.Quad[]} template A list of quad patterns.\n * @param blankNodeCounter A counter value for the blank node.\n * @return {RDF.Quad[]} A list of quads.\n */\n bindTemplate(bindings, template, blankNodeCounter) {\n let quads = template\n // Bind variables to bound terms\n .map(x => BindingsToQuadsIterator.bindQuad.bind(null, bindings)(x))\n // Remove quads that contained unbound terms, i.e., variables.\n .filter(Boolean);\n if (this.localizeBlankNodes) {\n // Make sure the multiple instantiations of the template contain different blank nodes, as required by SPARQL 1.1.\n quads = quads.map(BindingsToQuadsIterator.localizeQuad.bind(null, blankNodeCounter));\n }\n return quads;\n }\n _createTransformer(bindings) {\n return new asynciterator_1.ArrayIterator(this.bindTemplate(bindings, this.template, this.blankNodeCounter++));\n }\n}\nexports.BindingsToQuadsIterator = BindingsToQuadsIterator;\n//# sourceMappingURL=BindingsToQuadsIterator.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationConstruct\"), exports);\n__exportStar(require(\"./BindingsToQuadsIterator\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationDescribeSubject = void 0;\nconst actor_query_operation_union_1 = require(\"@comunica/actor-query-operation-union\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A comunica Describe Subject Query Operation Actor.\n */\nclass ActorQueryOperationDescribeSubject extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'describe');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operationOriginal, context) {\n // Create separate construct queries for all non-variable terms\n const operations = operationOriginal.terms\n .filter(term => term.termType !== 'Variable')\n .map((term) => {\n // Transform each term to a separate construct operation with S ?p ?o patterns (BGP) for all terms\n const patterns = [\n DF.quad(term, DF.variable('__predicate'), DF.variable('__object')),\n ];\n // eslint-disable-next-line no-return-assign\n patterns.forEach((templatePattern) => templatePattern.type = 'pattern');\n const templateOperation = {\n type: sparqlalgebrajs_1.Algebra.types.BGP,\n patterns: patterns,\n };\n // Create a construct query\n return {\n input: templateOperation,\n template: patterns,\n type: 'construct',\n };\n });\n // If we have variables in the term list,\n // create one separate construct operation to determine these variables using the input pattern.\n if (operations.length !== operationOriginal.terms.length) {\n let variablePatterns = [];\n operationOriginal.terms\n .filter(term => term.termType === 'Variable')\n .forEach((term, i) => {\n // Transform each term to an S ?p ?o pattern in a non-conflicting way\n const patterns = [\n DF.quad(term, DF.variable(`__predicate${i}`), DF.variable(`__object${i}`)),\n ];\n // eslint-disable-next-line no-return-assign\n patterns.forEach((templatePattern) => templatePattern.type = 'pattern');\n variablePatterns = [...variablePatterns, ...patterns];\n });\n // Add a single construct for the variables\n // This requires a join between the input pattern and our variable patterns that form a simple BGP\n operations.push({\n input: {\n type: sparqlalgebrajs_1.Algebra.types.JOIN,\n input: [\n operationOriginal.input,\n { type: sparqlalgebrajs_1.Algebra.types.BGP, patterns: variablePatterns },\n ],\n },\n template: variablePatterns,\n type: sparqlalgebrajs_1.Algebra.types.CONSTRUCT,\n });\n }\n // Evaluate the construct queries\n const outputs = (await Promise.all(operations.map(operation => this.mediatorQueryOperation.mediate({ operation, context }))))\n .map(bus_query_operation_1.ActorQueryOperation.getSafeQuads);\n // Take the union of all quad streams\n const quadStream = new asynciterator_1.UnionIterator(outputs.map(output => output.quadStream), { autoStart: false });\n // Take union of metadata\n const metadata = () => Promise.all(outputs\n .map(x => x.metadata()))\n .then(metadatas => actor_query_operation_union_1.ActorQueryOperationUnion.unionMetadata(metadatas, false));\n return { type: 'quads', quadStream, metadata };\n }\n}\nexports.ActorQueryOperationDescribeSubject = ActorQueryOperationDescribeSubject;\n//# sourceMappingURL=ActorQueryOperationDescribeSubject.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationDescribeSubject\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationDistinctHash = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\n/**\n * A comunica Distinct Hash Query Operation Actor.\n */\nclass ActorQueryOperationDistinctHash extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'distinct');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operation, context) {\n const output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ operation: operation.input, context }));\n const bindingsStream = output.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n async newHashFilter(context) {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes = {};\n return (bindings) => {\n const hash = hashFunction(bindings);\n // eslint-disable-next-line no-return-assign\n return !(hash in hashes) && (hashes[hash] = true);\n };\n }\n}\nexports.ActorQueryOperationDistinctHash = ActorQueryOperationDistinctHash;\n//# sourceMappingURL=ActorQueryOperationDistinctHash.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationDistinctHash\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationExtend = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst sparqlee_1 = require(\"sparqlee\");\n/**\n * A comunica Extend Query Operation Actor.\n *\n * See https://www.w3.org/TR/sparql11-query/#sparqlAlgebra;\n */\nclass ActorQueryOperationExtend extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'extend');\n }\n async testOperation(operation, context) {\n // Will throw error for unsupported opperations\n const _ = Boolean(new sparqlee_1.AsyncEvaluator(operation.expression, bus_query_operation_1.ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation)));\n return true;\n }\n async runOperation(operation, context) {\n const { expression, input, variable } = operation;\n const output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ operation: input, context }));\n const config = { ...bus_query_operation_1.ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation) };\n const evaluator = new sparqlee_1.AsyncEvaluator(expression, config);\n // Transform the stream by extending each Bindings with the expression result\n const transform = async (bindings, next, push) => {\n try {\n const result = await evaluator.evaluate(bindings);\n // Extend operation is undefined when the key already exists\n // We just override it here.\n const extended = bindings.set(variable, result);\n push(extended);\n }\n catch (error) {\n if ((0, sparqlee_1.isExpressionError)(error)) {\n // Errors silently don't actually extend according to the spec\n push(bindings);\n // But let's warn anyway\n this.logWarn(context, `Expression error for extend operation with bindings '${JSON.stringify(bindings)}'`);\n }\n else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n const bindingsStream = output.bindingsStream.transform({ transform });\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const outputMetadata = await output.metadata();\n return { ...outputMetadata, variables: [...outputMetadata.variables, variable] };\n },\n };\n }\n}\nexports.ActorQueryOperationExtend = ActorQueryOperationExtend;\n//# sourceMappingURL=ActorQueryOperationExtend.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationExtend\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationFilterSparqlee = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst sparqlee_1 = require(\"sparqlee\");\n/**\n * A comunica Filter Sparqlee Query Operation Actor.\n */\nclass ActorQueryOperationFilterSparqlee extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'filter');\n }\n async testOperation(operation, context) {\n // Will throw error for unsupported operators\n const config = { ...bus_query_operation_1.ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation) };\n const _ = new sparqlee_1.AsyncEvaluator(operation.expression, config);\n return true;\n }\n async runOperation(operation, context) {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(outputRaw);\n bus_query_operation_1.ActorQueryOperation.validateQueryOutput(output, 'bindings');\n const config = { ...bus_query_operation_1.ActorQueryOperation.getAsyncExpressionContext(context, this.mediatorQueryOperation) };\n const evaluator = new sparqlee_1.AsyncEvaluator(operation.expression, config);\n const transform = async (item, next, push) => {\n try {\n const result = await evaluator.evaluateAsEBV(item);\n if (result) {\n push(item);\n }\n }\n catch (error) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n //\n // > Specifically, FILTERs eliminate any solutions that,\n // > when substituted into the expression, either result in\n // > an effective boolean value of false or produce an error.\n // > ...\n // > These errors have no effect outside of FILTER evaluation.\n // https://www.w3.org/TR/sparql11-query/#expressions\n if ((0, sparqlee_1.isExpressionError)(error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings: (0, bindings_factory_1.bindingsToString)(item) }));\n }\n else {\n bindingsStream.emit('error', error);\n }\n }\n next();\n };\n const bindingsStream = output.bindingsStream.transform({ transform });\n return { type: 'bindings', bindingsStream, metadata: output.metadata };\n }\n}\nexports.ActorQueryOperationFilterSparqlee = ActorQueryOperationFilterSparqlee;\n//# sourceMappingURL=ActorQueryOperationFilterSparqlee.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationFilterSparqlee\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationFromQuad = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica From Query Operation Actor.\n */\nclass ActorQueryOperationFromQuad extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'from');\n }\n /**\n * Create a deep copy of the given operation.\n * @param {Operation} operation An operation.\n * @param {(subOperation: Operation) => Operation} recursiveCb A callback for recursive operation calls.\n * @return {Operation} The copied operation.\n */\n static copyOperation(operation, recursiveCb) {\n const copiedOperation = {};\n for (const key of Object.keys(operation)) {\n if (Array.isArray(operation[key]) && key !== 'template') {\n // We exclude the 'template' entry, as we don't want to modify the template value of construct operations\n if (key === 'variables') {\n copiedOperation[key] = operation[key];\n }\n else {\n copiedOperation[key] = operation[key].map(recursiveCb);\n }\n }\n else if (ActorQueryOperationFromQuad.ALGEBRA_TYPES.includes(operation[key].type)) {\n copiedOperation[key] = recursiveCb(operation[key]);\n }\n else {\n copiedOperation[key] = operation[key];\n }\n }\n return copiedOperation;\n }\n /**\n * Recursively transform the given operation to use the given graphs as default graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} defaultGraphs Graph terms.\n * @return {Operation} A new operation.\n */\n static applyOperationDefaultGraph(operation, defaultGraphs) {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n if (operation.type === 'bgp') {\n return ActorQueryOperationFromQuad.joinOperations(operation.patterns.map((pattern) => {\n if (pattern.graph.termType !== 'DefaultGraph') {\n return ActorQueryOperationFromQuad.FACTORY.createBgp([pattern]);\n }\n const bgps = defaultGraphs.map((graph) => ActorQueryOperationFromQuad.FACTORY.createBgp([ActorQueryOperationFromQuad.FACTORY\n .createPattern(pattern.subject, pattern.predicate, pattern.object, graph)]));\n return ActorQueryOperationFromQuad.unionOperations(bgps);\n }));\n }\n if (operation.graph.termType !== 'DefaultGraph') {\n return operation;\n }\n const paths = defaultGraphs.map((graph) => {\n if (operation.type === 'path') {\n return ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n }\n return ActorQueryOperationFromQuad.FACTORY\n .createPattern(operation.subject, operation.predicate, operation.object, graph);\n });\n return ActorQueryOperationFromQuad.unionOperations(paths);\n }\n return ActorQueryOperationFromQuad.copyOperation(operation, (subOperation) => this.applyOperationDefaultGraph(subOperation, defaultGraphs));\n }\n /**\n * Recursively transform the given operation to use the given graphs as named graph\n * This will (possibly) create a new operation and not modify the given operation.\n * @param {Operation} operation An operation.\n * @param {RDF.Term[]} namedGraphs Graph terms.\n * @param {RDF.Term[]} defaultGraphs Default graph terms.\n * @return {Operation} A new operation.\n */\n static applyOperationNamedGraph(operation, namedGraphs, defaultGraphs) {\n // If the operation is a BGP or Path, change the graph.\n if ((operation.type === 'bgp' && operation.patterns.length > 0) ||\n operation.type === 'path' ||\n operation.type === 'pattern') {\n const patternGraph = operation.type === 'bgp' ? operation.patterns[0].graph : operation.graph;\n if (patternGraph.termType === 'DefaultGraph') {\n // SPARQL spec (8.2) describes that when FROM NAMED's are used without a FROM, the default graph must be empty.\n // The FROMs are transformed before this step to a named node, so this will not apply to this case anymore.\n return { type: sparqlalgebrajs_1.Algebra.types.BGP, patterns: [] };\n }\n if (patternGraph.termType === 'Variable') {\n if (namedGraphs.length === 1) {\n const graph = namedGraphs[0];\n // If the pattern graph is a variable, replace the graph and bind the variable using VALUES\n const bindings = {};\n bindings[`?${patternGraph.value}`] = graph;\n const values = ActorQueryOperationFromQuad.FACTORY\n .createValues([patternGraph], [bindings]);\n let pattern;\n if (operation.type === 'bgp') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createBgp(operation.patterns.map((pat) => ActorQueryOperationFromQuad.FACTORY\n .createPattern(pat.subject, pat.predicate, pat.object, graph)));\n }\n else if (operation.type === 'path') {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPath(operation.subject, operation.predicate, operation.object, graph);\n }\n else {\n pattern = ActorQueryOperationFromQuad.FACTORY\n .createPattern(operation.subject, operation.predicate, operation.object, graph);\n }\n return ActorQueryOperationFromQuad.FACTORY.createJoin([values, pattern]);\n }\n // If the pattern graph is a variable, take the union of the pattern applied to each available named graph\n return ActorQueryOperationFromQuad.unionOperations(namedGraphs.map((graph) => ActorQueryOperationFromQuad.applyOperationNamedGraph(operation, [graph], defaultGraphs)));\n }\n // The pattern's graph is defined (including the default graphs)\n const isNamedGraphAvailable = [...namedGraphs, ...defaultGraphs].some((namedGraph) => namedGraph.equals(patternGraph));\n if (isNamedGraphAvailable) {\n // Return the pattern as-is if the pattern's graph was selected in a FROM NAMED\n return operation;\n }\n // No-op if the pattern's graph was not selected in a FROM NAMED.\n return { type: sparqlalgebrajs_1.Algebra.types.BGP, patterns: [] };\n }\n return ActorQueryOperationFromQuad.copyOperation(operation, (subOperation) => this.applyOperationNamedGraph(subOperation, namedGraphs, defaultGraphs));\n }\n /**\n * Transform the given array of operations into a join operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Join} A join operation.\n */\n static joinOperations(operations) {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createJoin(operations);\n }\n throw new Error('A join can only be applied on at least one operation');\n }\n /**\n * Transform the given array of operations into a union operation.\n * @param {Operation[]} operations An array of operations, must contain at least one operation.\n * @return {Union} A union operation.\n */\n static unionOperations(operations) {\n if (operations.length === 1) {\n return operations[0];\n }\n if (operations.length > 1) {\n return ActorQueryOperationFromQuad.FACTORY.createUnion(operations);\n }\n throw new Error('A union can only be applied on at least one operation');\n }\n /**\n * Transform an operation based on the default and named graphs in the pattern.\n *\n * FROM sets the default graph.\n * If multiple are available, take the union of the operation for all of them at quad-pattern level.\n *\n * FROM NAMED indicates which named graphs are available.\n * This will rewrite the query so that only triples from the given named graphs can be selected.\n *\n * @param {From} pattern A from operation.\n * @return {Operation} The transformed operation.\n */\n static createOperation(pattern) {\n let operation = pattern.input;\n if (pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationDefaultGraph(operation, pattern.default);\n }\n if (pattern.named.length > 0 || pattern.default.length > 0) {\n operation = ActorQueryOperationFromQuad.applyOperationNamedGraph(operation, pattern.named, pattern.default);\n }\n return operation;\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operationOriginal, context) {\n const operation = ActorQueryOperationFromQuad.createOperation(operationOriginal);\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\nexports.ActorQueryOperationFromQuad = ActorQueryOperationFromQuad;\nActorQueryOperationFromQuad.FACTORY = new sparqlalgebrajs_1.Factory();\nActorQueryOperationFromQuad.ALGEBRA_TYPES = Object.keys(sparqlalgebrajs_1.Algebra.types).map(key => sparqlalgebrajs_1.Algebra.types[key]);\n//# sourceMappingURL=ActorQueryOperationFromQuad.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationFromQuad\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationGroup = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst sparqlee_1 = require(\"sparqlee\");\nconst GroupsState_1 = require(\"./GroupsState\");\n/**\n * A comunica Group Query Operation Actor.\n */\nclass ActorQueryOperationGroup extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'group');\n }\n async testOperation(operation, context) {\n for (const aggregate of operation.aggregates) {\n // Will throw for unsupported expressions\n const _ = new sparqlee_1.AsyncEvaluator(aggregate.expression, bus_query_operation_1.ActorQueryOperation.getAsyncExpressionContext(context));\n }\n return true;\n }\n async runOperation(operation, context) {\n // Create a hash function\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n // Get result stream for the input query\n const { input, aggregates } = operation;\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: input, context });\n const output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(outputRaw);\n // The variables in scope are the variables on which we group, i.e. pattern.variables.\n // For 'GROUP BY ?x, ?z', this is [?x, ?z], for 'GROUP by expr(?x) as ?e' this is [?e].\n // But also in scope are the variables defined by the aggregations, since GROUP has to handle this.\n const variables = [\n ...operation.variables,\n ...aggregates.map(agg => agg.variable),\n ];\n const sparqleeConfig = bus_query_operation_1.ActorQueryOperation.getAsyncExpressionContext(context);\n // Return a new promise that completes when the stream has ended or when\n // an error occurs\n return new Promise((resolve, reject) => {\n const groups = new GroupsState_1.GroupsState(hashFunction, operation, sparqleeConfig);\n // Phase 2: Collect aggregator results\n // We can only return when the binding stream ends, when that happens\n // we return the identified groups. Which are nothing more than Bindings\n // of the grouping variables merged with the aggregate variables\n output.bindingsStream.on('end', async () => {\n try {\n const bindingsStream = new asynciterator_1.ArrayIterator(await groups.collectResults(), { autoStart: false });\n resolve({\n type: 'bindings',\n bindingsStream,\n metadata: async () => ({ ...await output.metadata(), variables }),\n });\n }\n catch (error) {\n reject(error);\n }\n });\n // Make sure to propagate any errors in the binding stream\n output.bindingsStream.on('error', reject);\n // Phase 1: Consume the stream, identify the groups and populate the aggregators.\n // We need to bind this after the 'error' and 'end' listeners to avoid the\n // stream having ended before those listeners are bound.\n output.bindingsStream.on('data', bindings => {\n groups.consumeBindings(bindings).catch(reject);\n });\n });\n }\n}\nexports.ActorQueryOperationGroup = ActorQueryOperationGroup;\n//# sourceMappingURL=ActorQueryOperationGroup.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GroupsState = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst sparqlee_1 = require(\"sparqlee\");\nconst DF = new rdf_data_factory_1.DataFactory();\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * A state manager for the groups constructed by consuming the bindings-stream.\n */\nclass GroupsState {\n constructor(hashFunction, pattern, sparqleeConfig) {\n this.hashFunction = hashFunction;\n this.pattern = pattern;\n this.sparqleeConfig = sparqleeConfig;\n this.groups = new Map();\n this.groupsInitializer = new Map();\n this.groupVariables = new Set(this.pattern.variables.map(x => x.value));\n this.distinctHashes = pattern.aggregates.some(({ distinct }) => distinct) ?\n new Map() :\n null;\n this.waitCounter = 1;\n this.resultHasBeenCalled = false;\n }\n /**\n * - Consumes a stream binding\n * - Find the corresponding group and create one if need be\n * - Feeds the binding to the group's aggregators\n *\n * @param {Bindings} bindings - The Bindings to consume\n */\n consumeBindings(bindings) {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n // We increment the counter and decrement him when put action is performed.\n this.waitCounter++;\n // Select the bindings on which we group\n const grouper = bindings\n .filter((_, variable) => this.groupVariables.has(variable.value));\n const groupHash = this.hashBindings(grouper);\n // First member of group -> create new group\n let groupInitializer = this.groupsInitializer.get(groupHash);\n let res;\n if (!groupInitializer) {\n // Initialize state for all aggregators for new group\n groupInitializer = (async () => {\n const aggregators = {};\n await Promise.all(this.pattern.aggregates.map(async (aggregate) => {\n const key = aggregate.variable.value;\n aggregators[key] = new sparqlee_1.AsyncAggregateEvaluator(aggregate, this.sparqleeConfig);\n await aggregators[key].put(bindings);\n }));\n if (this.distinctHashes) {\n const bindingsHash = this.hashBindings(bindings);\n this.distinctHashes.set(groupHash, new Set([bindingsHash]));\n }\n const group = { aggregators, bindings: grouper };\n this.groups.set(groupHash, group);\n this.subtractWaitCounterAndCollect();\n return group;\n })();\n this.groupsInitializer.set(groupHash, groupInitializer);\n res = groupInitializer;\n }\n else {\n const groupInitializerDefined = groupInitializer;\n res = (async () => {\n const group = await groupInitializerDefined;\n await Promise.all(this.pattern.aggregates.map(async (aggregate) => {\n // If distinct, check first whether we have inserted these values already\n if (aggregate.distinct) {\n const hash = this.hashBindings(bindings);\n if (this.distinctHashes.get(groupHash).has(hash)) {\n return;\n }\n this.distinctHashes.get(groupHash).add(hash);\n }\n const variable = aggregate.variable.value;\n await group.aggregators[variable].put(bindings);\n }));\n })().then(() => {\n this.subtractWaitCounterAndCollect();\n });\n }\n return res;\n }\n subtractWaitCounterAndCollect() {\n if (--this.waitCounter === 0) {\n this.handleResultCollection();\n }\n }\n handleResultCollection() {\n // Collect groups\n let rows = [...this.groups].map(([_, group]) => {\n const { bindings: groupBindings, aggregators } = group;\n // Collect aggregator bindings\n // If the aggregate errorred, the result will be undefined\n let returnBindings = groupBindings;\n for (const variable in aggregators) {\n const value = aggregators[variable].result();\n if (value) {\n // Filter undefined\n returnBindings = returnBindings.set(DF.variable(variable), value);\n }\n }\n // Merge grouping bindings and aggregator bindings\n return returnBindings;\n });\n // Case: No Input\n // Some aggregators still define an output on the empty input\n // Result is a single Bindings\n if (rows.length === 0 && this.groupVariables.size === 0) {\n const single = [];\n for (const aggregate of this.pattern.aggregates) {\n const key = aggregate.variable;\n const value = sparqlee_1.AsyncAggregateEvaluator.emptyValue(aggregate);\n if (value !== undefined) {\n single.push([key, value]);\n }\n }\n rows = [BF.bindings(single)];\n }\n this.waitResolver(rows);\n }\n resultCheck() {\n if (this.resultHasBeenCalled) {\n return Promise.reject(new Error('Calling any function after calling collectResult is invalid.'));\n }\n }\n /**\n * Collect the result of the final state. This returns a Bindings per group,\n * and a (possibly empty) Bindings in case no Bindings have been consumed yet.\n * You can only call this method once, after calling this method,\n * calling any function on this will result in an error being thrown.\n */\n collectResults() {\n const check = this.resultCheck();\n if (check) {\n return check;\n }\n this.resultHasBeenCalled = true;\n const res = new Promise(resolve => {\n this.waitResolver = resolve;\n });\n this.subtractWaitCounterAndCollect();\n return res;\n }\n /**\n * @param {Bindings} bindings - Bindings to hash\n */\n hashBindings(bindings) {\n return this.hashFunction(bindings);\n }\n}\nexports.GroupsState = GroupsState;\n//# sourceMappingURL=GroupsState.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationGroup\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationJoin = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\n/**\n * A comunica Join Query Operation Actor.\n */\nclass ActorQueryOperationJoin extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'join');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operationOriginal, context) {\n const entries = (await Promise.all(operationOriginal.input\n .map(async (subOperation) => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: bus_query_operation_1.ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n return this.mediatorJoin.mediate({ type: 'inner', entries, context });\n }\n}\nexports.ActorQueryOperationJoin = ActorQueryOperationJoin;\n//# sourceMappingURL=ActorQueryOperationJoin.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationJoin\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationLeftJoin = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst sparqlee_1 = require(\"sparqlee\");\n/**\n * A comunica LeftJoin Query Operation Actor.\n */\nclass ActorQueryOperationLeftJoin extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'leftjoin');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operationOriginal, context) {\n // Delegate to join bus\n const entries = (await Promise.all(operationOriginal.input\n .map(async (subOperation) => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: bus_query_operation_1.ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n const joined = await this.mediatorJoin.mediate({ type: 'optional', entries, context });\n // If the pattern contains an expression, filter the resulting stream\n if (operationOriginal.expression) {\n const config = { ...bus_query_operation_1.ActorQueryOperation.getAsyncExpressionContext(context) };\n const evaluator = new sparqlee_1.AsyncEvaluator(operationOriginal.expression, config);\n const bindingsStream = joined.bindingsStream\n .transform({\n autoStart: false,\n transform: async (bindings, done, push) => {\n try {\n const result = await evaluator.evaluateAsEBV(bindings);\n if (result) {\n push(bindings);\n }\n }\n catch (error) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // Left Join is defined in terms of Filter (https://www.w3.org/TR/sparql11-query/#defn_algJoin),\n // and Filter requires this (https://www.w3.org/TR/sparql11-query/#expressions).\n if ((0, sparqlee_1.isExpressionError)(error)) {\n // In many cases, this is a user error, where the user should manually cast the variable to a string.\n // In order to help users debug this, we should report these errors via the logger as warnings.\n this.logWarn(context, 'Error occurred while filtering.', () => ({ error, bindings }));\n }\n else {\n bindingsStream.emit('error', error);\n }\n }\n done();\n },\n });\n joined.bindingsStream = bindingsStream;\n }\n return joined;\n }\n}\nexports.ActorQueryOperationLeftJoin = ActorQueryOperationLeftJoin;\n//# sourceMappingURL=ActorQueryOperationLeftJoin.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationLeftJoin\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationMinus = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\n/**\n * A comunica Minus Query Operation Actor.\n */\nclass ActorQueryOperationMinus extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'minus');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operationOriginal, context) {\n const entries = (await Promise.all(operationOriginal.input\n .map(async (subOperation) => ({\n output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),\n operation: subOperation,\n }))))\n .map(({ output, operation }) => ({\n output: bus_query_operation_1.ActorQueryOperation.getSafeBindings(output),\n operation,\n }));\n return this.mediatorJoin.mediate({ type: 'minus', entries, context });\n }\n}\nexports.ActorQueryOperationMinus = ActorQueryOperationMinus;\n//# sourceMappingURL=ActorQueryOperationMinus.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationMinus\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationNop = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation)\n * actor that handles SPARQL nop operations.\n */\nclass ActorQueryOperationNop extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'nop');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operation, context) {\n return {\n bindingsStream: new asynciterator_1.SingletonIterator(BF.bindings()),\n metadata: () => Promise.resolve({\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n };\n }\n}\nexports.ActorQueryOperationNop = ActorQueryOperationNop;\n//# sourceMappingURL=ActorQueryOperationNop.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationNop\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationOrderBySparqlee = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst sparqlee_1 = require(\"sparqlee\");\nconst SortIterator_1 = require(\"./SortIterator\");\n/**\n * A comunica OrderBy Sparqlee Query Operation Actor.\n */\nclass ActorQueryOperationOrderBySparqlee extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'orderby');\n this.window = args.window ?? Number.POSITIVE_INFINITY;\n }\n async testOperation(operation, context) {\n // Will throw error for unsupported operators\n for (let expr of operation.expressions) {\n expr = this.extractSortExpression(expr);\n const _ = new sparqlee_1.AsyncEvaluator(expr, bus_query_operation_1.ActorQueryOperation.getAsyncExpressionContext(context));\n }\n return true;\n }\n async runOperation(operation, context) {\n const outputRaw = await this.mediatorQueryOperation.mediate({ operation: operation.input, context });\n const output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(outputRaw);\n const options = { window: this.window };\n const sparqleeConfig = { ...bus_query_operation_1.ActorQueryOperation.getAsyncExpressionContext(context) };\n let { bindingsStream } = output;\n // Sorting backwards since the first one is the most important therefore should be ordered last.\n for (let i = operation.expressions.length - 1; i >= 0; i--) {\n let expr = operation.expressions[i];\n const isAscending = this.isAscending(expr);\n expr = this.extractSortExpression(expr);\n // Transform the stream by annotating it with the expr result\n const evaluator = new sparqlee_1.AsyncEvaluator(expr, sparqleeConfig);\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n const transform = async (bindings, next, push) => {\n try {\n const result = await evaluator.evaluate(bindings);\n push({ bindings, result });\n }\n catch (error) {\n // We ignore all Expression errors.\n // Other errors (likely programming mistakes) are still propagated.\n // I can't recall where this is defined in the spec.\n if (!(0, sparqlee_1.isExpressionError)(error)) {\n bindingsStream.emit('error', error);\n }\n push({ bindings, result: undefined });\n }\n next();\n };\n const transformedStream = bindingsStream.transform({ transform });\n // Sort the annoted stream\n const sortedStream = new SortIterator_1.SortIterator(transformedStream, (left, right) => (0, sparqlee_1.orderTypes)(left.result, right.result, isAscending), options);\n // Remove the annotation\n bindingsStream = sortedStream.map(({ bindings, result }) => bindings);\n }\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n // Remove descending operator if necessary\n extractSortExpression(expr) {\n const { expressionType, operator } = expr;\n if (expressionType !== sparqlalgebrajs_1.Algebra.expressionTypes.OPERATOR) {\n return expr;\n }\n return operator === 'desc' ?\n expr.args[0] :\n expr;\n }\n isAscending(expr) {\n const { expressionType, operator } = expr;\n if (expressionType !== sparqlalgebrajs_1.Algebra.expressionTypes.OPERATOR) {\n return true;\n }\n return operator !== 'desc';\n }\n}\nexports.ActorQueryOperationOrderBySparqlee = ActorQueryOperationOrderBySparqlee;\n//# sourceMappingURL=ActorQueryOperationOrderBySparqlee.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SortIterator = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\n// Based on https://github.com/LinkedDataFragments/Client.js/blob/master/lib/sparql/SortIterator.js\nclass SortIterator extends asynciterator_1.TransformIterator {\n constructor(source, sort, options) {\n super(source, options);\n // The `window` parameter indicates the length of the sliding window to apply sorting\n const window = options && options.window;\n this.windowLength = Number.isFinite(window) && window > 0 ? window : Number.POSITIVE_INFINITY;\n this.sort = sort;\n this.sorted = [];\n }\n // Reads the smallest item in the current sorting window\n _read(count, done) {\n let item;\n let { length } = this.sorted;\n // Try to read items until we reach the desired window length\n while (length !== this.windowLength) {\n item = this.source.read();\n if (item === null) {\n break;\n }\n // Insert the item in the sorted window (smallest last)\n let left = 0;\n let right = length - 1;\n let mid;\n let order;\n while (left <= right) {\n mid = Math.trunc((left + right) / 2);\n order = this.sort(item, this.sorted[mid]);\n if (order < 0) {\n left = mid + 1;\n }\n else if (order > 0) {\n right = mid - 1;\n }\n else {\n left = mid;\n right = -1;\n }\n }\n this.sorted.splice(left, 0, item);\n length++;\n }\n // Push the smallest item in the window\n if (length === this.windowLength) {\n this._push(this.sorted.pop());\n }\n done();\n }\n // Flushes remaining data after the source has ended\n _flush(done) {\n let { length } = this.sorted;\n while (length--) {\n this._push(this.sorted.pop());\n }\n done();\n }\n}\nexports.SortIterator = SortIterator;\n//# sourceMappingURL=SortIterator.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationOrderBySparqlee\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationPathAlt = void 0;\nconst actor_abstract_path_1 = require(\"@comunica/actor-abstract-path\");\nconst actor_query_operation_union_1 = require(\"@comunica/actor-query-operation-union\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica Path Alt Query Operation Actor.\n */\nclass ActorQueryOperationPathAlt extends actor_abstract_path_1.ActorAbstractPath {\n constructor(args) {\n super(args, sparqlalgebrajs_1.Algebra.types.ALT);\n }\n async runOperation(operation, context) {\n const predicate = operation.predicate;\n const subOperations = (await Promise.all(predicate.input\n .map(subPredicate => this.mediatorQueryOperation.mediate({\n context,\n operation: actor_abstract_path_1.ActorAbstractPath.FACTORY\n .createPath(operation.subject, subPredicate, operation.object, operation.graph),\n }))))\n .map(bus_query_operation_1.ActorQueryOperation.getSafeBindings);\n const bindingsStream = new asynciterator_1.UnionIterator(subOperations.map(op => op.bindingsStream), { autoStart: false });\n const metadata = () => Promise.all(subOperations.map(output => output.metadata()))\n .then(subMeta => actor_query_operation_union_1.ActorQueryOperationUnion.unionMetadata(subMeta, true));\n return {\n type: 'bindings',\n bindingsStream,\n metadata,\n };\n }\n}\nexports.ActorQueryOperationPathAlt = ActorQueryOperationPathAlt;\n//# sourceMappingURL=ActorQueryOperationPathAlt.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationPathAlt\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationPathInv = void 0;\nconst actor_abstract_path_1 = require(\"@comunica/actor-abstract-path\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica Path Inv Query Operation Actor.\n */\nclass ActorQueryOperationPathInv extends actor_abstract_path_1.ActorAbstractPath {\n constructor(args) {\n super(args, sparqlalgebrajs_1.Algebra.types.INV);\n }\n async runOperation(operation, context) {\n const predicate = operation.predicate;\n const invPath = actor_abstract_path_1.ActorAbstractPath.FACTORY\n .createPath(operation.object, predicate.path, operation.subject, operation.graph);\n return this.mediatorQueryOperation.mediate({ operation: invPath, context });\n }\n}\nexports.ActorQueryOperationPathInv = ActorQueryOperationPathInv;\n//# sourceMappingURL=ActorQueryOperationPathInv.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationPathInv\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationPathLink = void 0;\nconst actor_abstract_path_1 = require(\"@comunica/actor-abstract-path\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica Path Link Query Operation Actor.\n */\nclass ActorQueryOperationPathLink extends actor_abstract_path_1.ActorAbstractPath {\n constructor(args) {\n super(args, sparqlalgebrajs_1.Algebra.types.LINK);\n }\n async runOperation(operationOriginal, context) {\n const predicate = operationOriginal.predicate;\n const operation = actor_abstract_path_1.ActorAbstractPath.FACTORY.createPattern(operationOriginal.subject, predicate.iri, operationOriginal.object, operationOriginal.graph);\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\nexports.ActorQueryOperationPathLink = ActorQueryOperationPathLink;\n//# sourceMappingURL=ActorQueryOperationPathLink.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationPathLink\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationPathNps = void 0;\nconst actor_abstract_path_1 = require(\"@comunica/actor-abstract-path\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica Path Nps Query Operation Actor.\n */\nclass ActorQueryOperationPathNps extends actor_abstract_path_1.ActorAbstractPath {\n constructor(args) {\n super(args, sparqlalgebrajs_1.Algebra.types.NPS);\n }\n async runOperation(operation, context) {\n const predicate = operation.predicate;\n const blank = this.generateVariable(operation);\n const pattern = actor_abstract_path_1.ActorAbstractPath.FACTORY\n .createPattern(operation.subject, blank, operation.object, operation.graph);\n const output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ operation: pattern, context }));\n // Remove the generated blank nodes from the bindings\n const bindingsStream = output.bindingsStream.transform({\n filter(bindings) {\n return !predicate.iris.some(iri => iri.equals(bindings.get(blank)));\n },\n transform(item, next, push) {\n push(item.delete(blank));\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n}\nexports.ActorQueryOperationPathNps = ActorQueryOperationPathNps;\n//# sourceMappingURL=ActorQueryOperationPathNps.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationPathNps\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationPathOneOrMore = void 0;\nconst actor_abstract_path_1 = require(\"@comunica/actor-abstract-path\");\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * A comunica Path OneOrMore Query Operation Actor.\n */\nclass ActorQueryOperationPathOneOrMore extends actor_abstract_path_1.ActorAbstractPath {\n constructor(args) {\n super(args, sparqlalgebrajs_1.Algebra.types.ONE_OR_MORE_PATH);\n }\n async runOperation(operation, context) {\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n context = distinct.context;\n const predicate = operation.predicate;\n if (operation.subject.termType !== 'Variable' && operation.object.termType === 'Variable') {\n // Get all the results of applying this once, then do zeroOrMore for those\n const single = actor_abstract_path_1.ActorAbstractPath.FACTORY.createDistinct(actor_abstract_path_1.ActorAbstractPath.FACTORY.createPath(operation.subject, predicate.path, operation.object, operation.graph));\n const results = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ context, operation: single }));\n const objectVar = operation.object;\n // All branches need to share the same termHashes to prevent duplicates\n const termHashes = {};\n const bindingsStream = new asynciterator_1.MultiTransformIterator(results.bindingsStream, {\n multiTransform: (bindings) => {\n const val = bindings.get(objectVar);\n const graph = operation.graph.termType === 'Variable' ? bindings.get(operation.graph) : operation.graph;\n return new asynciterator_1.TransformIterator(async () => {\n const it = new asynciterator_1.BufferedIterator();\n await this.getObjectsPredicateStar(val, predicate.path, operation.graph, context, termHashes, it, { count: 0 });\n return it.transform({\n transform(item, next, push) {\n let binding = BF.bindings([[objectVar, item]]);\n if (operation.graph.termType === 'Variable') {\n binding = binding.set(operation.graph, graph);\n }\n push(binding);\n next();\n },\n });\n }, { maxBufferSize: 128 });\n },\n autoStart: false,\n });\n const variables = operation.graph.termType === 'Variable' ? [objectVar, operation.graph] : [objectVar];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async () => ({ ...await results.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Get all the results of subjects with same predicate, but once, then fill in first variable for those\n const single = actor_abstract_path_1.ActorAbstractPath.FACTORY.createDistinct(actor_abstract_path_1.ActorAbstractPath.FACTORY\n .createPath(operation.subject, operation.predicate.path, operation.object, operation.graph));\n const results = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ context, operation: single }));\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n const termHashes = {};\n const bindingsStream = new asynciterator_1.MultiTransformIterator(results.bindingsStream, {\n multiTransform: (bindings) => {\n const subject = bindings.get(subjectVar);\n const object = bindings.get(objectVar);\n const graph = operation.graph.termType === 'Variable' ? bindings.get(operation.graph) : operation.graph;\n return new asynciterator_1.TransformIterator(async () => {\n const it = new asynciterator_1.BufferedIterator();\n await this.getSubjectAndObjectBindingsPredicateStar(subjectVar, objectVar, subject, object, predicate.path, graph, context, termHashes, {}, it, { count: 0 });\n return it.transform({\n transform(item, next, push) {\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph);\n }\n push(item);\n next();\n },\n });\n }, { maxBufferSize: 128 });\n },\n autoStart: false,\n });\n const variables = operation.graph.termType === 'Variable' ?\n [subjectVar, objectVar, operation.graph] :\n [subjectVar, objectVar];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async () => ({ ...await results.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType !== 'Variable') {\n return this.mediatorQueryOperation.mediate({\n context,\n operation: actor_abstract_path_1.ActorAbstractPath.FACTORY.createPath(operation.object, actor_abstract_path_1.ActorAbstractPath.FACTORY.createOneOrMorePath(actor_abstract_path_1.ActorAbstractPath.FACTORY.createInv(predicate.path)), operation.subject, operation.graph),\n });\n }\n // If (!sVar && !oVar)\n const variable = this.generateVariable();\n const results = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: actor_abstract_path_1.ActorAbstractPath.FACTORY.createPath(operation.subject, predicate, variable, operation.graph),\n }));\n const bindingsStream = results.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n const binding = operation.graph.termType === 'Variable' ?\n BF.bindings([[operation.graph, item.get(operation.graph)]]) :\n BF.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async () => ({\n ...await results.metadata(),\n variables: operation.graph.termType === 'Variable' ? [operation.graph] : [],\n }),\n };\n }\n}\nexports.ActorQueryOperationPathOneOrMore = ActorQueryOperationPathOneOrMore;\n//# sourceMappingURL=ActorQueryOperationPathOneOrMore.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationPathOneOrMore\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationPathSeq = void 0;\nconst actor_abstract_path_1 = require(\"@comunica/actor-abstract-path\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica Path Seq Query Operation Actor.\n */\nclass ActorQueryOperationPathSeq extends actor_abstract_path_1.ActorAbstractPath {\n constructor(args) {\n super(args, sparqlalgebrajs_1.Algebra.types.SEQ);\n }\n async runOperation(operationOriginal, context) {\n const predicate = operationOriginal.predicate;\n let joiner = operationOriginal.subject;\n const generatedVariableNames = [];\n const entries = await Promise.all(predicate.input\n .map((subPredicate, i) => {\n const nextJoiner = i === predicate.input.length - 1 ? operationOriginal.object : this.generateVariable(operationOriginal, `b${i}`);\n const operation = actor_abstract_path_1.ActorAbstractPath.FACTORY\n .createPath(joiner, subPredicate, nextJoiner, operationOriginal.graph);\n const output = this.mediatorQueryOperation.mediate({\n context,\n operation,\n });\n joiner = nextJoiner;\n if (i < predicate.input.length - 1) {\n generatedVariableNames.push(nextJoiner);\n }\n return { output, operation };\n })\n .map(async ({ output, operation }) => ({\n output: bus_query_operation_1.ActorQueryOperation.getSafeBindings(await output),\n operation,\n })));\n const join = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: 'inner', entries, context }));\n // Remove the generated variable from the bindings\n const bindingsStream = join.bindingsStream.transform({\n transform(item, next, push) {\n for (const generatedVariableName of generatedVariableNames) {\n item = item.delete(generatedVariableName);\n }\n push(item);\n next();\n },\n });\n // Remove the generated variable from the list of variables\n return {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const joinMetadata = await join.metadata();\n const variables = joinMetadata.variables.filter(variable => !generatedVariableNames\n .some(generatedVariableName => generatedVariableName.value === variable.value));\n return { ...joinMetadata, variables };\n },\n };\n }\n}\nexports.ActorQueryOperationPathSeq = ActorQueryOperationPathSeq;\n//# sourceMappingURL=ActorQueryOperationPathSeq.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationPathSeq\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationPathZeroOrMore = void 0;\nconst actor_abstract_path_1 = require(\"@comunica/actor-abstract-path\");\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * A comunica Path ZeroOrMore Query Operation Actor.\n */\nclass ActorQueryOperationPathZeroOrMore extends actor_abstract_path_1.ActorAbstractPath {\n constructor(args) {\n super(args, sparqlalgebrajs_1.Algebra.types.ZERO_OR_MORE_PATH);\n }\n async runOperation(operation, context) {\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n context = distinct.context;\n const predicate = operation.predicate;\n const sVar = operation.subject.termType === 'Variable';\n const oVar = operation.object.termType === 'Variable';\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Query ?s ?p ?o, to get all possible namedNodes in de the db\n const predVar = this.generateVariable(operation);\n const single = actor_abstract_path_1.ActorAbstractPath.FACTORY\n .createPattern(operation.subject, predVar, operation.object, operation.graph);\n const results = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ context, operation: single }));\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n // Set with all namedNodes we have already started a predicate* search from\n const entities = new Set();\n const termHashes = {};\n const bindingsStream = new asynciterator_1.MultiTransformIterator(results.bindingsStream, {\n multiTransform: (bindings) => {\n // Get the subject and object of the triples (?s ?p ?o) and extract graph if it was a variable\n const subject = bindings.get(subjectVar);\n const object = bindings.get(objectVar);\n const graph = operation.graph.termType === 'Variable' ?\n bindings.get(operation.graph) :\n operation.graph;\n // Make a hash of namedNode + graph to remember from where we already started a search\n const subjectGraphHash = (0, rdf_string_1.termToString)(subject) + (0, rdf_string_1.termToString)(graph);\n const objectGraphHash = (0, rdf_string_1.termToString)(object) + (0, rdf_string_1.termToString)(graph);\n return new asynciterator_1.TransformIterator(async () => {\n // If no new namedNodes in this triple, return nothing\n if (entities.has(subjectGraphHash) && entities.has(objectGraphHash)) {\n return new asynciterator_1.EmptyIterator();\n }\n // Set up an iterator to which getSubjectAndObjectBindingsPredicateStar will push solutions\n const it = new asynciterator_1.BufferedIterator();\n const counter = { count: 0 };\n // If not started from this namedNode (subject in triple) in this graph, start a search\n if (!entities.has(subjectGraphHash)) {\n entities.add(subjectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(subjectVar, objectVar, subject, subject, predicate.path, graph, context, termHashes, {}, it, counter);\n }\n // If not started from this namedNode (object in triple) in this graph, start a search\n if (!entities.has(objectGraphHash)) {\n entities.add(objectGraphHash);\n await this.getSubjectAndObjectBindingsPredicateStar(subjectVar, objectVar, object, object, predicate.path, graph, context, termHashes, {}, it, counter);\n }\n return it.transform({\n transform(item, next, push) {\n // If the graph was a variable, fill in it's binding (we got it from the ?s ?p ?o binding)\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph);\n }\n push(item);\n next();\n },\n });\n });\n },\n });\n const variables = operation.graph.termType === 'Variable' ?\n [subjectVar, operation.object, operation.graph] :\n [subjectVar, operation.object];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async () => ({ ...await results.metadata(), variables }),\n };\n }\n if (!sVar && !oVar) {\n const variable = this.generateVariable();\n const starEval = await this.getObjectsPredicateStarEval(operation.subject, variable, predicate.path, operation.graph, context);\n const bindingsStream = starEval.bindingsStream.transform({\n filter: item => operation.object.equals(item.get(variable)),\n transform(item, next, push) {\n // Return graph binding if graph was a variable, otherwise empty binding\n const binding = operation.graph.termType === 'Variable' ?\n BF.bindings([[operation.graph, item.get(operation.graph)]]) :\n BF.bindings();\n push(binding);\n next();\n },\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async () => ({\n ...await starEval.metadata(),\n variables: operation.graph.termType === 'Variable' ? [operation.graph] : [],\n }),\n };\n }\n // If (sVar || oVar)\n const subject = sVar ? operation.object : operation.subject;\n const value = (sVar ? operation.subject : operation.object);\n const pred = sVar ? actor_abstract_path_1.ActorAbstractPath.FACTORY.createInv(predicate.path) : predicate.path;\n const starEval = await this.getObjectsPredicateStarEval(subject, value, pred, operation.graph, context);\n const bindingsStream = starEval.bindingsStream.transform({\n transform(item, next, push) {\n push(item);\n next();\n },\n });\n const variables = operation.graph.termType === 'Variable' ? [value, operation.graph] : [value];\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async () => ({ ...await starEval.metadata(), variables }),\n };\n }\n}\nexports.ActorQueryOperationPathZeroOrMore = ActorQueryOperationPathZeroOrMore;\n//# sourceMappingURL=ActorQueryOperationPathZeroOrMore.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationPathZeroOrMore\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationPathZeroOrOne = void 0;\nconst actor_abstract_path_1 = require(\"@comunica/actor-abstract-path\");\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * A comunica Path ZeroOrOne Query Operation Actor.\n */\nclass ActorQueryOperationPathZeroOrOne extends actor_abstract_path_1.ActorAbstractPath {\n constructor(args) {\n super(args, sparqlalgebrajs_1.Algebra.types.ZERO_OR_ONE_PATH);\n }\n async runOperation(operation, context) {\n const predicate = operation.predicate;\n const sVar = operation.subject.termType === 'Variable';\n const oVar = operation.object.termType === 'Variable';\n const extra = [];\n // Both subject and object non-variables\n if (!sVar && !oVar && operation.subject.equals(operation.object)) {\n return {\n type: 'bindings',\n bindingsStream: new asynciterator_1.SingletonIterator(BF.bindings()),\n metadata: () => Promise.resolve({\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n };\n }\n if (sVar && oVar) {\n throw new Error('ZeroOrOne path expressions with 2 variables not supported yet');\n }\n const distinct = await this.isPathArbitraryLengthDistinct(context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n context = distinct.context;\n if (operation.subject.termType === 'Variable') {\n extra.push(BF.bindings([[operation.subject, operation.object]]));\n }\n if (operation.object.termType === 'Variable') {\n extra.push(BF.bindings([[operation.object, operation.subject]]));\n }\n const single = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: actor_abstract_path_1.ActorAbstractPath.FACTORY\n .createPath(operation.subject, predicate.path, operation.object, operation.graph),\n }));\n const bindingsStream = single.bindingsStream.prepend(extra);\n return {\n type: 'bindings',\n bindingsStream,\n metadata: single.metadata,\n };\n }\n}\nexports.ActorQueryOperationPathZeroOrOne = ActorQueryOperationPathZeroOrOne;\n//# sourceMappingURL=ActorQueryOperationPathZeroOrOne.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationPathZeroOrOne\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationProject = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst data_factory_1 = require(\"@comunica/data-factory\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A comunica Project Query Operation Actor.\n */\nclass ActorQueryOperationProject extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'project');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operation, context) {\n // Resolve the input\n const output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ operation: operation.input, context }));\n // Find all variables that should be deleted from the input stream.\n const outputMetadata = await output.metadata();\n const variables = operation.variables;\n const deleteVariables = outputMetadata.variables\n .filter(variable => !variables.some(subVariable => variable.value === subVariable.value));\n // Error if there are variables that are not bound in the input stream.\n const missingVariables = variables\n .filter(variable => !outputMetadata.variables.some(subVariable => variable.value === subVariable.value));\n if (missingVariables.length > 0) {\n throw new Error(`Variables '${missingVariables.map(variable => `?${variable.value}`)}' are used in the projection result, but are not assigned.`);\n }\n // Make sure the project variables are the only variables that are present in the bindings.\n let bindingsStream = deleteVariables.length === 0 ?\n output.bindingsStream :\n output.bindingsStream.transform({\n map(bindings) {\n for (const deleteVariable of deleteVariables) {\n bindings = bindings.delete(deleteVariable);\n }\n return bindings;\n },\n autoStart: false,\n });\n // Make sure that blank nodes with same labels are not reused over different bindings, as required by SPARQL 1.1.\n // Required for the BNODE() function: https://www.w3.org/TR/sparql11-query/#func-bnode\n // When we have a scoped blank node, make sure the skolemized value is maintained.\n let blankNodeCounter = 0;\n bindingsStream = bindingsStream.transform({\n map(bindings) {\n blankNodeCounter++;\n const scopedBlankNodesCache = new Map();\n return bindings.map(term => {\n if (term instanceof data_factory_1.BlankNodeBindingsScoped) {\n let scopedBlankNode = scopedBlankNodesCache.get(term.value);\n if (!scopedBlankNode) {\n scopedBlankNode = DF.blankNode(`${term.value}${blankNodeCounter}`);\n scopedBlankNodesCache.set(term.value, scopedBlankNode);\n }\n return scopedBlankNode;\n }\n return term;\n });\n },\n autoStart: false,\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async () => ({ ...outputMetadata, variables }),\n };\n }\n}\nexports.ActorQueryOperationProject = ActorQueryOperationProject;\n//# sourceMappingURL=ActorQueryOperationProject.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationProject\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationQuadpattern = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst BF = new bindings_factory_1.BindingsFactory();\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A comunica actor for handling 'quadpattern' query operations.\n */\nclass ActorQueryOperationQuadpattern extends bus_query_operation_1.ActorQueryOperationTyped {\n constructor(args) {\n super(args, 'pattern');\n }\n /**\n * Check if a term is a variable.\n * @param {RDF.Term} term An RDF term.\n * @return {any} If the term is a variable or blank node.\n */\n static isTermVariable(term) {\n return term.termType === 'Variable';\n }\n /**\n * Get all variables in the given pattern.\n * No duplicates are returned.\n * @param {RDF.BaseQuad} pattern A quad pattern.\n */\n static getVariables(pattern) {\n return (0, rdf_terms_1.uniqTerms)((0, rdf_terms_1.getTerms)(pattern)\n .filter(ActorQueryOperationQuadpattern.isTermVariable));\n }\n /**\n * A helper function to find a hash with quad elements that have duplicate variables.\n *\n * @param {RDF.Quad} pattern A quad pattern.\n *\n * @return {{[p: string]: string[]}} If no equal variable names are present in the four terms, this returns undefined.\n * Otherwise, this maps quad elements ('subject', 'predicate', 'object', 'graph')\n * to the list of quad elements it shares a variable name with.\n * If no links for a certain element exist, this element will\n * not be included in the hash.\n * Note 1: Quad elements will never have a link to themselves.\n * So this can never occur: { subject: [ 'subject'] },\n * instead 'null' would be returned.\n * Note 2: Links only exist in one direction,\n * this means that { subject: [ 'predicate'], predicate: [ 'subject' ] }\n * will not occur, instead only { subject: [ 'predicate'] }\n * will be returned.\n */\n static getDuplicateElementLinks(pattern) {\n // Collect a variable to quad elements mapping.\n const variableElements = {};\n let duplicateVariables = false;\n for (const key of rdf_terms_1.QUAD_TERM_NAMES) {\n if (pattern[key].termType === 'Variable') {\n const val = pattern[key].value;\n const length = (variableElements[val] || (variableElements[val] = [])).push(key);\n duplicateVariables = duplicateVariables || length > 1;\n }\n }\n if (!duplicateVariables) {\n return;\n }\n // Collect quad element to elements with equal variables mapping.\n const duplicateElementLinks = {};\n for (const variable in variableElements) {\n const elements = variableElements[variable];\n const remainingElements = elements.slice(1);\n // Only store the elements that have at least one equal element.\n if (remainingElements.length > 0) {\n duplicateElementLinks[elements[0]] = remainingElements;\n }\n }\n return duplicateElementLinks;\n }\n /**\n * Ensure that the given raw metadata object contains all required metadata entries.\n * @param metadataRaw A raw metadata object.\n */\n static validateMetadata(metadataRaw) {\n for (const key of ['cardinality', 'canContainUndefs']) {\n if (!(key in metadataRaw)) {\n throw new Error(`Invalid metadata: missing ${key} in ${JSON.stringify(metadataRaw)}`);\n }\n }\n return metadataRaw;\n }\n /**\n * Get the metadata of the given action on a quad stream.\n *\n * @param {AsyncIterator} data The data stream that is guaranteed to emit the metadata property.\n * @param elementVariables Mapping of quad term name to variable name.\n * @param variables Variables to include in the metadata\n * @return {() => Promise<{[p: string]: any}>} A lazy promise behind a callback resolving to a metadata object.\n */\n static getMetadata(data, elementVariables, variables) {\n return () => new Promise((resolve, reject) => {\n data.getProperty('metadata', (metadata) => resolve(metadata));\n data.on('error', reject);\n }).then(metadataRaw => {\n if (!('canContainUndefs' in metadataRaw)) {\n metadataRaw.canContainUndefs = false;\n }\n return ActorQueryOperationQuadpattern.quadsMetadataToBindingsMetadata(ActorQueryOperationQuadpattern.validateMetadata(metadataRaw), elementVariables, variables);\n });\n }\n static quadsMetadataToBindingsMetadata(metadataQuads, elementVariables, variables) {\n return {\n ...metadataQuads,\n order: metadataQuads.order ?\n ActorQueryOperationQuadpattern.quadsOrderToBindingsOrder(metadataQuads.order, elementVariables) :\n undefined,\n availableOrders: metadataQuads.availableOrders ?\n metadataQuads.availableOrders.map(orderDef => ({\n cost: orderDef.cost,\n terms: ActorQueryOperationQuadpattern.quadsOrderToBindingsOrder(orderDef.terms, elementVariables),\n })) :\n undefined,\n variables,\n };\n }\n static quadsOrderToBindingsOrder(quadsOrder, elementVariables) {\n const mappedVariables = {};\n return quadsOrder.map(entry => {\n // Omit entries that do not map to a variable\n const variableName = elementVariables[entry.term];\n if (!variableName) {\n return;\n }\n // Omit entries that have been mapped already\n if (mappedVariables[variableName]) {\n return;\n }\n mappedVariables[variableName] = true;\n return {\n term: DF.variable(variableName),\n direction: entry.direction,\n };\n }).filter(entry => Boolean(entry));\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(pattern, context) {\n // Apply the (optional) pattern-specific context\n if (pattern.context) {\n context = context.merge(pattern.context);\n }\n // Resolve the quad pattern\n const result = await this.mediatorResolveQuadPattern.mediate({ pattern, context });\n // Collect all variables from the pattern\n const variables = ActorQueryOperationQuadpattern.getVariables(pattern);\n // Convenience datastructure for mapping quad elements to variables\n const elementVariables = (0, rdf_terms_1.reduceTerms)(pattern, (acc, term, key) => {\n if (term.termType === 'Variable') {\n acc[key] = term.value;\n }\n return acc;\n }, {});\n const quadBindingsReducer = (acc, term, key) => {\n const variable = elementVariables[key];\n if (variable) {\n acc.push([DF.variable(variable), term]);\n }\n return acc;\n };\n // Create the metadata callback\n const metadata = ActorQueryOperationQuadpattern.getMetadata(result.data, elementVariables, variables);\n // Optionally filter, and construct bindings\n const bindingsStream = new asynciterator_1.TransformIterator(async () => {\n let filteredOutput = result.data;\n // Detect duplicate variables in the pattern\n const duplicateElementLinks = ActorQueryOperationQuadpattern\n .getDuplicateElementLinks(pattern);\n // If there are duplicate variables in the search pattern,\n // make sure that we filter out the triples that don't have equal values for those triple elements,\n // as QPF ignores variable names.\n if (duplicateElementLinks) {\n filteredOutput = filteredOutput.filter(quad => {\n // No need to check the graph, because an equal element already would have to be found in s, p, or o.\n for (const element1 of rdf_terms_1.TRIPLE_TERM_NAMES) {\n for (const element2 of duplicateElementLinks[element1] || []) {\n if (!quad[element1].equals(quad[element2])) {\n return false;\n }\n }\n }\n return true;\n });\n }\n return filteredOutput.map(quad => BF.bindings((0, rdf_terms_1.reduceTerms)(quad, quadBindingsReducer, [])));\n }, { autoStart: false });\n return { type: 'bindings', bindingsStream, metadata };\n }\n}\nexports.ActorQueryOperationQuadpattern = ActorQueryOperationQuadpattern;\n//# sourceMappingURL=ActorQueryOperationQuadpattern.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationQuadpattern\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationReducedHash = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst LRU = require(\"lru-cache\");\n/**\n * A comunica Reduced Hash Query Operation Actor.\n */\nclass ActorQueryOperationReducedHash extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'reduced');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operation, context) {\n const output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ operation: operation.input, context }));\n const bindingsStream = output.bindingsStream.filter(await this.newHashFilter(context));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n };\n }\n /**\n * Create a new distinct filter function.\n * This will maintain an internal hash datastructure so that every bindings object only returns true once.\n * @param context The action context.\n * @return {(bindings: Bindings) => boolean} A distinct filter for bindings.\n */\n async newHashFilter(context) {\n const { hashFunction } = await this.mediatorHashBindings.mediate({ allowHashCollisions: true, context });\n const hashes = new LRU({ max: this.cacheSize });\n return (bindings) => {\n const hash = hashFunction(bindings);\n return !hashes.has(hash) && hashes.set(hash, true);\n };\n }\n}\nexports.ActorQueryOperationReducedHash = ActorQueryOperationReducedHash;\n//# sourceMappingURL=ActorQueryOperationReducedHash.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationReducedHash\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationService = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * A comunica Service Query Operation Actor.\n * It unwraps the SERVICE operation and executes it on the given source.\n */\nclass ActorQueryOperationService extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'service');\n }\n async testOperation(operation, context) {\n if (operation.name.termType !== 'NamedNode') {\n throw new Error(`${this.name} can only query services by IRI, while a ${operation.name.termType} was given.`);\n }\n return true;\n }\n async runOperation(operation, context) {\n const endpoint = operation.name.value;\n // Adjust our context to only have the endpoint as source\n let subContext = context\n .delete(context_entries_1.KeysRdfResolveQuadPattern.source)\n .delete(context_entries_1.KeysRdfResolveQuadPattern.sources)\n .delete(context_entries_1.KeysInitQuery.queryString);\n const sourceType = this.forceSparqlEndpoint ? 'sparql' : undefined;\n subContext = subContext.set(context_entries_1.KeysRdfResolveQuadPattern.sources, [{ type: sourceType, value: endpoint }]);\n // Query the source\n let output;\n try {\n output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ operation: operation.input, context: subContext }));\n }\n catch (error) {\n if (operation.silent) {\n // Emit a single empty binding\n output = {\n bindingsStream: new asynciterator_1.SingletonIterator(BF.bindings()),\n type: 'bindings',\n metadata: async () => ({ cardinality: { type: 'exact', value: 1 }, canContainUndefs: false, variables: [] }),\n };\n }\n else {\n throw error;\n }\n }\n return output;\n }\n}\nexports.ActorQueryOperationService = ActorQueryOperationService;\n//# sourceMappingURL=ActorQueryOperationService.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationService\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationSlice = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * A comunica Slice Query Operation Actor.\n */\nclass ActorQueryOperationSlice extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'slice');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operation, context) {\n // Add limit indicator to the context, which can be used for query planning\n // eslint-disable-next-line unicorn/explicit-length-check\n if (operation.length) {\n context = context.set(context_entries_1.KeysQueryOperation.limitIndicator, operation.length);\n }\n // Resolve the input\n const output = await this.mediatorQueryOperation\n .mediate({ operation: operation.input, context });\n if (output.type === 'bindings') {\n const bindingsStream = this.sliceStream(output.bindingsStream, operation);\n return {\n type: 'bindings',\n bindingsStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n if (output.type === 'quads') {\n const quadStream = this.sliceStream(output.quadStream, operation);\n return {\n type: 'quads',\n quadStream,\n metadata: this.sliceMetadata(output, operation),\n };\n }\n throw new Error(`Invalid query output type: Expected 'bindings' or 'quads' but got '${output.type}'`);\n }\n // Slice the stream based on the pattern values\n sliceStream(stream, pattern) {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength = Boolean(pattern.length) || pattern.length === 0;\n const { start } = pattern;\n const end = hasLength ? pattern.start + pattern.length - 1 : Number.POSITIVE_INFINITY;\n return stream.transform({ offset: start, limit: Math.max(end - start + 1, 0), autoStart: false });\n }\n // If we find metadata, apply slicing on the total number of items\n sliceMetadata(output, pattern) {\n // eslint-disable-next-line unicorn/explicit-length-check\n const hasLength = Boolean(pattern.length) || pattern.length === 0;\n return () => output.metadata()\n .then(subMetadata => {\n const cardinality = { ...subMetadata.cardinality };\n if (Number.isFinite(cardinality.value)) {\n cardinality.value = Math.max(0, cardinality.value - pattern.start);\n if (hasLength) {\n cardinality.value = Math.min(cardinality.value, pattern.length);\n }\n }\n return { ...subMetadata, cardinality };\n });\n }\n}\nexports.ActorQueryOperationSlice = ActorQueryOperationSlice;\n//# sourceMappingURL=ActorQueryOperationSlice.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationSlice\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationSparqlEndpoint = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst fetch_sparql_endpoint_1 = require(\"fetch-sparql-endpoint\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst BF = new bindings_factory_1.BindingsFactory();\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A comunica SPARQL Endpoint Query Operation Actor.\n */\nclass ActorQueryOperationSparqlEndpoint extends bus_query_operation_1.ActorQueryOperation {\n constructor(args) {\n super(args);\n this.endpointFetcher = new fetch_sparql_endpoint_1.SparqlEndpointFetcher({\n method: args.forceHttpGet ? 'GET' : 'POST',\n fetch: (input, init) => this.mediatorHttp.mediate({ input, init, context: this.lastContext }),\n prefixVariableQuestionMark: true,\n });\n }\n async test(action) {\n if (!action.operation) {\n throw new Error('Missing field \\'operation\\' in a query operation action.');\n }\n const source = (0, bus_rdf_resolve_quad_pattern_1.getContextSourceFirst)(action.context);\n const destination = (0, bus_rdf_update_quads_1.getContextDestinationFirst)(action.context);\n const sourceType = source ? (0, bus_rdf_resolve_quad_pattern_1.getDataSourceType)(source) : undefined;\n const destinationType = destination ? (0, bus_rdf_update_quads_1.getDataDestinationType)(destination) : undefined;\n const sourceValue = source ? (0, bus_rdf_resolve_quad_pattern_1.getDataSourceValue)(source) : undefined;\n const destinationValue = destination ? (0, bus_rdf_update_quads_1.getDataDestinationValue)(destination) : undefined;\n if ((source && sourceType === 'sparql' &&\n (!destination || (destinationType === 'sparql' && destinationValue === sourceValue))) ||\n (source && !sourceType && (!destination || (!destinationType && destinationValue === sourceValue)) &&\n typeof sourceValue === 'string' && ((this.checkUrlSuffixSparql && sourceValue.endsWith('/sparql')) ||\n (this.checkUrlSuffixUpdate && sourceValue.endsWith('/update'))))) {\n return { httpRequests: 1 };\n }\n throw new Error(`${this.name} requires a single source with a 'sparql' endpoint to be present in the context or URL ending on /sparql or /update.`);\n }\n async run(action) {\n const source = (0, bus_rdf_resolve_quad_pattern_1.getContextSourceFirst)(action.context);\n if (!source) {\n throw new Error('Illegal state: undefined sparql endpoint source.');\n }\n const endpoint = (0, bus_rdf_resolve_quad_pattern_1.getDataSourceValue)(source);\n this.lastContext = action.context;\n // Determine the full SPARQL query that needs to be sent to the endpoint\n // Also check the type of the query (SELECT, CONSTRUCT (includes DESCRIBE) or ASK)\n let query;\n let type;\n let variables;\n try {\n // Use the original query string if available\n query = action.context.get(context_entries_1.KeysInitQuery.queryString) ?? (0, sparqlalgebrajs_1.toSparql)(action.operation);\n // This will throw an error in case the result is an invalid SPARQL query\n type = this.endpointFetcher.getQueryType(query);\n // Also check if this is an update query\n if (type === 'UNKNOWN') {\n type = this.endpointFetcher.getUpdateTypes(query);\n }\n }\n catch {\n // Ignore errors\n }\n // If the input is an sub-query, wrap this in a SELECT\n if (!type || type === 'UNKNOWN') {\n variables = sparqlalgebrajs_1.Util.inScopeVariables(action.operation);\n query = (0, sparqlalgebrajs_1.toSparql)(ActorQueryOperationSparqlEndpoint.FACTORY.createProject(action.operation, variables));\n type = 'SELECT';\n }\n // Execute the query against the endpoint depending on the type\n switch (type) {\n case 'SELECT':\n if (!variables) {\n variables = sparqlalgebrajs_1.Util.inScopeVariables(action.operation);\n }\n return this.executeQuery(endpoint, query, false, variables);\n case 'CONSTRUCT':\n return this.executeQuery(endpoint, query, true);\n case 'ASK':\n return {\n type: 'boolean',\n execute: () => this.endpointFetcher.fetchAsk(endpoint, query),\n };\n default:\n return {\n type: 'void',\n execute: () => this.endpointFetcher.fetchUpdate(endpoint, query),\n };\n }\n }\n /**\n * Execute the given SELECT or CONSTRUCT query against the given endpoint.\n * @param endpoint A SPARQL endpoint URL.\n * @param query A SELECT or CONSTRUCT query.\n * @param quads If the query returns quads, i.e., if it is a CONSTRUCT query.\n * @param variables Variables for SELECT queries.\n */\n executeQuery(endpoint, query, quads, variables) {\n const inputStream = quads ?\n this.endpointFetcher.fetchTriples(endpoint, query) :\n this.endpointFetcher.fetchBindings(endpoint, query);\n let cardinality = 0;\n const stream = (0, asynciterator_1.wrap)(inputStream, { autoStart: false, maxBufferSize: Number.POSITIVE_INFINITY })\n .map(rawData => {\n cardinality++;\n return quads ?\n rawData :\n BF.bindings(Object.entries(rawData)\n .map(([key, value]) => [DF.variable(key.slice(1)), value]));\n });\n inputStream.then(subStream => subStream.on('end', () => stream.emit('metadata', {\n cardinality: { type: 'exact', value: cardinality },\n canContainUndefs: true,\n variables,\n })), () => {\n // Do nothing\n });\n const metadata = ActorQueryOperationSparqlEndpoint.cachifyMetadata(() => new Promise((resolve, reject) => {\n stream._fillBuffer();\n stream.on('error', reject);\n stream.on('end', () => reject(new Error('No metadata was found')));\n stream.on('metadata', resolve);\n }));\n if (quads) {\n return {\n type: 'quads',\n quadStream: stream,\n metadata,\n };\n }\n return {\n type: 'bindings',\n bindingsStream: stream,\n metadata,\n };\n }\n}\nexports.ActorQueryOperationSparqlEndpoint = ActorQueryOperationSparqlEndpoint;\nActorQueryOperationSparqlEndpoint.FACTORY = new sparqlalgebrajs_1.Factory();\n//# sourceMappingURL=ActorQueryOperationSparqlEndpoint.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationSparqlEndpoint\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationUnion = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_terms_1 = require(\"rdf-terms\");\n/**\n * A comunica Union Query Operation Actor.\n */\nclass ActorQueryOperationUnion extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'union');\n }\n /**\n * Takes the union of the given double array variables.\n * Uniqueness is guaranteed.\n * @param {string[][]} variables Double array of variables to take the union of.\n * @return {string[]} The union of the given variables.\n */\n static unionVariables(variables) {\n return (0, rdf_terms_1.uniqTerms)(variables.flat());\n }\n /**\n * Takes the union of the given metadata array.\n * It will ensure that the cardinality metadata value is properly calculated.\n * @param {{[p: string]: any}[]} metadatas Array of metadata.\n * @param bindings If the union of the variables field should also be taken.\n * @return {{[p: string]: any}} Union of the metadata.\n */\n static unionMetadata(metadatas, bindings) {\n // Union cardinality\n const cardinality = { type: 'exact', value: 0 };\n for (const metadata of metadatas) {\n if ((metadata.cardinality.value && Number.isFinite(metadata.cardinality.value)) ||\n metadata.cardinality.value === 0) {\n if (metadata.cardinality.type === 'estimate') {\n cardinality.type = 'estimate';\n }\n cardinality.value += metadata.cardinality.value;\n }\n else {\n cardinality.type = 'estimate';\n cardinality.value = Number.POSITIVE_INFINITY;\n break;\n }\n }\n const metadataBase = {\n cardinality,\n canContainUndefs: metadatas.some(metadata => metadata.canContainUndefs),\n };\n // Union variables\n if (bindings) {\n metadataBase.variables = ActorQueryOperationUnion.unionVariables(metadatas.map(metadata => metadata.variables));\n return metadataBase;\n }\n return metadataBase;\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operation, context) {\n const outputs = (await Promise.all(operation.input\n .map(subOperation => this.mediatorQueryOperation.mediate({ operation: subOperation, context }))))\n .map(bus_query_operation_1.ActorQueryOperation.getSafeBindings);\n const bindingsStream = new asynciterator_1.UnionIterator(outputs.map((output) => output.bindingsStream), { autoStart: false });\n const metadata = () => Promise.all(outputs.map(output => output.metadata()))\n .then(subMeta => ActorQueryOperationUnion.unionMetadata(subMeta, true));\n return { type: 'bindings', bindingsStream, metadata };\n }\n}\nexports.ActorQueryOperationUnion = ActorQueryOperationUnion;\n//# sourceMappingURL=ActorQueryOperationUnion.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationUnion\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationAddRewrite = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL add operations.\n */\nclass ActorQueryOperationAddRewrite extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'add');\n this.factory = new sparqlalgebrajs_1.Factory();\n }\n async testOperation(operation, context) {\n bus_query_operation_1.ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n runOperation(operationOriginal, context) {\n // CONSTRUCT all quads from the source, and INSERT them into the destination\n const destination = operationOriginal.destination === 'DEFAULT' ? DF.defaultGraph() : operationOriginal.destination;\n const source = operationOriginal.source === 'DEFAULT' ? DF.defaultGraph() : operationOriginal.source;\n const operation = this.factory.createDeleteInsert(undefined, [\n this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), destination),\n ], this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), source));\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\nexports.ActorQueryOperationAddRewrite = ActorQueryOperationAddRewrite;\n//# sourceMappingURL=ActorQueryOperationAddRewrite.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationAddRewrite\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationClear = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL clear operations.\n */\nclass ActorQueryOperationClear extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'clear');\n }\n async testOperation(operation, context) {\n bus_query_operation_1.ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n async runOperation(operation, context) {\n // Delegate to update-quads bus\n let graphs;\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n }\n else if (typeof operation.source === 'string') {\n graphs = operation.source;\n }\n else {\n graphs = [operation.source];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: false,\n },\n context,\n });\n return {\n type: 'void',\n execute,\n };\n }\n}\nexports.ActorQueryOperationClear = ActorQueryOperationClear;\n//# sourceMappingURL=ActorQueryOperationClear.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationClear\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationUpdateCompositeUpdate = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\n/**\n * A comunica Update CompositeUpdate Query Operation Actor.\n */\nclass ActorQueryOperationUpdateCompositeUpdate extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'compositeupdate');\n }\n async testOperation(operation, context) {\n bus_query_operation_1.ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n async runOperation(operationOriginal, context) {\n const execute = () => (async () => {\n // Execute update operations in sequence\n for (const operation of operationOriginal.updates) {\n const subResult = bus_query_operation_1.ActorQueryOperation\n .getSafeVoid(await this.mediatorQueryOperation.mediate({ operation, context }));\n await subResult.execute();\n }\n })();\n return {\n type: 'void',\n execute,\n };\n }\n}\nexports.ActorQueryOperationUpdateCompositeUpdate = ActorQueryOperationUpdateCompositeUpdate;\n//# sourceMappingURL=ActorQueryOperationUpdateCompositeUpdate.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationUpdateCompositeUpdate\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationCopyRewrite = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor that\n * handles SPARQL copy operations.\n */\nclass ActorQueryOperationCopyRewrite extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'copy');\n this.factory = new sparqlalgebrajs_1.Factory();\n }\n async testOperation(operation, context) {\n bus_query_operation_1.ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n runOperation(operationOriginal, context) {\n // No-op if source === destination\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n return Promise.resolve({\n type: 'void',\n execute: () => Promise.resolve(),\n });\n }\n // COPY is equivalent to drop destination, and add\n const operation = this.factory.createCompositeUpdate([\n this.factory.createDrop(operationOriginal.destination, true),\n this.factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n ]);\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\nexports.ActorQueryOperationCopyRewrite = ActorQueryOperationCopyRewrite;\n//# sourceMappingURL=ActorQueryOperationCopyRewrite.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationCopyRewrite\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationCreate = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor that\n * handles SPARQL create operations.\n */\nclass ActorQueryOperationCreate extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'create');\n }\n async testOperation(operation, context) {\n bus_query_operation_1.ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n async runOperation(operation, context) {\n // Delegate to update-quads bus\n const { execute } = await this.mediatorUpdateQuads.mediate({\n createGraphs: {\n graphs: [operation.source],\n requireNonExistence: !operation.silent,\n },\n context,\n });\n return {\n type: 'void',\n execute,\n };\n }\n}\nexports.ActorQueryOperationCreate = ActorQueryOperationCreate;\n//# sourceMappingURL=ActorQueryOperationCreate.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationCreate\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationUpdateDeleteInsert = void 0;\nconst actor_query_operation_construct_1 = require(\"@comunica/actor-query-operation-construct\");\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * A comunica Update DeleteInsert Query Operation Actor.\n */\nclass ActorQueryOperationUpdateDeleteInsert extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'deleteinsert');\n this.blankNodeCounter = 0;\n }\n async testOperation(operation, context) {\n bus_query_operation_1.ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n async runOperation(operation, context) {\n // Evaluate the where clause\n const whereBindings = operation.where ?\n bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation\n .mediate({ operation: operation.where, context })).bindingsStream :\n new asynciterator_1.ArrayIterator([BF.bindings()], { autoStart: false });\n // Construct triples using the result based on the pattern.\n let quadStreamInsert;\n let quadStreamDelete;\n if (operation.insert) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamInsert = new actor_query_operation_construct_1.BindingsToQuadsIterator(operation.insert.map(actor_query_operation_construct_1.BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)), whereBindings.clone(), false);\n this.blankNodeCounter++;\n }\n if (operation.delete) {\n // Localize blank nodes in pattern, to avoid clashes across different INSERT/DELETE calls\n quadStreamDelete = new actor_query_operation_construct_1.BindingsToQuadsIterator(operation.delete.map(actor_query_operation_construct_1.BindingsToQuadsIterator.localizeQuad.bind(null, this.blankNodeCounter)), whereBindings.clone(), false);\n this.blankNodeCounter++;\n }\n // Evaluate the required modifications\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert,\n quadStreamDelete,\n context,\n });\n return {\n type: 'void',\n execute,\n };\n }\n}\nexports.ActorQueryOperationUpdateDeleteInsert = ActorQueryOperationUpdateDeleteInsert;\n//# sourceMappingURL=ActorQueryOperationUpdateDeleteInsert.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationUpdateDeleteInsert\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationDrop = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL drop operations.\n */\nclass ActorQueryOperationDrop extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'drop');\n }\n async testOperation(operation, context) {\n bus_query_operation_1.ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n async runOperation(operation, context) {\n // Delegate to update-quads bus\n let graphs;\n if (operation.source === 'DEFAULT') {\n graphs = DF.defaultGraph();\n }\n else if (typeof operation.source === 'string') {\n graphs = operation.source;\n }\n else {\n graphs = [operation.source];\n }\n const { execute } = await this.mediatorUpdateQuads.mediate({\n deleteGraphs: {\n graphs,\n requireExistence: !operation.silent,\n dropGraphs: true,\n },\n context,\n });\n return {\n type: 'void',\n execute,\n };\n }\n}\nexports.ActorQueryOperationDrop = ActorQueryOperationDrop;\n//# sourceMappingURL=ActorQueryOperationDrop.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationDrop\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationLoad = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor\n * that handles SPARQL load operations.\n */\nclass ActorQueryOperationLoad extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'load');\n this.factory = new sparqlalgebrajs_1.Factory();\n this.constructOperation = this.factory.createConstruct(this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o')), [this.factory.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'))]);\n }\n async testOperation(operation, context) {\n bus_query_operation_1.ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n async runOperation(operation, context) {\n // Create CONSTRUCT query on the given source\n let subContext = context.set(context_entries_1.KeysRdfResolveQuadPattern.sources, [operation.source.value]);\n if (operation.silent) {\n subContext = subContext.set(context_entries_1.KeysInitQuery.lenient, true);\n }\n const output = ActorQueryOperationLoad.getSafeQuads(await this.mediatorQueryOperation.mediate({\n operation: this.constructOperation,\n context: subContext,\n }));\n // Determine quad stream to insert\n let quadStream = output.quadStream;\n if (operation.destination) {\n quadStream = quadStream.map(quad => DF.quad(quad.subject, quad.predicate, quad.object, operation.destination));\n }\n // Insert quad stream\n const { execute } = await this.mediatorUpdateQuads.mediate({\n quadStreamInsert: quadStream,\n context,\n });\n return {\n type: 'void',\n execute,\n };\n }\n}\nexports.ActorQueryOperationLoad = ActorQueryOperationLoad;\n//# sourceMappingURL=ActorQueryOperationLoad.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationLoad\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationMoveRewrite = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A [Query Operation](https://github.com/comunica/comunica/tree/master/packages/bus-query-operation) actor that\n * handles SPARQL move operations.\n */\nclass ActorQueryOperationMoveRewrite extends bus_query_operation_1.ActorQueryOperationTypedMediated {\n constructor(args) {\n super(args, 'move');\n this.factory = new sparqlalgebrajs_1.Factory();\n }\n async testOperation(operation, context) {\n bus_query_operation_1.ActorQueryOperation.throwOnReadOnly(context);\n return true;\n }\n runOperation(operationOriginal, context) {\n // No-op if source === destination\n if ((typeof operationOriginal.destination === 'string' && typeof operationOriginal.source === 'string' &&\n operationOriginal.destination === operationOriginal.source) ||\n (typeof operationOriginal.destination !== 'string' && typeof operationOriginal.source !== 'string' &&\n operationOriginal.destination.equals(operationOriginal.source))) {\n return Promise.resolve({\n type: 'void',\n execute: () => Promise.resolve(),\n });\n }\n // MOVE is equivalent to drop destination, add, and drop source\n const updates = [\n this.factory.createDrop(operationOriginal.destination, true),\n this.factory.createAdd(operationOriginal.source, operationOriginal.destination, operationOriginal.silent),\n this.factory.createDrop(operationOriginal.source),\n ];\n const operation = this.factory.createCompositeUpdate(updates);\n return this.mediatorQueryOperation.mediate({ operation, context });\n }\n}\nexports.ActorQueryOperationMoveRewrite = ActorQueryOperationMoveRewrite;\n//# sourceMappingURL=ActorQueryOperationMoveRewrite.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationMoveRewrite\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationValues = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst BF = new bindings_factory_1.BindingsFactory();\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A comunica Values Query Operation Actor.\n */\nclass ActorQueryOperationValues extends bus_query_operation_1.ActorQueryOperationTyped {\n constructor(args) {\n super(args, 'values');\n }\n async testOperation(operation, context) {\n return true;\n }\n async runOperation(operation, context) {\n const bindingsStream = new asynciterator_1.ArrayIterator(operation.bindings\n .map(x => BF.bindings(Object.entries(x)\n .map(([key, value]) => [DF.variable(key.slice(1)), value]))));\n const variables = operation.variables;\n const metadata = () => Promise.resolve({\n cardinality: { type: 'exact', value: operation.bindings.length },\n canContainUndefs: operation.bindings.some(bindings => variables.some(variable => !(`?${variable.value}` in bindings))),\n variables,\n });\n return { type: 'bindings', bindingsStream, metadata };\n }\n}\nexports.ActorQueryOperationValues = ActorQueryOperationValues;\n//# sourceMappingURL=ActorQueryOperationValues.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperationValues\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryParseGraphql = void 0;\nconst bus_query_parse_1 = require(\"@comunica/bus-query-parse\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst graphql_to_sparql_1 = require(\"graphql-to-sparql\");\n/**\n * A comunica GraphQL SPARQL Parse Actor.\n */\nclass ActorQueryParseGraphql extends bus_query_parse_1.ActorQueryParse {\n constructor(args) {\n super(args);\n this.graphqlToSparql = new graphql_to_sparql_1.Converter({ requireContext: true });\n }\n async test(action) {\n if (action.queryFormat?.language !== 'graphql') {\n throw new Error('This actor can only parse GraphQL queries');\n }\n return true;\n }\n async run(action) {\n const context = action.context.get(context_entries_1.KeysInitQuery.jsonLdContext) || {};\n const options = {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n singularizeVariables: action.context.get(context_entries_1.KeysInitQuery.graphqlSingularizeVariables),\n };\n return { operation: await this.graphqlToSparql.graphqlToSparqlAlgebra(action.query, context, options) };\n }\n}\nexports.ActorQueryParseGraphql = ActorQueryParseGraphql;\n//# sourceMappingURL=ActorQueryParseGraphql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryParseGraphql\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryParseSparql = void 0;\nconst bus_query_parse_1 = require(\"@comunica/bus-query-parse\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst sparqljs_1 = require(\"sparqljs\");\n/**\n * A comunica Algebra SPARQL Parse Actor.\n */\nclass ActorQueryParseSparql extends bus_query_parse_1.ActorQueryParse {\n constructor(args) {\n super(args);\n this.prefixes = Object.freeze(this.prefixes);\n }\n async test(action) {\n if (action.queryFormat && action.queryFormat.language !== 'sparql') {\n throw new Error('This actor can only parse SPARQL queries');\n }\n return true;\n }\n async run(action) {\n const parser = new sparqljs_1.Parser({ prefixes: this.prefixes, baseIRI: action.baseIRI });\n const parsedSyntax = parser.parse(action.query);\n const baseIRI = parsedSyntax.type === 'query' ? parsedSyntax.base : undefined;\n return {\n baseIRI,\n operation: (0, sparqlalgebrajs_1.translate)(parsedSyntax, { quads: true, prefixes: this.prefixes, blankToVariable: true, baseIRI: action.baseIRI }),\n };\n }\n}\nexports.ActorQueryParseSparql = ActorQueryParseSparql;\n//# sourceMappingURL=ActorQueryParseSparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryParseSparql\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeJson = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_query_result_serialize_1 = require(\"@comunica/bus-query-result-serialize\");\nconst RdfString = require(\"rdf-string\");\n/**\n * A comunica JSON Query Result Serialize Actor.\n */\nclass ActorQueryResultSerializeJson extends bus_query_result_serialize_1.ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/json\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/json\": \"https://comunica.linkeddatafragments.org/#results_JSON\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async testHandleChecked(action, context) {\n if (!['bindings', 'quads', 'boolean'].includes(action.type)) {\n throw new Error('This actor can only handle bindings or quad streams.');\n }\n return true;\n }\n async runHandle(action, mediaType, context) {\n const data = new stream_1.Readable();\n data._read = () => {\n // Do nothing\n };\n let empty = true;\n if (action.type === 'bindings') {\n const resultStream = action.bindingsStream;\n data.push('[');\n resultStream.on('error', error => data.emit('error', error));\n resultStream.on('data', (element) => {\n data.push(empty ? '\\n' : ',\\n');\n data.push(JSON.stringify(Object.fromEntries([...element]\n .map(([key, value]) => [key.value, RdfString.termToString(value)]))));\n empty = false;\n });\n resultStream.on('end', () => {\n data.push(empty ? ']\\n' : '\\n]\\n');\n data.push(null);\n });\n }\n else if (action.type === 'quads') {\n const resultStream = action.quadStream;\n data.push('[');\n resultStream.on('error', error => data.emit('error', error));\n resultStream.on('data', element => {\n data.push(empty ? '\\n' : ',\\n');\n data.push(JSON.stringify(RdfString.quadToStringQuad(element)));\n empty = false;\n });\n resultStream.on('end', () => {\n data.push(empty ? ']\\n' : '\\n]\\n');\n data.push(null);\n });\n }\n else {\n try {\n data.push(`${JSON.stringify(await action.execute())}\\n`);\n data.push(null);\n }\n catch (error) {\n setImmediate(() => data.emit('error', error));\n }\n }\n return { data };\n }\n}\nexports.ActorQueryResultSerializeJson = ActorQueryResultSerializeJson;\n//# sourceMappingURL=ActorQueryResultSerializeJson.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerializeJson\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeRdf = void 0;\nconst bus_query_result_serialize_1 = require(\"@comunica/bus-query-result-serialize\");\n/**\n * A comunica RDF Query Result Serialize Actor.\n *\n * It serializes quad streams (for example resulting from a CONSTRUCT query)\n * to an RDF syntax.\n */\nclass ActorQueryResultSerializeRdf extends bus_query_result_serialize_1.ActorQueryResultSerialize {\n constructor(args) {\n super(args);\n }\n async testHandle(action, mediaType, context) {\n // Check if we are provided with a quad stream\n if (action.type !== 'quads') {\n throw new Error(`Actor ${this.name} can only handle quad streams`);\n }\n // Check if the given media type can be handled\n const { mediaTypes } = await this.mediatorMediaTypeCombiner.mediate({ context, mediaTypes: true });\n if (!(mediaType in mediaTypes)) {\n throw new Error(`Actor ${this.name} can not handle media type ${mediaType}. All available types: ${Object.keys(mediaTypes)}`);\n }\n return true;\n }\n async runHandle(action, mediaType, context) {\n // Delegate handling to the mediator\n return (await this.mediatorRdfSerialize.mediate({\n context,\n handle: {\n context,\n quadStream: action.quadStream,\n },\n handleMediaType: mediaType,\n })).handle;\n }\n async testMediaType(context) {\n return true;\n }\n async getMediaTypes(context) {\n return (await this.mediatorMediaTypeCombiner.mediate({ context, mediaTypes: true })).mediaTypes;\n }\n async testMediaTypeFormats(context) {\n return true;\n }\n async getMediaTypeFormats(context) {\n return (await this.mediatorMediaTypeFormatCombiner.mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n}\nexports.ActorQueryResultSerializeRdf = ActorQueryResultSerializeRdf;\n//# sourceMappingURL=ActorQueryResultSerializeRdf.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerializeRdf\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeSimple = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_query_result_serialize_1 = require(\"@comunica/bus-query-result-serialize\");\n/**\n * A comunica Simple Sparql Serialize Actor.\n */\nclass ActorQueryResultSerializeSimple extends bus_query_result_serialize_1.ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{ \"simple\": 0.9 }} mediaTypePriorities\n * \\ @defaultNested {{ \"simple\": \"https://comunica.linkeddatafragments.org/#results_simple\" }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async testHandleChecked(action, context) {\n if (!['bindings', 'quads', 'boolean', 'void'].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams, quad streams, booleans, or updates.');\n }\n return true;\n }\n async runHandle(action, mediaType, context) {\n const data = new stream_1.Readable();\n data._read = () => {\n // Do nothing\n };\n let resultStream;\n if (action.type === 'bindings') {\n resultStream = action.bindingsStream;\n resultStream.on('error', error => data.emit('error', error));\n resultStream.on('data', (bindings) => data.push(`${[...bindings].map(([key, value]) => `?${key.value}: ${value.value}`).join('\\n')}\\n\\n`));\n resultStream.on('end', () => data.push(null));\n }\n else if (action.type === 'quads') {\n resultStream = action.quadStream;\n resultStream.on('error', error => data.emit('error', error));\n resultStream.on('data', quad => data.push(`subject: ${quad.subject.value}\\n` +\n `predicate: ${quad.predicate.value}\\n` +\n `object: ${quad.object.value}\\n` +\n `graph: ${quad.graph.value}\\n\\n`));\n resultStream.on('end', () => data.push(null));\n }\n else if (action.type === 'boolean') {\n try {\n data.push(`${JSON.stringify(await action.execute())}\\n`);\n data.push(null);\n }\n catch (error) {\n setImmediate(() => data.emit('error', error));\n }\n }\n else {\n action.execute()\n .then(() => {\n data.push('ok\\n');\n data.push(null);\n })\n .catch(error => setImmediate(() => data.emit('error', error)));\n }\n return { data };\n }\n}\nexports.ActorQueryResultSerializeSimple = ActorQueryResultSerializeSimple;\n//# sourceMappingURL=ActorQueryResultSerializeSimple.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerializeSimple\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeSparqlCsv = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_query_result_serialize_1 = require(\"@comunica/bus-query-result-serialize\");\n/**\n * A comunica SPARQL CSV Query Result Serialize Actor.\n */\nclass ActorQueryResultSerializeSparqlCsv extends bus_query_result_serialize_1.ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"text/csv\": 0.75\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/csv\": \"http://www.w3.org/ns/formats/SPARQL_Results_CSV\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n /**\n * Converts an RDF term to its CSV representation.\n * @param {RDF.Term} value An RDF term.\n * @return {string} A string representation of the given value.\n */\n static bindingToCsvBindings(value) {\n if (!value) {\n return '';\n }\n let stringValue = value.value;\n if (value.termType === 'Literal') {\n // This is a lossy representation, since language and datatype are not encoded in here.\n stringValue = `${stringValue}`;\n }\n else if (value.termType === 'BlankNode') {\n stringValue = `_:${stringValue}`;\n }\n else {\n stringValue = `<${stringValue}>`;\n }\n // If a value contains certain characters, put it between double quotes\n if (/[\",\\n\\r]/u.test(stringValue)) {\n // Within quote strings, \" is written using a pair of quotation marks \"\".\n stringValue = `\"${stringValue.replace(/\"/ug, '\"\"')}\"`;\n }\n return stringValue;\n }\n async testHandleChecked(action, context) {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n async runHandle(action, mediaType, context) {\n const bindingsAction = action;\n const data = new stream_1.Readable();\n data._read = () => {\n // Do nothing\n };\n // Write head\n const metadata = await bindingsAction.metadata();\n data.push(`${metadata.variables.map(variable => variable.value).join(',')}\\r\\n`);\n // Write bindings\n bindingsAction.bindingsStream.on('error', (error) => {\n data.emit('error', error);\n });\n bindingsAction.bindingsStream.on('data', (bindings) => {\n data.push(`${metadata.variables\n .map(key => ActorQueryResultSerializeSparqlCsv.bindingToCsvBindings(bindings.get(key)))\n .join(',')}\\r\\n`);\n });\n bindingsAction.bindingsStream.on('end', () => {\n data.push(null);\n });\n return { data };\n }\n}\nexports.ActorQueryResultSerializeSparqlCsv = ActorQueryResultSerializeSparqlCsv;\n//# sourceMappingURL=ActorQueryResultSerializeSparqlCsv.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerializeSparqlCsv\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeSparqlJson = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_query_result_serialize_1 = require(\"@comunica/bus-query-result-serialize\");\n/**\n * A comunica sparql-results+xml Serialize Actor.\n */\nclass ActorQueryResultSerializeSparqlJson extends bus_query_result_serialize_1.ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/sparql-results+json\": 0.8\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/sparql-results+json\": \"http://www.w3.org/ns/formats/SPARQL_Results_JSON\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n /**\n * Converts an RDF term to its JSON representation.\n * @param {RDF.Term} value An RDF term.\n * @return {any} A JSON object.\n */\n static bindingToJsonBindings(value) {\n if (value.termType === 'Literal') {\n const literal = value;\n const jsonValue = { value: literal.value, type: 'literal' };\n const { language } = literal;\n const { datatype } = literal;\n if (language) {\n jsonValue['xml:lang'] = language;\n }\n else if (datatype && datatype.value !== 'http://www.w3.org/2001/XMLSchema#string') {\n jsonValue.datatype = datatype.value;\n }\n return jsonValue;\n }\n if (value.termType === 'BlankNode') {\n return { value: value.value, type: 'bnode' };\n }\n return { value: value.value, type: 'uri' };\n }\n async testHandleChecked(action, context) {\n if (!['bindings', 'boolean'].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or booleans.');\n }\n return true;\n }\n async runHandle(action, mediaType, context) {\n const data = new stream_1.Readable();\n data._read = () => {\n // Do nothing\n };\n // Write head\n const head = {};\n if (action.type === 'bindings') {\n const metadata = await action.metadata();\n if (metadata.variables.length > 0) {\n head.vars = metadata.variables.map(variable => variable.value);\n }\n }\n data.push(`{\"head\": ${JSON.stringify(head)},\\n`);\n let empty = true;\n if (action.type === 'bindings') {\n const resultStream = action.bindingsStream;\n // Write bindings\n resultStream.on('error', (error) => {\n data.emit('error', error);\n });\n resultStream.on('data', (bindings) => {\n if (empty) {\n data.push('\"results\": { \"bindings\": [\\n');\n }\n else {\n data.push(',\\n');\n }\n // JSON SPARQL results spec does not allow unbound variables and blank node bindings\n data.push(JSON.stringify(Object.fromEntries([...bindings]\n .map(([key, value]) => [key.value, ActorQueryResultSerializeSparqlJson.bindingToJsonBindings(value)]))));\n empty = false;\n });\n // Close streams\n resultStream.on('end', () => {\n if (empty) {\n data.push('\"results\": { \"bindings\": [] }}\\n');\n }\n else {\n data.push('\\n]}}\\n');\n }\n data.push(null);\n });\n }\n else {\n try {\n data.push(`\"boolean\":${await action.execute()}\\n}\\n`);\n data.push(null);\n }\n catch (error) {\n data.once('newListener', () => data.emit('error', error));\n }\n }\n return { data };\n }\n}\nexports.ActorQueryResultSerializeSparqlJson = ActorQueryResultSerializeSparqlJson;\n//# sourceMappingURL=ActorQueryResultSerializeSparqlJson.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerializeSparqlJson\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeSparqlTsv = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_query_result_serialize_1 = require(\"@comunica/bus-query-result-serialize\");\nconst rdf_string_ttl_1 = require(\"rdf-string-ttl\");\n/**\n * A comunica SPARQL TSV Query Result Serialize Actor.\n */\nclass ActorQueryResultSerializeSparqlTsv extends bus_query_result_serialize_1.ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"text/tab-separated-values\": 0.75\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/tab-separated-values\": \"http://www.w3.org/ns/formats/SPARQL_Results_TSV\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n /**\n * Converts an RDF term to its TSV representation.\n * @param {RDF.Term} value An RDF term.\n * @return {string} A string representation of the given value.\n */\n static bindingToTsvBindings(value) {\n if (!value) {\n return '';\n }\n // Escape tab, newline and carriage return characters\n return (0, rdf_string_ttl_1.termToString)(value)\n .replace(/\\t/gu, '\\\\t')\n .replace(/\\n/gu, '\\\\n')\n .replace(/\\r/gu, '\\\\r');\n }\n async testHandleChecked(action, context) {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n async runHandle(action, mediaType, context) {\n const bindingsAction = action;\n const data = new stream_1.Readable();\n data._read = () => {\n // Do nothing\n };\n // Write head\n const metadata = await bindingsAction.metadata();\n data.push(`${metadata.variables.map((variable) => variable.value).join('\\t')}\\n`);\n // Write bindings\n bindingsAction.bindingsStream.on('error', (error) => {\n data.emit('error', error);\n });\n bindingsAction.bindingsStream.on('data', (bindings) => {\n data.push(`${metadata.variables\n .map((key) => ActorQueryResultSerializeSparqlTsv\n .bindingToTsvBindings(bindings.get(key)))\n .join('\\t')}\\n`);\n });\n bindingsAction.bindingsStream.on('end', () => {\n data.push(null);\n });\n return { data };\n }\n}\nexports.ActorQueryResultSerializeSparqlTsv = ActorQueryResultSerializeSparqlTsv;\n//# sourceMappingURL=ActorQueryResultSerializeSparqlTsv.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerializeSparqlTsv\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeSparqlXml = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_query_result_serialize_1 = require(\"@comunica/bus-query-result-serialize\");\nconst xml = require(\"xml\");\n/**\n * A comunica sparql-results+xml Serialize Actor.\n */\nclass ActorQueryResultSerializeSparqlXml extends bus_query_result_serialize_1.ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/sparql-results+xml\": 0.8\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/sparql-results+xml\": \"http://www.w3.org/ns/formats/SPARQL_Results_XML\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n /**\n * Converts an RDF term to its object-based XML representation.\n * @param {RDF.Term} value An RDF term.\n * @param {string} key A variable name, '?' must be included as a prefix.\n * @return {any} An object-based XML tag.\n */\n static bindingToXmlBindings(value, key) {\n let xmlValue;\n if (value.termType === 'Literal') {\n const literal = value;\n xmlValue = { literal: literal.value };\n const { language } = literal;\n const { datatype } = literal;\n if (language) {\n xmlValue.literal = [{ _attr: { 'xml:lang': language } }, xmlValue.literal];\n }\n else if (datatype && datatype.value !== 'http://www.w3.org/2001/XMLSchema#string') {\n xmlValue.literal = [{ _attr: { datatype: datatype.value } }, xmlValue.literal];\n }\n }\n else if (value.termType === 'BlankNode') {\n xmlValue = { bnode: value.value };\n }\n else {\n xmlValue = { uri: value.value };\n }\n return { binding: [{ _attr: { name: key.value } }, xmlValue] };\n }\n async testHandleChecked(action, context) {\n if (!['bindings', 'boolean'].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or booleans.');\n }\n return true;\n }\n async runHandle(action, mediaType, context) {\n const data = new stream_1.Readable();\n data._read = () => {\n // Do nothing\n };\n // Write head\n const root = xml.element({ _attr: { xlmns: 'http://www.w3.org/2005/sparql-results#' } });\n xml({ sparql: root }, { stream: true, indent: ' ', declaration: true })\n .on('data', chunk => data.push(`${chunk}\\n`));\n if (action.type === 'bindings') {\n const metadata = await action.metadata();\n if (metadata.variables.length > 0) {\n root.push({ head: metadata.variables.map(variable => ({ variable: { _attr: { name: variable.value } } })) });\n }\n }\n if (action.type === 'bindings') {\n const results = xml.element({});\n root.push({ results });\n const resultStream = action.bindingsStream;\n // Write bindings\n resultStream.on('error', (error) => {\n data.emit('error', error);\n });\n resultStream.on('data', (bindings) => {\n // XML SPARQL results spec does not allow unbound variables and blank node bindings\n results.push({ result: [...bindings]\n .map(([key, value]) => ActorQueryResultSerializeSparqlXml.bindingToXmlBindings(value, key)) });\n });\n // Close streams\n resultStream.on('end', () => {\n results.close();\n root.close();\n setImmediate(() => data.push(null));\n });\n }\n else {\n try {\n root.push({ boolean: await action.execute() });\n root.close();\n setImmediate(() => data.push(null));\n }\n catch (error) {\n setImmediate(() => data.emit('error', error));\n }\n }\n return { data };\n }\n}\nexports.ActorQueryResultSerializeSparqlXml = ActorQueryResultSerializeSparqlXml;\n//# sourceMappingURL=ActorQueryResultSerializeSparqlXml.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerializeSparqlXml\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionObserverHttp = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * Observes HTTP actions, and maintains a counter of the number of requests.\n */\nclass ActionObserverHttp extends core_1.ActionObserver {\n /* eslint-disable max-len */\n /**\n * @param args - @defaultNested {} bus\n */\n constructor(args) {\n super(args);\n this.requests = 0;\n this.bus.subscribeObserver(this);\n }\n /* eslint-enable max-len */\n onRun(actor, action, output) {\n this.requests++;\n }\n}\nexports.ActionObserverHttp = ActionObserverHttp;\n//# sourceMappingURL=ActionObserverHttp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeStats = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_query_result_serialize_1 = require(\"@comunica/bus-query-result-serialize\");\n/**\n * Serializes SPARQL results for testing and debugging.\n */\nclass ActorQueryResultSerializeStats extends bus_query_result_serialize_1.ActorQueryResultSerializeFixedMediaTypes {\n /* eslint-disable max-len */\n /**\n * @param args -\n * \\ @defaultNested {{ \"stats\": 0.5 }} mediaTypePriorities\n * \\ @defaultNested {{ \"stats\": \"https://comunica.linkeddatafragments.org/#results_stats\" }} mediaTypeFormats\n * \\ @defaultNested { a } httpObserver\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action, context) {\n if (!['bindings', 'quads'].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or quad streams.');\n }\n return true;\n }\n pushHeader(data) {\n const header = ['Result', 'Delay (ms)', 'HTTP requests',\n ].join(',');\n data.push(`${header}\\n`);\n }\n pushStat(data, startTime, result) {\n const row = [result, this.delay(startTime), this.httpObserver.requests,\n ].join(',');\n data.push(`${row}\\n`);\n }\n pushFooter(data, startTime) {\n const footer = ['TOTAL', this.delay(startTime), this.httpObserver.requests,\n ].join(',');\n data.push(`${footer}\\n`);\n data.push(null);\n }\n async runHandle(action, mediaType, context) {\n const data = new stream_1.Readable();\n data._read = () => {\n // Do nothing\n };\n const resultStream = action.type === 'bindings' ?\n action.bindingsStream :\n action.quadStream;\n const startTime = process.hrtime();\n let result = 1;\n this.pushHeader(data);\n resultStream.on('error', error => data.emit('error', error));\n resultStream.on('data', () => this.pushStat(data, startTime, result++));\n resultStream.on('end', () => this.pushFooter(data, startTime));\n return { data };\n }\n delay(startTime) {\n const time = process.hrtime(startTime);\n return time[0] * 1000 + (time[1] / 1000000);\n }\n}\nexports.ActorQueryResultSerializeStats = ActorQueryResultSerializeStats;\n//# sourceMappingURL=ActorQueryResultSerializeStats.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActionObserverHttp\"), exports);\n__exportStar(require(\"./ActorQueryResultSerializeStats\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeTable = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_query_result_serialize_1 = require(\"@comunica/bus-query-result-serialize\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst DF = new rdf_data_factory_1.DataFactory();\nconst QUAD_TERM_NAMES_VARS = rdf_terms_1.QUAD_TERM_NAMES.map(name => DF.variable(name));\n/**\n * A comunica Table Sparql Serialize Actor.\n */\nclass ActorQueryResultSerializeTable extends bus_query_result_serialize_1.ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{ \"table\": 0.6 }} mediaTypePriorities\n * \\ @defaultNested {{ \"table\": \"https://comunica.linkeddatafragments.org/#results_table\" }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n this.padding = ActorQueryResultSerializeTable.repeat(' ', this.columnWidth);\n }\n static repeat(str, count) {\n return new Array(count + 1).join(str);\n }\n async testHandleChecked(action, context) {\n if (!['bindings', 'quads'].includes(action.type)) {\n throw new Error('This actor can only handle bindings or quad streams.');\n }\n return true;\n }\n pad(str) {\n if (str.length <= this.columnWidth) {\n return str + this.padding.slice(str.length);\n }\n return `${str.slice(0, this.columnWidth - 1)}…`;\n }\n pushHeader(data, labels) {\n const header = labels.map(label => this.pad(label.value)).join(' ');\n data.push(`${header}\\n${ActorQueryResultSerializeTable.repeat('-', header.length)}\\n`);\n }\n pushRow(data, labels, bindings) {\n data.push(`${labels\n .map(label => bindings.get(label)?.value || '')\n .map(label => this.pad(label))\n .join(' ')}\\n`);\n }\n async runHandle(action, mediaType, context) {\n const data = new stream_1.Readable();\n data._read = () => {\n // Do nothing\n };\n let resultStream;\n if (action.type === 'bindings') {\n resultStream = action.bindingsStream;\n const labels = (await action.metadata()).variables;\n this.pushHeader(data, labels);\n resultStream.on('error', error => data.emit('error', error));\n resultStream.on('data', bindings => this.pushRow(data, labels, bindings));\n }\n else {\n resultStream = action.quadStream;\n this.pushHeader(data, QUAD_TERM_NAMES_VARS);\n resultStream.on('error', error => data.emit('error', error));\n resultStream.on('data', quad => data.push(`${(0, rdf_terms_1.getTerms)(quad).map(term => this.pad(term.value)).join(' ')}\\n`));\n }\n resultStream.on('end', () => data.push(null));\n return { data };\n }\n}\nexports.ActorQueryResultSerializeTable = ActorQueryResultSerializeTable;\n//# sourceMappingURL=ActorQueryResultSerializeTable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerializeTable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeTree = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_query_result_serialize_1 = require(\"@comunica/bus-query-result-serialize\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst sparqljson_to_tree_1 = require(\"sparqljson-to-tree\");\n/**\n * A comunica Tree Query Result Serialize Actor.\n */\nclass ActorQueryResultSerializeTree extends bus_query_result_serialize_1.ActorQueryResultSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{ \"tree\": 0.5 }} mediaTypePriorities\n * \\ @defaultNested {{ \"tree\": \"https://comunica.linkeddatafragments.org/#results_tree\" }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n /**\n *\n * @param {BindingsStream} bindingsStream\n * @param context\n * @param {IConverterSettings} converterSettings\n * @return {Promise}\n */\n static bindingsStreamToGraphQl(bindingsStream, context, converterSettings) {\n const actionContext = core_1.ActionContext.ensureActionContext(context);\n return new Promise((resolve, reject) => {\n const bindingsArray = [];\n const converter = new sparqljson_to_tree_1.Converter(converterSettings);\n const schema = {\n singularizeVariables: actionContext.get(context_entries_1.KeysInitQuery.graphqlSingularizeVariables) || {},\n };\n bindingsStream.on('error', reject);\n bindingsStream.on('data', (bindings) => {\n bindingsArray.push(Object.fromEntries([...bindings]\n .map(([key, value]) => [key.value, value])));\n });\n bindingsStream.on('end', () => {\n resolve(converter.bindingsToTree(bindingsArray, schema));\n });\n });\n }\n async testHandleChecked(action) {\n if (action.type !== 'bindings') {\n throw new Error('This actor can only handle bindings streams.');\n }\n return true;\n }\n async runHandle(action, mediaType) {\n const data = new stream_1.Readable();\n data._read = () => {\n // Do nothing\n };\n const resultStream = action.bindingsStream;\n resultStream.on('error', error => data.emit('error', error));\n ActorQueryResultSerializeTree.bindingsStreamToGraphQl(resultStream, action.context, { materializeRdfJsTerms: true })\n .then((result) => {\n data.push(JSON.stringify(result, null, ' '));\n data.push(null);\n })\n .catch(error => data.emit('error', error));\n return { data };\n }\n}\nexports.ActorQueryResultSerializeTree = ActorQueryResultSerializeTree;\n//# sourceMappingURL=ActorQueryResultSerializeTree.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindingsStreamToGraphQl = void 0;\n__exportStar(require(\"./ActorQueryResultSerializeTree\"), exports);\nconst ActorQueryResultSerializeTree_1 = require(\"./ActorQueryResultSerializeTree\");\nconst { bindingsStreamToGraphQl } = ActorQueryResultSerializeTree_1.ActorQueryResultSerializeTree;\nexports.bindingsStreamToGraphQl = bindingsStreamToGraphQl;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinEntriesSortCardinality = void 0;\nconst bus_rdf_join_entries_sort_1 = require(\"@comunica/bus-rdf-join-entries-sort\");\n/**\n * An actor that sorts join entries by increasing cardinality.\n */\nclass ActorRdfJoinEntriesSortCardinality extends bus_rdf_join_entries_sort_1.ActorRdfJoinEntriesSort {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const entries = [...action.entries]\n .sort((entryLeft, entryRight) => entryLeft.metadata.cardinality.value - entryRight.metadata.cardinality.value);\n return { entries };\n }\n}\nexports.ActorRdfJoinEntriesSortCardinality = ActorRdfJoinEntriesSortCardinality;\n//# sourceMappingURL=ActorRdfJoinEntriesSortCardinality.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinEntriesSortCardinality\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinHash = void 0;\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\nconst asyncjoin_1 = require(\"asyncjoin\");\n/**\n * A comunica Hash RDF Join Actor.\n */\nclass ActorRdfJoinHash extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'hash',\n limitEntries: 2,\n });\n }\n async getOutput(action) {\n const metadatas = await bus_rdf_join_1.ActorRdfJoin.getMetadatas(action.entries);\n const variables = bus_rdf_join_1.ActorRdfJoin.overlappingVariables(metadatas);\n const join = new asyncjoin_1.HashJoin(action.entries[0].output.bindingsStream, action.entries[1].output.bindingsStream, entry => bus_rdf_join_1.ActorRdfJoin.hash(entry, variables), bus_rdf_join_1.ActorRdfJoin.joinBindings);\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async () => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n async getJoinCoefficients(action, metadatas) {\n const requestInitialTimes = bus_rdf_join_1.ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = bus_rdf_join_1.ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\nexports.ActorRdfJoinHash = ActorRdfJoinHash;\n//# sourceMappingURL=ActorRdfJoinHash.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinHash\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinMultiBind = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica Multi-way Bind RDF Join Actor.\n */\nclass ActorRdfJoinMultiBind extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'bind',\n canHandleUndefs: true,\n });\n }\n /**\n * Create a new bindings stream that takes every binding of the base stream\n * and binds it to the remaining patterns, evaluates those patterns, and emits all their bindings.\n *\n * @param bindOrder The order in which elements should be bound.\n * @param baseStream The base stream.\n * @param operations The operations to bind with each binding of the base stream.\n * @param operationBinder A callback to retrieve the bindings stream of bound operations.\n * @param optional If the original bindings should be emitted when the resulting bindings stream is empty.\n * @return {BindingsStream}\n */\n static createBindStream(bindOrder, baseStream, operations, operationBinder, optional) {\n // Create bindings function\n const binder = (bindings) => {\n // We don't bind the filter because filters are always handled last,\n // and we need to avoid binding filters of sub-queries, which are to be handled first. (see spec test bind10)\n const subOperations = operations\n .map(operation => (0, bus_query_operation_1.materializeOperation)(operation, bindings, { bindFilter: false }));\n const bindingsMerger = (subBindings) => subBindings.merge(bindings);\n return new asynciterator_1.TransformIterator(async () => (await operationBinder(subOperations, bindings))\n .transform({ map: bindingsMerger }), { maxBufferSize: 128 });\n };\n // Create an iterator that binds elements from the base stream in different orders\n switch (bindOrder) {\n case 'depth-first':\n return new asynciterator_1.MultiTransformIterator(baseStream, { autoStart: false, multiTransform: binder, optional });\n case 'breadth-first':\n return new asynciterator_1.UnionIterator(baseStream.transform({\n map: binder,\n optional,\n }), { autoStart: false });\n default:\n throw new Error(`Received request for unknown bind order: ${bindOrder}`);\n }\n }\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n async sortJoinEntries(entries, context) {\n // If there is a stream that can contain undefs, we don't modify the join order.\n const canContainUndefs = entries.some(entry => entry.metadata.canContainUndefs);\n if (canContainUndefs) {\n return entries;\n }\n // Calculate number of occurrences of each variable\n const variableOccurrences = {};\n for (const entry of entries) {\n for (const variable of entry.metadata.variables) {\n let counter = variableOccurrences[variable.value];\n if (!counter) {\n counter = 0;\n }\n variableOccurrences[variable.value] = ++counter;\n }\n }\n // Determine variables that occur in at least two join entries\n const multiOccurrenceVariables = [];\n for (const [variable, count] of Object.entries(variableOccurrences)) {\n if (count >= 2) {\n multiOccurrenceVariables.push(variable);\n }\n }\n // Reject if no entries have common variables\n if (multiOccurrenceVariables.length === 0) {\n throw new Error(`Bind join can only join entries with at least one common variable`);\n }\n // Determine entries without common variables\n // These will be placed in the back of the sorted array\n const entriesWithoutCommonVariables = [];\n for (const entry of entries) {\n let hasCommon = false;\n for (const variable of entry.metadata.variables) {\n if (multiOccurrenceVariables.includes(variable.value)) {\n hasCommon = true;\n break;\n }\n }\n if (!hasCommon) {\n entriesWithoutCommonVariables.push(entry);\n }\n }\n return (await this.mediatorJoinEntriesSort.mediate({ entries, context })).entries\n .sort((entryLeft, entryRight) => {\n // Sort to make sure that entries without common variables come last in the array.\n // For all other entries, the original order is kept.\n const leftWithoutCommonVariables = entriesWithoutCommonVariables.includes(entryLeft);\n const rightWithoutCommonVariables = entriesWithoutCommonVariables.includes(entryRight);\n if (leftWithoutCommonVariables === rightWithoutCommonVariables) {\n return 0;\n }\n return leftWithoutCommonVariables ?\n 1 :\n -1;\n });\n }\n async getOutput(action) {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entriesUnsorted = await bus_rdf_join_1.ActorRdfJoin.getEntriesWithMetadatas(action.entries);\n const entries = await this.sortJoinEntries(entriesUnsorted, action.context);\n this.logDebug(action.context, 'First entry for Bind Join: ', () => ({ entry: entries[0].operation, metadata: entries[0].metadata }));\n // Close the non-smallest streams\n for (const [i, element] of entries.entries()) {\n if (i !== 0) {\n element.output.bindingsStream.close();\n }\n }\n // Take the stream with the lowest cardinality\n const smallestStream = entries[0].output;\n const remainingEntries = [...entries];\n remainingEntries.splice(0, 1);\n // Bind the remaining patterns for each binding in the stream\n const subContext = action.context\n .set(context_entries_1.KeysQueryOperation.joinLeftMetadata, entries[0].metadata)\n .set(context_entries_1.KeysQueryOperation.joinRightMetadatas, remainingEntries.map(entry => entry.metadata));\n const bindingsStream = ActorRdfJoinMultiBind.createBindStream(this.bindOrder, smallestStream.bindingsStream, remainingEntries.map(entry => entry.operation), async (operations, operationBindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n const operation = operations.length === 1 ?\n operations[0] :\n ActorRdfJoinMultiBind.FACTORY.createJoin(operations);\n const output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ operation, context: subContext?.set(context_entries_1.KeysQueryOperation.joinBindings, operationBindings) }));\n return output.bindingsStream;\n }, false);\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: () => this.constructResultMetadata(entries, entries.map(entry => entry.metadata), action.context),\n },\n physicalPlanMetadata: {\n bindIndex: entriesUnsorted.indexOf(entries[0]),\n bindOrder: this.bindOrder,\n },\n };\n }\n async getJoinCoefficients(action, metadatas) {\n // Order the entries so we can pick the first one (usually the one with the lowest cardinality)\n const entries = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entries.map(entry => entry.metadata);\n const requestInitialTimes = bus_rdf_join_1.ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = bus_rdf_join_1.ActorRdfJoin.getRequestItemTimes(metadatas);\n // Determine first stream and remaining ones\n const remainingEntries = [...entries];\n const remainingRequestInitialTimes = [...requestInitialTimes];\n const remainingRequestItemTimes = [...requestItemTimes];\n remainingEntries.splice(0, 1);\n remainingRequestInitialTimes.splice(0, 1);\n remainingRequestItemTimes.splice(0, 1);\n // Reject binding on some operation types\n if (remainingEntries\n .some(entry => entry.operation.type === sparqlalgebrajs_1.Algebra.types.EXTEND || entry.operation.type === sparqlalgebrajs_1.Algebra.types.GROUP)) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n // Determine selectivities of smallest entry with all other entries\n const selectivities = await Promise.all(remainingEntries\n .map(async (entry) => (await this.mediatorJoinSelectivity.mediate({\n entries: [entries[0], entry],\n context: action.context,\n })).selectivity * this.selectivityModifier));\n // Determine coefficients for remaining entries\n const cardinalityRemaining = remainingEntries\n .map((entry, i) => entry.metadata.cardinality.value * selectivities[i])\n .reduce((sum, element) => sum + element, 0);\n const receiveInitialCostRemaining = remainingRequestInitialTimes\n .reduce((sum, element, i) => sum + (element * selectivities[i]), 0);\n const receiveItemCostRemaining = remainingRequestItemTimes\n .reduce((sum, element, i) => sum + (element * selectivities[i]), 0);\n return {\n iterations: metadatas[0].cardinality.value * cardinalityRemaining,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * (requestItemTimes[0] +\n receiveInitialCostRemaining +\n cardinalityRemaining * receiveItemCostRemaining),\n };\n }\n}\nexports.ActorRdfJoinMultiBind = ActorRdfJoinMultiBind;\nActorRdfJoinMultiBind.FACTORY = new sparqlalgebrajs_1.Factory();\n//# sourceMappingURL=ActorRdfJoinMultiBind.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinMultiBind\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinMultiEmpty = void 0;\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\nconst asynciterator_1 = require(\"asynciterator\");\n/**\n * A comunica Multi Empty RDF Join Actor.\n */\nclass ActorRdfJoinMultiEmpty extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-empty',\n });\n }\n async test(action) {\n if ((await bus_rdf_join_1.ActorRdfJoin.getMetadatas(action.entries))\n .every(metadata => bus_rdf_join_1.ActorRdfJoin.getCardinality(metadata).value > 0)) {\n throw new Error(`Actor ${this.name} can only join entries where at least one is empty`);\n }\n return super.test(action);\n }\n async getOutput(action) {\n // Close all entries\n for (const entry of action.entries) {\n entry.output.bindingsStream.close();\n }\n return {\n result: {\n bindingsStream: new asynciterator_1.ArrayIterator([], { autoStart: false }),\n metadata: async () => ({\n cardinality: { type: 'exact', value: 0 },\n canContainUndefs: false,\n variables: bus_rdf_join_1.ActorRdfJoin.joinVariables(await bus_rdf_join_1.ActorRdfJoin.getMetadatas(action.entries)),\n }),\n type: 'bindings',\n },\n };\n }\n async getJoinCoefficients(action, metadatas) {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\nexports.ActorRdfJoinMultiEmpty = ActorRdfJoinMultiEmpty;\n//# sourceMappingURL=ActorRdfJoinMultiEmpty.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinMultiEmpty\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinMultiSmallest = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A Multi Smallest RDF Join Actor.\n * It accepts 3 or more streams, joins the smallest two, and joins the result with the remaining streams.\n */\nclass ActorRdfJoinMultiSmallest extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'multi-smallest',\n limitEntries: 3,\n limitEntriesMin: true,\n });\n }\n /**\n * Order the given join entries using the join-entries-sort bus.\n * @param {IJoinEntryWithMetadata[]} entries An array of join entries.\n * @param context The action context.\n * @return {IJoinEntryWithMetadata[]} The sorted join entries.\n */\n async sortJoinEntries(entries, context) {\n return (await this.mediatorJoinEntriesSort.mediate({ entries, context })).entries;\n }\n async getOutput(action) {\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entries = await this.sortJoinEntries(await bus_rdf_join_1.ActorRdfJoin.getEntriesWithMetadatas([...action.entries]), action.context);\n const smallestEntry1 = entries[0];\n const smallestEntry2 = entries[1];\n entries.splice(0, 2);\n // Join the two selected streams, and then join the result with the remaining streams\n const firstEntry = {\n output: bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorJoin\n .mediate({ type: action.type, entries: [smallestEntry1, smallestEntry2], context: action.context })),\n operation: ActorRdfJoinMultiSmallest.FACTORY\n .createJoin([smallestEntry1.operation, smallestEntry2.operation], false),\n };\n entries.push(firstEntry);\n return {\n result: await this.mediatorJoin.mediate({\n type: action.type,\n entries,\n context: action.context,\n }),\n physicalPlanMetadata: {\n smallest: [smallestEntry1, smallestEntry2],\n },\n };\n }\n async getJoinCoefficients(action, metadatas) {\n metadatas = [...metadatas];\n // Determine the two smallest streams by sorting (e.g. via cardinality)\n const entriesWithMetadata = await this.sortJoinEntries(action.entries\n .map((entry, i) => ({ ...entry, metadata: metadatas[i] })), action.context);\n metadatas = entriesWithMetadata.map(entry => entry.metadata);\n const requestInitialTimes = bus_rdf_join_1.ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = bus_rdf_join_1.ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value *\n metadatas.slice(2).reduce((acc, metadata) => acc * metadata.cardinality.value, 1),\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1] +\n metadatas.slice(2).reduce((sum, metadata, i) => sum + requestInitialTimes.slice(2)[i] +\n metadata.cardinality.value * requestItemTimes.slice(2)[i], 0),\n };\n }\n}\nexports.ActorRdfJoinMultiSmallest = ActorRdfJoinMultiSmallest;\nActorRdfJoinMultiSmallest.FACTORY = new sparqlalgebrajs_1.Factory();\n//# sourceMappingURL=ActorRdfJoinMultiSmallest.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinMultiSmallest\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinNestedLoop = void 0;\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\nconst asyncjoin_1 = require(\"asyncjoin\");\n/**\n * A comunica NestedLoop RDF Join Actor.\n */\nclass ActorRdfJoinNestedLoop extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n async getOutput(action) {\n const join = new asyncjoin_1.NestedLoopJoin(action.entries[0].output.bindingsStream, action.entries[1].output.bindingsStream, bus_rdf_join_1.ActorRdfJoin.joinBindings, { autoStart: false });\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async () => await this.constructResultMetadata(action.entries, await bus_rdf_join_1.ActorRdfJoin.getMetadatas(action.entries), action.context),\n },\n };\n }\n async getJoinCoefficients(action, metadatas) {\n const requestInitialTimes = bus_rdf_join_1.ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = bus_rdf_join_1.ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\nexports.ActorRdfJoinNestedLoop = ActorRdfJoinNestedLoop;\n//# sourceMappingURL=ActorRdfJoinNestedLoop.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinNestedLoop\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinNone = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * A comunica None RDF Join Actor.\n */\nclass ActorRdfJoinNone extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'none',\n limitEntries: 0,\n });\n }\n async test(action) {\n // Allow joining of one or zero streams\n if (action.entries.length > 0) {\n throw new Error(`Actor ${this.name} can only join zero entries`);\n }\n return await this.getJoinCoefficients();\n }\n async getOutput(action) {\n return {\n result: {\n bindingsStream: new asynciterator_1.ArrayIterator([BF.bindings()], { autoStart: false }),\n metadata: () => Promise.resolve({\n cardinality: { type: 'exact', value: 1 },\n canContainUndefs: false,\n variables: [],\n }),\n type: 'bindings',\n },\n };\n }\n async getJoinCoefficients() {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\nexports.ActorRdfJoinNone = ActorRdfJoinNone;\n//# sourceMappingURL=ActorRdfJoinNone.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinNone\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinSingle = void 0;\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\n/**\n * A comunica Single RDF Join Actor.\n */\nclass ActorRdfJoinSingle extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'single',\n limitEntries: 1,\n });\n this.includeInLogs = false;\n }\n async test(action) {\n // Allow joining of one or zero streams\n if (action.entries.length !== 1) {\n throw new Error(`Actor ${this.name} can only join a single entry`);\n }\n return await this.getJoinCoefficients();\n }\n async getOutput(action) {\n return {\n result: action.entries[0].output,\n };\n }\n async getJoinCoefficients() {\n return {\n iterations: 0,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: 0,\n };\n }\n}\nexports.ActorRdfJoinSingle = ActorRdfJoinSingle;\n//# sourceMappingURL=ActorRdfJoinSingle.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinSingle\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinSymmetricHash = void 0;\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\nconst asyncjoin_1 = require(\"asyncjoin\");\n/**\n * A comunica Hash RDF Join Actor.\n */\nclass ActorRdfJoinSymmetricHash extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'inner',\n physicalName: 'symmetric-hash',\n limitEntries: 2,\n });\n }\n async getOutput(action) {\n const metadatas = await bus_rdf_join_1.ActorRdfJoin.getMetadatas(action.entries);\n const variables = bus_rdf_join_1.ActorRdfJoin.overlappingVariables(metadatas);\n const join = new asyncjoin_1.SymmetricHashJoin(action.entries[0].output.bindingsStream, action.entries[1].output.bindingsStream, entry => ActorRdfJoinSymmetricHash.hash(entry, variables), bus_rdf_join_1.ActorRdfJoin.joinBindings);\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async () => await this.constructResultMetadata(action.entries, metadatas, action.context),\n },\n };\n }\n async getJoinCoefficients(action, metadatas) {\n const requestInitialTimes = bus_rdf_join_1.ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = bus_rdf_join_1.ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\nexports.ActorRdfJoinSymmetricHash = ActorRdfJoinSymmetricHash;\n//# sourceMappingURL=ActorRdfJoinSymmetricHash.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinSymmetricHash\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinMinusHashUndef = void 0;\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst BindingsIndex_1 = require(\"./BindingsIndex\");\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nclass ActorRdfJoinMinusHashUndef extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash-undef',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n async getOutput(action) {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n const metadatas = await bus_rdf_join_1.ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables = bus_rdf_join_1.ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index = new BindingsIndex_1.BindingsIndex(commonVariables);\n const bindingsStream = new asynciterator_1.TransformIterator(async () => {\n await new Promise(resolve => {\n buffer.bindingsStream.on('data', data => index.add(data));\n buffer.bindingsStream.on('end', resolve);\n });\n return output.bindingsStream.filter(data => !index.contains(data));\n }, { autoStart: false });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n async metadata() {\n const bufferMetadata = await output.metadata();\n const outputMetadata = await output.metadata();\n return {\n ...outputMetadata,\n canContainUndefs: bufferMetadata.canContainUndefs || outputMetadata.canContainUndefs,\n };\n },\n },\n };\n }\n return {\n result: output,\n };\n }\n async getJoinCoefficients(action, metadatas) {\n const requestInitialTimes = bus_rdf_join_1.ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = bus_rdf_join_1.ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n // Slightly increase iteration cost, as operations in our BindingsIndex do not happen in constant time\n // This enables the mediator to favor other minus actors,\n // while this one will only be selected when streams contain undefs.\n iterations: (metadatas[0].cardinality.value + metadatas[1].cardinality.value) * 1.01,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\nexports.ActorRdfJoinMinusHashUndef = ActorRdfJoinMinusHashUndef;\n//# sourceMappingURL=ActorRdfJoinMinusHashUndef.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingsIndex = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * A simple efficient tree-based index for maintaining bindings,\n * and checking whether or not a bindings is contained in this index.\n *\n * This will consider bindings with a variable term or a missing term\n * as a 'match-all' with other terms.\n */\nclass BindingsIndex {\n constructor(keys) {\n this.data = {};\n this.keys = keys;\n }\n static hashTerm(term) {\n return term && term.termType !== 'Variable' ? (0, rdf_string_1.termToString)(term) : '';\n }\n /**\n * Add the given bindings to the index.\n * @param {Bindings} bindings A bindings.\n */\n add(bindings) {\n if (this.isBindingsValid(bindings)) {\n let dataIt = this.data;\n for (const key of this.keys) {\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n let subDataIt = dataIt[dataKey];\n if (!subDataIt) {\n subDataIt = dataIt[dataKey] = {};\n }\n dataIt = subDataIt;\n }\n }\n }\n /**\n * Check if the given bindings is contained in this index.\n * @param {Bindings} bindings A bindings.\n * @return {boolean} If it exists in the index.\n */\n contains(bindings) {\n // Always return false if the bindings contain none of the expected keys\n if (!this.isBindingsValid(bindings)) {\n return false;\n }\n return this.containsRecursive(bindings, this.keys, [this.data]);\n }\n isBindingsValid(bindings) {\n let validKeys = false;\n for (const key of this.keys) {\n if (bindings.get(key)) {\n validKeys = true;\n break;\n }\n }\n return validKeys;\n }\n containsRecursive(bindings, keys, dataIndexes) {\n if (keys.length === 0) {\n return true;\n }\n let key;\n // eslint-disable-next-line prefer-const\n [key, ...keys] = keys;\n for (const data of dataIndexes) {\n // If the index contained a variable, all terms will match.\n const dataKey = BindingsIndex.hashTerm(bindings.get(key));\n if (!dataKey) {\n // Iterate over all entries\n let subDatas = Object.keys(data).map(subKey => data[subKey]);\n if (subDatas.length === 0) {\n subDatas = [{}];\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n }\n else {\n // Check the entry for the term, and the variable term.\n const subDatas = [data[dataKey], data['']].filter(Boolean);\n if (subDatas.length === 0) {\n continue;\n }\n if (this.containsRecursive(bindings, keys, subDatas)) {\n return true;\n }\n }\n }\n return false;\n }\n}\nexports.BindingsIndex = BindingsIndex;\n//# sourceMappingURL=BindingsIndex.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinMinusHashUndef\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinMinusHash = void 0;\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\nconst asynciterator_1 = require(\"asynciterator\");\n/**\n * A comunica Minus Hash RDF Join Actor.\n */\nclass ActorRdfJoinMinusHash extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'minus',\n physicalName: 'hash',\n limitEntries: 2,\n });\n }\n async getOutput(action) {\n const buffer = action.entries[1].output;\n const output = action.entries[0].output;\n const metadatas = await bus_rdf_join_1.ActorRdfJoin.getMetadatas(action.entries);\n const commonVariables = bus_rdf_join_1.ActorRdfJoin.overlappingVariables(metadatas);\n if (commonVariables.length > 0) {\n /**\n * To assure we've filtered all B (`buffer`) values from A (`output`) we wait until we've fetched all values of B.\n * Then we save these triples in `index` and use it to filter our A-stream.\n */\n const index = {};\n const bindingsStream = new asynciterator_1.TransformIterator(async () => {\n await new Promise(resolve => {\n buffer.bindingsStream.on('data', data => {\n index[bus_rdf_join_1.ActorRdfJoin.hash(data, commonVariables)] = true;\n });\n buffer.bindingsStream.on('end', resolve);\n });\n return output.bindingsStream.filter(data => !index[bus_rdf_join_1.ActorRdfJoin.hash(data, commonVariables)]);\n }, { autoStart: false });\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: output.metadata,\n },\n };\n }\n return {\n result: output,\n };\n }\n async getJoinCoefficients(action, metadatas) {\n const requestInitialTimes = bus_rdf_join_1.ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = bus_rdf_join_1.ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value + metadatas[1].cardinality.value,\n persistedItems: metadatas[0].cardinality.value,\n blockingItems: metadatas[0].cardinality.value,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\nexports.ActorRdfJoinMinusHash = ActorRdfJoinMinusHash;\n//# sourceMappingURL=ActorRdfJoinMinusHash.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinMinusHash\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinOptionalBind = void 0;\nconst actor_rdf_join_inner_multi_bind_1 = require(\"@comunica/actor-rdf-join-inner-multi-bind\");\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica Optional Bind RDF Join Actor.\n */\nclass ActorRdfJoinOptionalBind extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'bind',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n async getOutput(action) {\n // Close the right stream, since we don't need that one\n action.entries[1].output.bindingsStream.close();\n // Bind the right pattern for each binding in the stream\n const subContext = action.context\n .set(context_entries_1.KeysQueryOperation.joinLeftMetadata, await action.entries[0].output.metadata())\n .set(context_entries_1.KeysQueryOperation.joinRightMetadatas, [await action.entries[1].output.metadata()]);\n const bindingsStream = actor_rdf_join_inner_multi_bind_1.ActorRdfJoinMultiBind.createBindStream(this.bindOrder, action.entries[0].output.bindingsStream, [action.entries[1].operation], async (operations, operationBindings) => {\n // Send the materialized patterns to the mediator for recursive join evaluation.\n // Length of operations will always be 1\n const operation = operations[0];\n const output = bus_query_operation_1.ActorQueryOperation.getSafeBindings(await this.mediatorQueryOperation.mediate({ operation, context: subContext?.set(context_entries_1.KeysQueryOperation.joinBindings, operationBindings) }));\n return output.bindingsStream;\n }, true);\n return {\n result: {\n type: 'bindings',\n bindingsStream,\n metadata: async () => await this.constructResultMetadata(action.entries, await bus_rdf_join_1.ActorRdfJoin.getMetadatas(action.entries), action.context, { canContainUndefs: true }),\n },\n };\n }\n async getJoinCoefficients(action, metadatas) {\n const requestInitialTimes = bus_rdf_join_1.ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = bus_rdf_join_1.ActorRdfJoin.getRequestItemTimes(metadatas);\n // Reject binding on some operation types\n if (action.entries[1].operation.type === sparqlalgebrajs_1.Algebra.types.EXTEND ||\n action.entries[1].operation.type === sparqlalgebrajs_1.Algebra.types.GROUP) {\n throw new Error(`Actor ${this.name} can not bind on Extend and Group operations`);\n }\n // Determine selectivity of join\n const selectivity = (await this.mediatorJoinSelectivity.mediate({\n entries: action.entries,\n context: action.context,\n })).selectivity * this.selectivityModifier;\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value * selectivity,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] +\n metadatas[0].cardinality.value * selectivity * (requestItemTimes[0] +\n requestInitialTimes[1] +\n metadatas[1].cardinality.value * requestItemTimes[1]),\n };\n }\n}\nexports.ActorRdfJoinOptionalBind = ActorRdfJoinOptionalBind;\n//# sourceMappingURL=ActorRdfJoinOptionalBind.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinOptionalBind\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinOptionalNestedLoop = void 0;\nconst bus_rdf_join_1 = require(\"@comunica/bus-rdf-join\");\nconst asyncjoin_1 = require(\"asyncjoin\");\n/**\n * A comunica Optional Nested Loop RDF Join Actor.\n */\nclass ActorRdfJoinOptionalNestedLoop extends bus_rdf_join_1.ActorRdfJoin {\n constructor(args) {\n super(args, {\n logicalType: 'optional',\n physicalName: 'nested-loop',\n limitEntries: 2,\n canHandleUndefs: true,\n });\n }\n async getOutput(action) {\n const join = new asyncjoin_1.NestedLoopJoin(action.entries[0].output.bindingsStream, action.entries[1].output.bindingsStream, bus_rdf_join_1.ActorRdfJoin.joinBindings, { optional: true, autoStart: false });\n return {\n result: {\n type: 'bindings',\n bindingsStream: join,\n metadata: async () => await this.constructResultMetadata(action.entries, await bus_rdf_join_1.ActorRdfJoin.getMetadatas(action.entries), action.context, { canContainUndefs: true }),\n },\n };\n }\n async getJoinCoefficients(action, metadatas) {\n const requestInitialTimes = bus_rdf_join_1.ActorRdfJoin.getRequestInitialTimes(metadatas);\n const requestItemTimes = bus_rdf_join_1.ActorRdfJoin.getRequestItemTimes(metadatas);\n return {\n iterations: metadatas[0].cardinality.value * metadatas[1].cardinality.value,\n persistedItems: 0,\n blockingItems: 0,\n requestTime: requestInitialTimes[0] + metadatas[0].cardinality.value * requestItemTimes[0] +\n requestInitialTimes[1] + metadatas[1].cardinality.value * requestItemTimes[1],\n };\n }\n}\nexports.ActorRdfJoinOptionalNestedLoop = ActorRdfJoinOptionalNestedLoop;\n//# sourceMappingURL=ActorRdfJoinOptionalNestedLoop.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinOptionalNestedLoop\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JoinTypes = exports.ActorRdfJoinSelectivityVariableCounting = void 0;\nconst bus_rdf_join_selectivity_1 = require(\"@comunica/bus-rdf-join-selectivity\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\n/**\n * A comunica Variable Counting RDF Join Selectivity Actor.\n * Based on the \"variable counting predicates\" heuristic from\n * \"SPARQL basic graph pattern optimization using selectivity estimation.\"\n */\nclass ActorRdfJoinSelectivityVariableCounting extends bus_rdf_join_selectivity_1.ActorRdfJoinSelectivity {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return { accuracy: 0.5 };\n }\n static getPatternCost(pattern) {\n let cost = 1;\n if (pattern.subject.termType === 'Variable') {\n cost += 4;\n }\n if (pattern.predicate.termType === 'Variable' || pattern.type === sparqlalgebrajs_1.Algebra.types.PATH) {\n cost += 1;\n }\n if (pattern.object.termType === 'Variable') {\n cost += 2;\n }\n if (pattern.graph.termType === 'Variable') {\n cost += 1;\n }\n return cost / 9;\n }\n static getJoinTypes(operation1, operation2) {\n const joinTypes = [];\n // Check operation1.subject\n if (operation1.subject.termType === 'Variable') {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundSG);\n }\n }\n else {\n if (operation1.subject.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundSS);\n }\n if (operation2.type === 'pattern' && operation1.subject.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundSP);\n }\n if (operation1.subject.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundSO);\n }\n if (operation1.subject.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundSG);\n }\n }\n // Check operation1.predicate\n if (operation1.type === 'pattern') {\n if (operation1.predicate.termType === 'Variable') {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundPG);\n }\n }\n else {\n if (operation1.predicate.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundPS);\n }\n if (operation2.type === 'pattern' && operation1.predicate.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundPP);\n }\n if (operation1.predicate.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundPO);\n }\n if (operation1.predicate.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundPG);\n }\n }\n }\n // Check operation1.object\n if (operation1.object.termType === 'Variable') {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundOG);\n }\n }\n else {\n if (operation1.object.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundOS);\n }\n if (operation2.type === 'pattern' && operation1.object.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundOP);\n }\n if (operation1.object.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundOO);\n }\n if (operation1.object.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundOG);\n }\n }\n // Check operation1.graph\n if (operation1.graph.termType === 'Variable') {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.unboundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.unboundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.unboundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.unboundGG);\n }\n }\n else {\n if (operation1.graph.equals(operation2.subject)) {\n joinTypes.push(JoinTypes.boundGS);\n }\n if (operation2.type === 'pattern' && operation1.graph.equals(operation2.predicate)) {\n joinTypes.push(JoinTypes.boundGP);\n }\n if (operation1.graph.equals(operation2.object)) {\n joinTypes.push(JoinTypes.boundGO);\n }\n if (operation1.graph.equals(operation2.graph)) {\n joinTypes.push(JoinTypes.boundGG);\n }\n }\n return joinTypes;\n }\n static getOperationsPairwiseJoinCost(operation1, operation2) {\n let cost = ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n for (const joinType of ActorRdfJoinSelectivityVariableCounting.getJoinTypes(operation1, operation2)) {\n switch (joinType) {\n case JoinTypes.boundSS:\n cost -= 2 * 2;\n break;\n case JoinTypes.boundSP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundSO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundSG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPP:\n // Special case: patterns with equal (bound) predicates have the highest cost\n return 1;\n case JoinTypes.boundPO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundPG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOS:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundOO:\n cost -= 1 * 2;\n break;\n case JoinTypes.boundOG:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGS:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGP:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGO:\n cost -= 3 * 2;\n break;\n case JoinTypes.boundGG:\n cost -= 3 * 2;\n break;\n case JoinTypes.unboundSS:\n cost -= 2;\n break;\n case JoinTypes.unboundSP:\n cost -= 3;\n break;\n case JoinTypes.unboundSO:\n cost -= 1;\n break;\n case JoinTypes.unboundSG:\n cost -= 3;\n break;\n case JoinTypes.unboundPS:\n cost -= 3;\n break;\n case JoinTypes.unboundPP:\n cost -= 3;\n break;\n case JoinTypes.unboundPO:\n cost -= 3;\n break;\n case JoinTypes.unboundPG:\n cost -= 3;\n break;\n case JoinTypes.unboundOS:\n cost -= 1;\n break;\n case JoinTypes.unboundOP:\n cost -= 3;\n break;\n case JoinTypes.unboundOO:\n cost -= 1;\n break;\n case JoinTypes.unboundOG:\n cost -= 3;\n break;\n case JoinTypes.unboundGS:\n cost -= 3;\n break;\n case JoinTypes.unboundGP:\n cost -= 3;\n break;\n case JoinTypes.unboundGO:\n cost -= 3;\n break;\n case JoinTypes.unboundGG:\n cost -= 3;\n break;\n }\n }\n return cost / ActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST;\n }\n static getOperationsJoinCost(operations) {\n // Determine all operations that select values (patterns and paths)\n const patterns = [];\n for (const operation of operations) {\n sparqlalgebrajs_1.Util.recurseOperation(operation, {\n [sparqlalgebrajs_1.Algebra.types.PATTERN](pattern) {\n patterns.push(pattern);\n return false;\n },\n [sparqlalgebrajs_1.Algebra.types.PATH](path) {\n patterns.push(path);\n return false;\n },\n });\n }\n // Determine pairwise costs\n let totalCost = 0;\n let costEntries = 0;\n for (const pattern1 of patterns) {\n for (const pattern2 of patterns) {\n if (pattern1 !== pattern2) {\n totalCost += ActorRdfJoinSelectivityVariableCounting.getOperationsPairwiseJoinCost(pattern1, pattern2);\n costEntries++;\n }\n }\n }\n // Combine all pairwise costs, and multiply with costs of each pattern separately\n return totalCost / costEntries * patterns\n .reduce((factor, pattern) => factor * ActorRdfJoinSelectivityVariableCounting.getPatternCost(pattern), 1);\n }\n async run(action) {\n if (action.entries.length <= 1) {\n return { selectivity: 1 };\n }\n return {\n selectivity: ActorRdfJoinSelectivityVariableCounting\n .getOperationsJoinCost(action.entries.map(entry => entry.operation)),\n };\n }\n}\nexports.ActorRdfJoinSelectivityVariableCounting = ActorRdfJoinSelectivityVariableCounting;\n// Calculated as sum of unbound join type costs times 2 (best-case)\nActorRdfJoinSelectivityVariableCounting.MAX_PAIRWISE_COST = 41 * 2;\nvar JoinTypes;\n(function (JoinTypes) {\n JoinTypes[JoinTypes[\"boundSS\"] = 0] = \"boundSS\";\n JoinTypes[JoinTypes[\"boundSP\"] = 1] = \"boundSP\";\n JoinTypes[JoinTypes[\"boundSO\"] = 2] = \"boundSO\";\n JoinTypes[JoinTypes[\"boundSG\"] = 3] = \"boundSG\";\n JoinTypes[JoinTypes[\"boundPS\"] = 4] = \"boundPS\";\n JoinTypes[JoinTypes[\"boundPP\"] = 5] = \"boundPP\";\n JoinTypes[JoinTypes[\"boundPO\"] = 6] = \"boundPO\";\n JoinTypes[JoinTypes[\"boundPG\"] = 7] = \"boundPG\";\n JoinTypes[JoinTypes[\"boundOS\"] = 8] = \"boundOS\";\n JoinTypes[JoinTypes[\"boundOP\"] = 9] = \"boundOP\";\n JoinTypes[JoinTypes[\"boundOO\"] = 10] = \"boundOO\";\n JoinTypes[JoinTypes[\"boundOG\"] = 11] = \"boundOG\";\n JoinTypes[JoinTypes[\"boundGS\"] = 12] = \"boundGS\";\n JoinTypes[JoinTypes[\"boundGP\"] = 13] = \"boundGP\";\n JoinTypes[JoinTypes[\"boundGO\"] = 14] = \"boundGO\";\n JoinTypes[JoinTypes[\"boundGG\"] = 15] = \"boundGG\";\n JoinTypes[JoinTypes[\"unboundSS\"] = 16] = \"unboundSS\";\n JoinTypes[JoinTypes[\"unboundSP\"] = 17] = \"unboundSP\";\n JoinTypes[JoinTypes[\"unboundSO\"] = 18] = \"unboundSO\";\n JoinTypes[JoinTypes[\"unboundSG\"] = 19] = \"unboundSG\";\n JoinTypes[JoinTypes[\"unboundPS\"] = 20] = \"unboundPS\";\n JoinTypes[JoinTypes[\"unboundPP\"] = 21] = \"unboundPP\";\n JoinTypes[JoinTypes[\"unboundPO\"] = 22] = \"unboundPO\";\n JoinTypes[JoinTypes[\"unboundPG\"] = 23] = \"unboundPG\";\n JoinTypes[JoinTypes[\"unboundOS\"] = 24] = \"unboundOS\";\n JoinTypes[JoinTypes[\"unboundOP\"] = 25] = \"unboundOP\";\n JoinTypes[JoinTypes[\"unboundOO\"] = 26] = \"unboundOO\";\n JoinTypes[JoinTypes[\"unboundOG\"] = 27] = \"unboundOG\";\n JoinTypes[JoinTypes[\"unboundGS\"] = 28] = \"unboundGS\";\n JoinTypes[JoinTypes[\"unboundGP\"] = 29] = \"unboundGP\";\n JoinTypes[JoinTypes[\"unboundGO\"] = 30] = \"unboundGO\";\n JoinTypes[JoinTypes[\"unboundGG\"] = 31] = \"unboundGG\";\n})(JoinTypes = exports.JoinTypes || (exports.JoinTypes = {}));\n//# sourceMappingURL=ActorRdfJoinSelectivityVariableCounting.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinSelectivityVariableCounting\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataAll = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_rdf_metadata_1 = require(\"@comunica/bus-rdf-metadata\");\n/**\n * A comunica All RDF Metadata Actor.\n */\nclass ActorRdfMetadataAll extends bus_rdf_metadata_1.ActorRdfMetadata {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const data = new stream_1.Readable({ objectMode: true });\n const metadata = new stream_1.Readable({ objectMode: true });\n // Forward errors (attach them immediately as they could arrive earlier)\n action.quads.on('error', error => {\n data.emit('error', error);\n metadata.emit('error', error);\n });\n // Delay attachment of listeners until the data or metadata stream is being read.\n const attachListeners = () => {\n // Attach listeners only once\n data._read = metadata._read = () => {\n // Do nothing\n };\n // Forward quads to both streams\n action.quads.on('data', quad => {\n data.push(quad);\n metadata.push(quad);\n });\n // Terminate both streams on-end\n action.quads.on('end', () => {\n data.push(null);\n metadata.push(null);\n });\n };\n data._read = metadata._read = () => {\n attachListeners();\n };\n return { data, metadata };\n }\n}\nexports.ActorRdfMetadataAll = ActorRdfMetadataAll;\n//# sourceMappingURL=ActorRdfMetadataAll.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataAll\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtractAllowHttpMethods = void 0;\nconst bus_rdf_metadata_extract_1 = require(\"@comunica/bus-rdf-metadata-extract\");\n/**\n * A comunica Allow HTTP Methods RDF Metadata Extract Actor.\n */\nclass ActorRdfMetadataExtractAllowHttpMethods extends bus_rdf_metadata_extract_1.ActorRdfMetadataExtract {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const metadata = {};\n if (action.headers?.get('allow')) {\n metadata.allowHttpMethods = action.headers.get('allow')?.split(/, */u);\n }\n return { metadata };\n }\n}\nexports.ActorRdfMetadataExtractAllowHttpMethods = ActorRdfMetadataExtractAllowHttpMethods;\n//# sourceMappingURL=ActorRdfMetadataExtractAllowHttpMethods.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtractAllowHttpMethods\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtractHydraControls = void 0;\nconst bus_rdf_metadata_extract_1 = require(\"@comunica/bus-rdf-metadata-extract\");\nconst uritemplate_1 = require(\"uritemplate\");\n/**\n * An RDF Metadata Extract Actor that extracts all Hydra controls from the metadata stream.\n */\nclass ActorRdfMetadataExtractHydraControls extends bus_rdf_metadata_extract_1.ActorRdfMetadataExtract {\n constructor(args) {\n super(args);\n this.parsedUriTemplateCache = {};\n }\n async test(action) {\n return true;\n }\n /**\n * Collect all Hydra page links from the given Hydra properties object.\n * @param pageUrl The page URL in which the Hydra properties are defined.\n * @param hydraProperties The collected Hydra properties.\n * @return The Hydra links\n */\n getLinks(pageUrl, hydraProperties) {\n return Object.fromEntries(ActorRdfMetadataExtractHydraControls.LINK_TYPES.map(link => {\n // First check the correct hydra:next, then the deprecated hydra:nextPage\n const links = hydraProperties[link] || hydraProperties[`${link}Page`];\n const linkTargets = links && links[pageUrl];\n return [link, linkTargets && linkTargets.length > 0 ? linkTargets[0] : null];\n }));\n }\n /**\n * Parse a URI template, or retrieve it from a cache.\n * @param {string} template A URI template string.\n * @return {} A parsed URI template object.\n */\n parseUriTemplateCached(template) {\n const cachedUriTemplate = this.parsedUriTemplateCache[template];\n if (cachedUriTemplate) {\n return cachedUriTemplate;\n }\n // eslint-disable-next-line no-return-assign\n return this.parsedUriTemplateCache[template] = (0, uritemplate_1.parse)(template);\n }\n /**\n * Collect all search forms from the given Hydra properties object.\n * @param hydraProperties The collected Hydra properties.\n * @return The search forms.\n */\n getSearchForms(hydraProperties) {\n const searchFormData = hydraProperties.search;\n const searchForms = [];\n if (searchFormData) {\n for (const dataset in searchFormData) {\n for (const searchFormId of searchFormData[dataset]) {\n const searchTemplates = (hydraProperties.template || {})[searchFormId] || [];\n // Parse the template\n if (searchTemplates.length !== 1) {\n throw new Error(`Expected 1 hydra:template for ${searchFormId}`);\n }\n const template = searchTemplates[0];\n const searchTemplate = this.parseUriTemplateCached(template);\n // Parse the template mappings\n const mappings = Object\n .fromEntries(((hydraProperties.mapping || {})[searchFormId] || [])\n .map(mapping => {\n const variable = ((hydraProperties.variable || {})[mapping] || [])[0];\n const property = ((hydraProperties.property || {})[mapping] || [])[0];\n if (!variable) {\n throw new Error(`Expected a hydra:variable for ${mapping}`);\n }\n if (!property) {\n throw new Error(`Expected a hydra:property for ${mapping}`);\n }\n return [property, variable];\n }));\n // Gets the URL of the Triple Pattern Fragment with the given triple pattern\n const getUri = (entries) => searchTemplate\n .expand(Object.fromEntries(Object.keys(entries).map(key => [mappings[key], entries[key]])));\n searchForms.push({ dataset, template, mappings, getUri });\n }\n }\n }\n return { values: searchForms };\n }\n /**\n * Collect all hydra properties from a given metadata stream\n * in a nice convenient nested hash (property / subject / objects).\n * @param {RDF.Stream} metadata\n * @return The collected Hydra properties.\n */\n getHydraProperties(metadata) {\n return new Promise((resolve, reject) => {\n metadata.on('error', reject);\n // Collect all hydra properties in a nice convenient nested hash (property / subject / objects).\n const hydraProperties = {};\n metadata.on('data', quad => {\n if (quad.predicate.value.startsWith(ActorRdfMetadataExtractHydraControls.HYDRA)) {\n const property = quad.predicate.value.slice(ActorRdfMetadataExtractHydraControls.HYDRA.length);\n const subjectProperties = hydraProperties[property] || (hydraProperties[property] = {});\n const objects = subjectProperties[quad.subject.value] || (subjectProperties[quad.subject.value] = []);\n objects.push(quad.object.value);\n }\n });\n metadata.on('end', () => resolve(hydraProperties));\n });\n }\n async run(action) {\n const metadata = {};\n const hydraProperties = await this.getHydraProperties(action.metadata);\n Object.assign(metadata, this.getLinks(action.url, hydraProperties));\n metadata.searchForms = this.getSearchForms(hydraProperties);\n return { metadata };\n }\n}\nexports.ActorRdfMetadataExtractHydraControls = ActorRdfMetadataExtractHydraControls;\nActorRdfMetadataExtractHydraControls.HYDRA = 'http://www.w3.org/ns/hydra/core#';\nActorRdfMetadataExtractHydraControls.LINK_TYPES = ['first', 'next', 'previous', 'last'];\n//# sourceMappingURL=ActorRdfMetadataExtractHydraControls.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtractHydraControls\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtractHydraCount = void 0;\nconst bus_rdf_metadata_extract_1 = require(\"@comunica/bus-rdf-metadata-extract\");\n/**\n * An RDF Metadata Extract Actor that extracts total items counts from a metadata stream based on the given predicates.\n */\nclass ActorRdfMetadataExtractHydraCount extends bus_rdf_metadata_extract_1.ActorRdfMetadataExtract {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n run(action) {\n return new Promise((resolve, reject) => {\n // Forward errors\n action.metadata.on('error', reject);\n // Immediately resolve when a value has been found.\n action.metadata.on('data', quad => {\n if (this.predicates.includes(quad.predicate.value)) {\n resolve({ metadata: { cardinality: { type: 'estimate', value: Number.parseInt(quad.object.value, 10) } } });\n }\n });\n // If no value has been found, assume infinity.\n action.metadata.on('end', () => {\n resolve({ metadata: { cardinality: { type: 'estimate', value: Number.POSITIVE_INFINITY } } });\n });\n });\n }\n}\nexports.ActorRdfMetadataExtractHydraCount = ActorRdfMetadataExtractHydraCount;\n//# sourceMappingURL=ActorRdfMetadataExtractHydraCount.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtractHydraCount\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtractHydraPagesize = void 0;\nconst bus_rdf_metadata_extract_1 = require(\"@comunica/bus-rdf-metadata-extract\");\n/**\n * A comunica Hydra Pagesize RDF Metadata Extract Actor.\n */\nclass ActorRdfMetadataExtractHydraPagesize extends bus_rdf_metadata_extract_1.ActorRdfMetadataExtract {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n return new Promise((resolve, reject) => {\n // Forward errors\n action.metadata.on('error', reject);\n // Immediately resolve when a value has been found.\n action.metadata.on('data', quad => {\n if (this.predicates.includes(quad.predicate.value)) {\n resolve({ metadata: { pageSize: Number.parseInt(quad.object.value, 10) } });\n }\n });\n // If no value has been found, don't define the pageSize value.\n action.metadata.on('end', () => {\n resolve({ metadata: {} });\n });\n });\n }\n}\nexports.ActorRdfMetadataExtractHydraPagesize = ActorRdfMetadataExtractHydraPagesize;\n//# sourceMappingURL=ActorRdfMetadataExtractHydraPagesize.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtractHydraPagesize\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtractPatchSparqlUpdate = void 0;\nconst bus_rdf_metadata_extract_1 = require(\"@comunica/bus-rdf-metadata-extract\");\n/**\n * A comunica Patch SPARQL Update RDF Metadata Extract Actor.\n */\nclass ActorRdfMetadataExtractPatchSparqlUpdate extends bus_rdf_metadata_extract_1.ActorRdfMetadataExtract {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const metadata = {};\n // The ms-author-via header is added for backwards-compatibility with old Solid servers\n if (action.headers?.get('accept-patch')?.includes('application/sparql-update') ||\n action.headers?.get('ms-author-via')?.includes('SPARQL')) {\n metadata.patchSparqlUpdate = true;\n }\n return { metadata };\n }\n}\nexports.ActorRdfMetadataExtractPatchSparqlUpdate = ActorRdfMetadataExtractPatchSparqlUpdate;\n//# sourceMappingURL=ActorRdfMetadataExtractPatchSparqlUpdate.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtractPatchSparqlUpdate\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtractPutAccepted = void 0;\nconst bus_rdf_metadata_extract_1 = require(\"@comunica/bus-rdf-metadata-extract\");\n/**\n * A comunica PUT Accepted RDF Metadata Extract Actor.\n */\nclass ActorRdfMetadataExtractPutAccepted extends bus_rdf_metadata_extract_1.ActorRdfMetadataExtract {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const metadata = {};\n if (action.headers?.get('accept-put')) {\n metadata.putAccepted = action.headers.get('accept-put')?.split(/, */u);\n }\n return { metadata };\n }\n}\nexports.ActorRdfMetadataExtractPutAccepted = ActorRdfMetadataExtractPutAccepted;\n//# sourceMappingURL=ActorRdfMetadataExtractPutAccepted.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtractPutAccepted\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtractRequestTime = void 0;\nconst bus_rdf_metadata_extract_1 = require(\"@comunica/bus-rdf-metadata-extract\");\n/**\n * A comunica Request Time RDF Metadata Extract Actor.\n */\nclass ActorRdfMetadataExtractRequestTime extends bus_rdf_metadata_extract_1.ActorRdfMetadataExtract {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n return { metadata: { requestTime: action.requestTime } };\n }\n}\nexports.ActorRdfMetadataExtractRequestTime = ActorRdfMetadataExtractRequestTime;\n//# sourceMappingURL=ActorRdfMetadataExtractRequestTime.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtractRequestTime\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtractSparqlService = void 0;\nconst bus_rdf_metadata_extract_1 = require(\"@comunica/bus-rdf-metadata-extract\");\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\n/**\n * A comunica RDF Metadata Extract Actor for SPARQL service descriptions.\n */\nclass ActorRdfMetadataExtractSparqlService extends bus_rdf_metadata_extract_1.ActorRdfMetadataExtract {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n return new Promise((resolve, reject) => {\n // Forward errors\n action.metadata.on('error', reject);\n // Immediately resolve when a SPARQL service endpoint URL has been found\n const metadata = {};\n action.metadata.on('data', quad => {\n if (quad.predicate.value === 'http://www.w3.org/ns/sparql-service-description#endpoint' &&\n (quad.subject.termType === 'BlankNode' || quad.subject.value === action.url)) {\n metadata.sparqlService = quad.object.termType === 'Literal' ?\n (0, relative_to_absolute_iri_1.resolve)(quad.object.value, action.url) :\n quad.object.value;\n // Fix a common mistake in SPARQL endpoint setups where HTTPS SD's refer to a non-existing HTTP API\n if (this.inferHttpsEndpoint &&\n action.url.startsWith('https') && !metadata.sparqlService.startsWith('https')) {\n metadata.sparqlService = metadata.sparqlService.replace('http:', 'https:');\n }\n }\n else if (quad.predicate.value === 'http://www.w3.org/ns/sparql-service-description#defaultGraph') {\n metadata.defaultGraph = quad.object.value;\n }\n });\n // If no value has been found, emit nothing.\n action.metadata.on('end', () => {\n resolve({ metadata });\n });\n });\n }\n}\nexports.ActorRdfMetadataExtractSparqlService = ActorRdfMetadataExtractSparqlService;\n//# sourceMappingURL=ActorRdfMetadataExtractSparqlService.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtractSparqlService\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataPrimaryTopic = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_rdf_metadata_1 = require(\"@comunica/bus-rdf-metadata\");\n/**\n * An RDF Metadata Actor that splits off the metadata based on the existence of a 'foaf:primaryTopic' link.\n * Only non-triple quad streams are supported.\n */\nclass ActorRdfMetadataPrimaryTopic extends bus_rdf_metadata_1.ActorRdfMetadata {\n constructor(args) {\n super(args);\n }\n async test(action) {\n if (action.triples) {\n throw new Error('This actor only supports non-triple quad streams.');\n }\n return true;\n }\n async run(action) {\n const data = new stream_1.Readable({ objectMode: true });\n const metadata = new stream_1.Readable({ objectMode: true });\n // Delay attachment of listeners until the data or metadata stream is being read.\n const attachListeners = () => {\n // Attach listeners only once\n data._read = metadata._read = () => {\n // Do nothing\n };\n // Forward errors\n action.quads.on('error', error => {\n data.emit('error', error);\n metadata.emit('error', error);\n });\n // First pass over data to categorize in graphs,\n // and to detect the primaryTopic triple.\n const graphs = {};\n let endpointIdentifier;\n const primaryTopics = {};\n action.quads.on('data', quad => {\n if (quad.predicate.value === 'http://rdfs.org/ns/void#subset' &&\n quad.object.value === action.url) {\n endpointIdentifier = quad.subject.value;\n }\n else if (quad.predicate.value === 'http://xmlns.com/foaf/0.1/primaryTopic') {\n primaryTopics[quad.object.value] = quad.subject.value;\n }\n let quads = graphs[quad.graph.value];\n if (!quads) {\n quads = graphs[quad.graph.value] = [];\n }\n quads.push(quad);\n });\n // When the stream has finished,\n // determine the appropriate metadata graph,\n // and emit all quads to the appropriate streams.\n action.quads.on('end', () => {\n const metadataGraph = endpointIdentifier ? primaryTopics[endpointIdentifier] : undefined;\n for (const graphName in graphs) {\n if (graphName === metadataGraph) {\n for (const quad of graphs[graphName]) {\n metadata.push(quad);\n }\n // Also emit metadata to data if requested\n if (this.metadataToData) {\n for (const quad of graphs[graphName]) {\n data.push(quad);\n }\n }\n }\n else {\n for (const quad of graphs[graphName]) {\n data.push(quad);\n }\n if (!metadataGraph && this.dataToMetadataOnInvalidMetadataGraph) {\n for (const quad of graphs[graphName]) {\n metadata.push(quad);\n }\n }\n }\n }\n data.push(null);\n metadata.push(null);\n });\n };\n data._read = metadata._read = () => {\n attachListeners();\n };\n return { data, metadata };\n }\n}\nexports.ActorRdfMetadataPrimaryTopic = ActorRdfMetadataPrimaryTopic;\n//# sourceMappingURL=ActorRdfMetadataPrimaryTopic.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataPrimaryTopic\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseHtmlMicrodata = void 0;\nconst bus_rdf_parse_html_1 = require(\"@comunica/bus-rdf-parse-html\");\nconst microdata_rdf_streaming_parser_1 = require(\"microdata-rdf-streaming-parser\");\n/**\n * A comunica Microdata RDF Parse Html Actor.\n */\nclass ActorRdfParseHtmlMicrodata extends bus_rdf_parse_html_1.ActorRdfParseHtml {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const mediaType = action.headers ? action.headers.get('content-type') : null;\n const xmlMode = mediaType?.includes('xml');\n const htmlParseListener = new microdata_rdf_streaming_parser_1.MicrodataRdfParser({ baseIRI: action.baseIRI, xmlMode });\n htmlParseListener.on('error', action.error);\n htmlParseListener.on('data', action.emit);\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const onTagEndOld = htmlParseListener.onEnd;\n htmlParseListener.onEnd = () => {\n onTagEndOld.call(htmlParseListener);\n action.end();\n };\n return { htmlParseListener };\n }\n}\nexports.ActorRdfParseHtmlMicrodata = ActorRdfParseHtmlMicrodata;\n//# sourceMappingURL=ActorRdfParseHtmlMicrodata.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseHtmlMicrodata\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseHtmlRdfa = void 0;\nconst bus_rdf_parse_html_1 = require(\"@comunica/bus-rdf-parse-html\");\nconst rdfa_streaming_parser_1 = require(\"rdfa-streaming-parser\");\n/**\n * A comunica RDFa RDF Parse Html Actor.\n */\nclass ActorRdfParseHtmlRdfa extends bus_rdf_parse_html_1.ActorRdfParseHtml {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const mediaType = action.headers ? action.headers.get('content-type') : null;\n const language = (action.headers && action.headers.get('content-language')) ?? undefined;\n const profile = mediaType && mediaType.includes('xml') ? 'xhtml' : 'html';\n const htmlParseListener = new rdfa_streaming_parser_1.RdfaParser({ baseIRI: action.baseIRI, profile, language });\n htmlParseListener.on('error', action.error);\n htmlParseListener.on('data', action.emit);\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const onTagEndOld = htmlParseListener.onEnd;\n htmlParseListener.onEnd = () => {\n onTagEndOld.call(htmlParseListener);\n action.end();\n };\n return { htmlParseListener };\n }\n}\nexports.ActorRdfParseHtmlRdfa = ActorRdfParseHtmlRdfa;\n//# sourceMappingURL=ActorRdfParseHtmlRdfa.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseHtmlRdfa\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseHtmlScript = void 0;\nconst bus_rdf_parse_html_1 = require(\"@comunica/bus-rdf-parse-html\");\nconst HtmlScriptListener_1 = require(\"./HtmlScriptListener\");\n/**\n * A HTML script RDF Parse actor that listens on the 'rdf-parse' bus.\n *\n * It is able to extract and parse any RDF serialization from script tags in HTML files\n * and announce the presence of them by media type.\n */\nclass ActorRdfParseHtmlScript extends bus_rdf_parse_html_1.ActorRdfParseHtml {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const supportedTypes = (await this.mediatorRdfParseMediatypes\n .mediate({ context: action.context, mediaTypes: true })).mediaTypes;\n const htmlParseListener = new HtmlScriptListener_1.HtmlScriptListener(this.mediatorRdfParseHandle, action.emit, action.error, action.end, supportedTypes, action.context, action.baseIRI, action.headers);\n return { htmlParseListener };\n }\n}\nexports.ActorRdfParseHtmlScript = ActorRdfParseHtmlScript;\n//# sourceMappingURL=ActorRdfParseHtmlScript.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HtmlScriptListener = void 0;\nconst stream_1 = require(\"stream\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst relative_to_absolute_iri_1 = require(\"relative-to-absolute-iri\");\n/**\n * An HTML parse listeners that detects `.\n this.sequenceIndex = Number(c === 60 /* Lt */);\n }\n };\n Tokenizer.prototype.stateCDATASequence = function (c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this._state = 21 /* InCommentLike */;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this._index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this._state = 16 /* InDeclaration */;\n this.stateInDeclaration(c); // Reconsume the character\n }\n };\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n Tokenizer.prototype.fastForwardTo = function (c) {\n while (++this._index < this.buffer.length) {\n if (this.buffer.charCodeAt(this._index) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this._index = this.buffer.length - 1;\n return false;\n };\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n Tokenizer.prototype.stateInCommentLike = function (c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n // Remove 2 trailing chars\n var section = this.buffer.slice(this.sectionStart, this._index - 2);\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(section);\n }\n else {\n this.cbs.oncomment(section);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this._index + 1;\n this._state = 1 /* Text */;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n };\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n Tokenizer.prototype.isTagStartChar = function (c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n };\n Tokenizer.prototype.startSpecial = function (sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this._state = 23 /* SpecialStartSequence */;\n };\n Tokenizer.prototype.stateBeforeTagName = function (c) {\n if (c === 33 /* ExclamationMark */) {\n this._state = 15 /* BeforeDeclaration */;\n this.sectionStart = this._index + 1;\n }\n else if (c === 63 /* Questionmark */) {\n this._state = 17 /* InProcessingInstruction */;\n this.sectionStart = this._index + 1;\n }\n else if (this.isTagStartChar(c)) {\n var lower = c | 0x20;\n this.sectionStart = this._index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this._state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? 22 /* BeforeSpecialS */\n : 3 /* InTagName */;\n }\n }\n else if (c === 47 /* Slash */) {\n this._state = 5 /* BeforeClosingTagName */;\n }\n else {\n this._state = 1 /* Text */;\n this.stateText(c);\n }\n };\n Tokenizer.prototype.stateInTagName = function (c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.getSection());\n this.sectionStart = -1;\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateBeforeClosingTagName = function (c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === 62 /* Gt */) {\n this._state = 1 /* Text */;\n }\n else {\n this._state = this.isTagStartChar(c)\n ? 6 /* InClosingTagName */\n : 20 /* InSpecialComment */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInClosingTagName = function (c) {\n if (c === 62 /* Gt */ || isWhitespace(c)) {\n this.cbs.onclosetag(this.getSection());\n this.sectionStart = -1;\n this._state = 7 /* AfterClosingTagName */;\n this.stateAfterClosingTagName(c);\n }\n };\n Tokenizer.prototype.stateAfterClosingTagName = function (c) {\n // Skip everything until \">\"\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeName = function (c) {\n if (c === 62 /* Gt */) {\n this.cbs.onopentagend();\n if (this.isSpecial) {\n this._state = 24 /* InSpecialTag */;\n this.sequenceIndex = 0;\n }\n else {\n this._state = 1 /* Text */;\n }\n this.baseState = this._state;\n this.sectionStart = this._index + 1;\n }\n else if (c === 47 /* Slash */) {\n this._state = 4 /* InSelfClosingTag */;\n }\n else if (!isWhitespace(c)) {\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInSelfClosingTag = function (c) {\n if (c === 62 /* Gt */) {\n this.cbs.onselfclosingtag();\n this._state = 1 /* Text */;\n this.baseState = 1 /* Text */;\n this.sectionStart = this._index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateInAttributeName = function (c) {\n if (c === 61 /* Eq */ || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.getSection());\n this.sectionStart = -1;\n this._state = 10 /* AfterAttributeName */;\n this.stateAfterAttributeName(c);\n }\n };\n Tokenizer.prototype.stateAfterAttributeName = function (c) {\n if (c === 61 /* Eq */) {\n this._state = 11 /* BeforeAttributeValue */;\n }\n else if (c === 47 /* Slash */ || c === 62 /* Gt */) {\n this.cbs.onattribend(undefined);\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(undefined);\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeValue = function (c) {\n if (c === 34 /* DoubleQuote */) {\n this._state = 12 /* InAttributeValueDq */;\n this.sectionStart = this._index + 1;\n }\n else if (c === 39 /* SingleQuote */) {\n this._state = 13 /* InAttributeValueSq */;\n this.sectionStart = this._index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this._index;\n this._state = 14 /* InAttributeValueNq */;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n };\n Tokenizer.prototype.handleInAttributeValue = function (c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.getSection());\n this.sectionStart = -1;\n this.cbs.onattribend(String.fromCharCode(quote));\n this._state = 8 /* BeforeAttributeName */;\n }\n else if (this.decodeEntities && c === 38 /* Amp */) {\n this.baseState = this._state;\n this._state = 25 /* BeforeEntity */;\n }\n };\n Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {\n this.handleInAttributeValue(c, 34 /* DoubleQuote */);\n };\n Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {\n this.handleInAttributeValue(c, 39 /* SingleQuote */);\n };\n Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {\n if (isWhitespace(c) || c === 62 /* Gt */) {\n this.cbs.onattribdata(this.getSection());\n this.sectionStart = -1;\n this.cbs.onattribend(null);\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === 38 /* Amp */) {\n this.baseState = this._state;\n this._state = 25 /* BeforeEntity */;\n }\n };\n Tokenizer.prototype.stateBeforeDeclaration = function (c) {\n if (c === 91 /* OpeningSquareBracket */) {\n this._state = 19 /* CDATASequence */;\n this.sequenceIndex = 0;\n }\n else {\n this._state =\n c === 45 /* Dash */\n ? 18 /* BeforeComment */\n : 16 /* InDeclaration */;\n }\n };\n Tokenizer.prototype.stateInDeclaration = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.ondeclaration(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateInProcessingInstruction = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.onprocessinginstruction(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeComment = function (c) {\n if (c === 45 /* Dash */) {\n this._state = 21 /* InCommentLike */;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this._index + 1;\n }\n else {\n this._state = 16 /* InDeclaration */;\n }\n };\n Tokenizer.prototype.stateInSpecialComment = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.oncomment(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeSpecialS = function (c) {\n var lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this._state = 3 /* InTagName */;\n this.stateInTagName(c); // Consume the token again\n }\n };\n Tokenizer.prototype.stateBeforeEntity = function (c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n if (c === 35 /* Num */) {\n this._state = 26 /* BeforeNumericEntity */;\n }\n else if (c === 38 /* Amp */) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.trieResult = null;\n this._state = 27 /* InNamedEntity */;\n this.stateInNamedEntity(c);\n }\n };\n Tokenizer.prototype.stateInNamedEntity = function (c) {\n this.entityExcess += 1;\n this.trieIndex = (0, decode_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this._index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n // If the branch is a value, store it and continue\n if (this.trieCurrent & decode_1.BinTrieFlags.HAS_VALUE) {\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== 59 /* Semi */) {\n // No need to consider multi-byte values, as the legacy entity is always a single byte\n this.trieIndex += 1;\n }\n else {\n // Add 1 as we have already incremented the excess\n var entityStart = this._index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));\n }\n // If this is a surrogate pair, combine the higher bits from the node with the next byte\n this.trieResult =\n this.trieCurrent & decode_1.BinTrieFlags.MULTI_BYTE\n ? String.fromCharCode(this.entityTrie[++this.trieIndex], this.entityTrie[++this.trieIndex])\n : String.fromCharCode(this.entityTrie[++this.trieIndex]);\n this.entityExcess = 0;\n this.sectionStart = this._index + 1;\n }\n }\n };\n Tokenizer.prototype.emitNamedEntity = function () {\n if (this.trieResult) {\n this.emitPartial(this.trieResult);\n }\n this._state = this.baseState;\n };\n Tokenizer.prototype.stateBeforeNumericEntity = function (c) {\n if ((c | 0x20) === 120 /* LowerX */) {\n this.entityExcess++;\n this._state = 29 /* InHexEntity */;\n }\n else {\n this._state = 28 /* InNumericEntity */;\n this.stateInNumericEntity(c);\n }\n };\n Tokenizer.prototype.decodeNumericEntity = function (base, strict) {\n var entityStart = this._index - this.entityExcess - 1;\n var numberStart = entityStart + 2 + (base >> 4);\n if (numberStart !== this._index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));\n }\n // Parse entity\n var entity = this.buffer.substring(numberStart, this._index);\n var parsed = parseInt(entity, base);\n this.emitPartial((0, decode_codepoint_1.default)(parsed));\n this.sectionStart = this._index + Number(strict);\n }\n this._state = this.baseState;\n };\n Tokenizer.prototype.stateInNumericEntity = function (c) {\n if (c === 59 /* Semi */) {\n this.decodeNumericEntity(10, true);\n }\n else if (!isNumber(c)) {\n if (this.allowLegacyEntity()) {\n this.decodeNumericEntity(10, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n else {\n this.entityExcess++;\n }\n };\n Tokenizer.prototype.stateInHexEntity = function (c) {\n if (c === 59 /* Semi */) {\n this.decodeNumericEntity(16, true);\n }\n else if ((c < 97 /* LowerA */ || c > 102 /* LowerF */) &&\n (c < 65 /* UpperA */ || c > 70 /* UpperF */) &&\n !isNumber(c)) {\n if (this.allowLegacyEntity()) {\n this.decodeNumericEntity(16, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n else {\n this.entityExcess++;\n }\n };\n Tokenizer.prototype.allowLegacyEntity = function () {\n return (!this.xmlMode &&\n (this.baseState === 1 /* Text */ ||\n this.baseState === 24 /* InSpecialTag */));\n };\n /**\n * Remove data that has already been consumed from the buffer.\n */\n Tokenizer.prototype.cleanup = function () {\n // If we are inside of text, emit what we already have.\n if (this.running &&\n this.sectionStart !== this._index &&\n (this._state === 1 /* Text */ ||\n (this._state === 24 /* InSpecialTag */ &&\n this.sequenceIndex === 0))) {\n // TODO: We could emit attribute data here as well.\n this.cbs.ontext(this.buffer.substr(this.sectionStart));\n this.sectionStart = this._index;\n }\n var start = this.sectionStart < 0 ? this._index : this.sectionStart;\n this.buffer =\n start === this.buffer.length ? \"\" : this.buffer.substr(start);\n this._index -= start;\n this.bufferOffset += start;\n if (this.sectionStart > 0) {\n this.sectionStart = 0;\n }\n };\n Tokenizer.prototype.shouldContinue = function () {\n return this._index < this.buffer.length && this.running;\n };\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n Tokenizer.prototype.parse = function () {\n while (this.shouldContinue()) {\n var c = this.buffer.charCodeAt(this._index);\n if (this._state === 1 /* Text */) {\n this.stateText(c);\n }\n else if (this._state === 23 /* SpecialStartSequence */) {\n this.stateSpecialStartSequence(c);\n }\n else if (this._state === 24 /* InSpecialTag */) {\n this.stateInSpecialTag(c);\n }\n else if (this._state === 19 /* CDATASequence */) {\n this.stateCDATASequence(c);\n }\n else if (this._state === 12 /* InAttributeValueDq */) {\n this.stateInAttributeValueDoubleQuotes(c);\n }\n else if (this._state === 9 /* InAttributeName */) {\n this.stateInAttributeName(c);\n }\n else if (this._state === 21 /* InCommentLike */) {\n this.stateInCommentLike(c);\n }\n else if (this._state === 20 /* InSpecialComment */) {\n this.stateInSpecialComment(c);\n }\n else if (this._state === 8 /* BeforeAttributeName */) {\n this.stateBeforeAttributeName(c);\n }\n else if (this._state === 3 /* InTagName */) {\n this.stateInTagName(c);\n }\n else if (this._state === 6 /* InClosingTagName */) {\n this.stateInClosingTagName(c);\n }\n else if (this._state === 2 /* BeforeTagName */) {\n this.stateBeforeTagName(c);\n }\n else if (this._state === 10 /* AfterAttributeName */) {\n this.stateAfterAttributeName(c);\n }\n else if (this._state === 13 /* InAttributeValueSq */) {\n this.stateInAttributeValueSingleQuotes(c);\n }\n else if (this._state === 11 /* BeforeAttributeValue */) {\n this.stateBeforeAttributeValue(c);\n }\n else if (this._state === 5 /* BeforeClosingTagName */) {\n this.stateBeforeClosingTagName(c);\n }\n else if (this._state === 7 /* AfterClosingTagName */) {\n this.stateAfterClosingTagName(c);\n }\n else if (this._state === 22 /* BeforeSpecialS */) {\n this.stateBeforeSpecialS(c);\n }\n else if (this._state === 14 /* InAttributeValueNq */) {\n this.stateInAttributeValueNoQuotes(c);\n }\n else if (this._state === 4 /* InSelfClosingTag */) {\n this.stateInSelfClosingTag(c);\n }\n else if (this._state === 16 /* InDeclaration */) {\n this.stateInDeclaration(c);\n }\n else if (this._state === 15 /* BeforeDeclaration */) {\n this.stateBeforeDeclaration(c);\n }\n else if (this._state === 18 /* BeforeComment */) {\n this.stateBeforeComment(c);\n }\n else if (this._state === 17 /* InProcessingInstruction */) {\n this.stateInProcessingInstruction(c);\n }\n else if (this._state === 27 /* InNamedEntity */) {\n this.stateInNamedEntity(c);\n }\n else if (this._state === 25 /* BeforeEntity */) {\n this.stateBeforeEntity(c);\n }\n else if (this._state === 29 /* InHexEntity */) {\n this.stateInHexEntity(c);\n }\n else if (this._state === 28 /* InNumericEntity */) {\n this.stateInNumericEntity(c);\n }\n else {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n this._index++;\n }\n this.cleanup();\n };\n Tokenizer.prototype.finish = function () {\n if (this._state === 27 /* InNamedEntity */) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this._index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n };\n /** Handle any trailing data. */\n Tokenizer.prototype.handleTrailingData = function () {\n var data = this.buffer.substr(this.sectionStart);\n if (this._state === 21 /* InCommentLike */) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(data);\n }\n else {\n this.cbs.oncomment(data);\n }\n }\n else if (this._state === 28 /* InNumericEntity */ &&\n this.allowLegacyEntity()) {\n this.decodeNumericEntity(10, false);\n // All trailing data will have been consumed\n }\n else if (this._state === 29 /* InHexEntity */ &&\n this.allowLegacyEntity()) {\n this.decodeNumericEntity(16, false);\n // All trailing data will have been consumed\n }\n else if (this._state === 3 /* InTagName */ ||\n this._state === 8 /* BeforeAttributeName */ ||\n this._state === 11 /* BeforeAttributeValue */ ||\n this._state === 10 /* AfterAttributeName */ ||\n this._state === 9 /* InAttributeName */ ||\n this._state === 13 /* InAttributeValueSq */ ||\n this._state === 12 /* InAttributeValueDq */ ||\n this._state === 14 /* InAttributeValueNq */ ||\n this._state === 6 /* InClosingTagName */) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(data);\n }\n };\n Tokenizer.prototype.getSection = function () {\n return this.buffer.substring(this.sectionStart, this._index);\n };\n Tokenizer.prototype.emitPartial = function (value) {\n if (this.baseState !== 1 /* Text */ &&\n this.baseState !== 24 /* InSpecialTag */) {\n this.cbs.onattribdata(value);\n }\n else {\n this.cbs.ontext(value);\n }\n };\n return Tokenizer;\n}());\nexports.default = Tokenizer;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WritableStream = void 0;\nvar Parser_1 = require(\"./Parser\");\n/*\n * NOTE: If either of these two imports produces a type error,\n * please update your @types/node dependency!\n */\nvar stream_1 = require(\"stream\");\nvar string_decoder_1 = require(\"string_decoder\");\n// Following the example in https://nodejs.org/api/stream.html#stream_decoding_buffers_in_a_writable_stream\nfunction isBuffer(_chunk, encoding) {\n return encoding === \"buffer\";\n}\n/**\n * WritableStream makes the `Parser` interface available as a NodeJS stream.\n *\n * @see Parser\n */\nvar WritableStream = /** @class */ (function (_super) {\n __extends(WritableStream, _super);\n function WritableStream(cbs, options) {\n var _this = _super.call(this, { decodeStrings: false }) || this;\n _this._decoder = new string_decoder_1.StringDecoder();\n _this._parser = new Parser_1.Parser(cbs, options);\n return _this;\n }\n WritableStream.prototype._write = function (chunk, encoding, cb) {\n this._parser.write(isBuffer(chunk, encoding) ? this._decoder.write(chunk) : chunk);\n cb();\n };\n WritableStream.prototype._final = function (cb) {\n this._parser.end(this._decoder.end());\n cb();\n };\n return WritableStream;\n}(stream_1.Writable));\nexports.WritableStream = WritableStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseJsonLd = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst jsonld_streaming_parser_1 = require(\"jsonld-streaming-parser\");\nconst DocumentLoaderMediated_1 = require(\"./DocumentLoaderMediated\");\n/**\n * A JSON-LD RDF Parse actor that listens on the 'rdf-parse' bus.\n *\n * It is able to parse JSON-LD-based RDF serializations and announce the presence of them by media type.\n */\nclass ActorRdfParseJsonLd extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/ld+json\": 1.0,\n * \"application/json\": 0.5\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/ld+json\": \"http://www.w3.org/ns/formats/JSON-LD\",\n * \"application/json\": \"http://www.w3.org/ns/formats/JSON-LD\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async testHandle(action, mediaType, context) {\n if (context.has(context_entries_1.KeysRdfParseHtmlScript.processingHtmlScript) && mediaType !== 'application/ld+json') {\n throw new Error(`JSON-LD in script tags can only have media type 'application/ld+json'`);\n }\n if (!(mediaType in this.mediaTypePriorities) && !mediaType.endsWith('+json')) {\n throw new Error(`Unrecognized media type: ${mediaType}`);\n }\n return await this.testHandleChecked(action);\n }\n async runHandle(action, mediaType, actionContext) {\n const parser = jsonld_streaming_parser_1.JsonLdParser.fromHttpResponse(action.metadata?.baseIRI ?? '', mediaType, action.headers, {\n documentLoader: actionContext.get(context_entries_1.KeysRdfParseJsonLd.documentLoader) ||\n new DocumentLoaderMediated_1.DocumentLoaderMediated(this.mediatorHttp, actionContext),\n strictValues: actionContext.get(context_entries_1.KeysRdfParseJsonLd.strictValues),\n ...actionContext.get(context_entries_1.KeysRdfParseJsonLd.parserOptions),\n });\n const data = parser.import(action.data);\n return { data };\n }\n}\nexports.ActorRdfParseJsonLd = ActorRdfParseJsonLd;\n//# sourceMappingURL=ActorRdfParseJsonLd.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentLoaderMediated = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst stringifyStream = require(\"stream-to-string\");\n/**\n * A JSON-LD document loader that fetches over an HTTP bus using a given mediator.\n */\nclass DocumentLoaderMediated extends jsonld_context_parser_1.FetchDocumentLoader {\n constructor(mediatorHttp, context) {\n super(DocumentLoaderMediated.createFetcher(mediatorHttp, context));\n this.mediatorHttp = mediatorHttp;\n this.context = context;\n }\n static createFetcher(mediatorHttp, context) {\n return async (url, init) => {\n const response = await mediatorHttp.mediate({ input: url, init, context });\n response.json = async () => JSON.parse(await stringifyStream(bus_http_1.ActorHttp.toNodeReadable(response.body)));\n return response;\n };\n }\n}\nexports.DocumentLoaderMediated = DocumentLoaderMediated;\n//# sourceMappingURL=DocumentLoaderMediated.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseJsonLd\"), exports);\n__exportStar(require(\"./DocumentLoaderMediated\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseN3 = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst n3_1 = require(\"n3\");\n/**\n * An N3 RDF Parse actor that listens on the 'rdf-parse' bus.\n *\n * It is able to parse N3-based RDF serializations and announce the presence of them by media type.\n */\nclass ActorRdfParseN3 extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/n-quads\": 1.0,\n * \"application/trig\": 0.95,\n * \"application/n-triples\": 0.8,\n * \"text/turtle\": 0.6,\n * \"text/n3\": 0.35\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/n-quads\": \"http://www.w3.org/ns/formats/N-Quads\",\n * \"application/trig\": \"http://www.w3.org/ns/formats/TriG\",\n * \"application/n-triples\": \"http://www.w3.org/ns/formats/N-Triples\",\n * \"text/turtle\": \"http://www.w3.org/ns/formats/Turtle\",\n * \"text/n3\": \"http://www.w3.org/ns/formats/N3\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new n3_1.StreamParser({ baseIRI: action.metadata?.baseIRI }));\n return {\n data,\n metadata: {\n triples: mediaType === 'text/turtle' ||\n mediaType === 'application/n-triples' ||\n mediaType === 'text/n3',\n },\n };\n }\n}\nexports.ActorRdfParseN3 = ActorRdfParseN3;\n//# sourceMappingURL=ActorRdfParseN3.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseN3\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseRdfXml = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst rdfxml_streaming_parser_1 = require(\"rdfxml-streaming-parser\");\n/**\n * A comunica RDF/XML RDF Parse Actor.\n */\nclass ActorRdfParseRdfXml extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/rdf+xml\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/rdf+xml\": \"http://www.w3.org/ns/formats/RDF_XML\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new rdfxml_streaming_parser_1.RdfXmlParser({ baseIRI: action.metadata?.baseIRI }));\n return {\n data,\n metadata: { triples: true },\n };\n }\n}\nexports.ActorRdfParseRdfXml = ActorRdfParseRdfXml;\n//# sourceMappingURL=ActorRdfParseRdfXml.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseRdfXml\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseXmlRdfa = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst rdfa_streaming_parser_1 = require(\"rdfa-streaming-parser\");\n/**\n * A comunica XML RDFa RDF Parse Actor.\n */\nclass ActorRdfParseXmlRdfa extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/xml\": 1.0,\n * \"text/xml\": 1.0,\n * \"image/svg+xml\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/xml\": \"http://www.w3.org/ns/formats/RDFa\",\n * \"text/xml\": \"http://www.w3.org/ns/formats/RDFa\",\n * \"image/svg+xml\": \"http://www.w3.org/ns/formats/RDFa\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const language = (action.headers && action.headers.get('content-language')) ?? undefined;\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new rdfa_streaming_parser_1.RdfaParser({ baseIRI: action.metadata?.baseIRI, profile: 'xml', language }));\n return { data, metadata: { triples: true } };\n }\n}\nexports.ActorRdfParseXmlRdfa = ActorRdfParseXmlRdfa;\n//# sourceMappingURL=ActorRdfParseXmlRdfa.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseXmlRdfa\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksNext = void 0;\nconst bus_rdf_resolve_hypermedia_links_1 = require(\"@comunica/bus-rdf-resolve-hypermedia-links\");\n/**\n * A comunica Next RDF Resolve Hypermedia Links Actor.\n */\nclass ActorRdfResolveHypermediaLinksNext extends bus_rdf_resolve_hypermedia_links_1.ActorRdfResolveHypermediaLinks {\n constructor(args) {\n super(args);\n }\n async test(action) {\n if (!action.metadata.next) {\n throw new Error(`Actor ${this.name} requires a 'next' metadata entry.`);\n }\n return true;\n }\n async run(action) {\n return { links: [{ url: action.metadata.next }] };\n }\n}\nexports.ActorRdfResolveHypermediaLinksNext = ActorRdfResolveHypermediaLinksNext;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksNext.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksNext\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksQueueFifo = void 0;\nconst bus_rdf_resolve_hypermedia_links_queue_1 = require(\"@comunica/bus-rdf-resolve-hypermedia-links-queue\");\nconst LinkQueueFifo_1 = require(\"./LinkQueueFifo\");\n/**\n * A comunica FIFO RDF Resolve Hypermedia Links Queue Actor.\n */\nclass ActorRdfResolveHypermediaLinksQueueFifo extends bus_rdf_resolve_hypermedia_links_queue_1.ActorRdfResolveHypermediaLinksQueue {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n return { linkQueue: new LinkQueueFifo_1.LinkQueueFifo() };\n }\n}\nexports.ActorRdfResolveHypermediaLinksQueueFifo = ActorRdfResolveHypermediaLinksQueueFifo;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksQueueFifo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkQueueFifo = void 0;\n/**\n * A link queue in FIFO (first-in first-out) order.\n */\nclass LinkQueueFifo {\n constructor() {\n this.links = [];\n }\n push(link) {\n this.links.push(link);\n return true;\n }\n getSize() {\n return this.links.length;\n }\n isEmpty() {\n return this.links.length === 0;\n }\n pop() {\n return this.links.shift();\n }\n peek() {\n return this.links[0];\n }\n}\nexports.LinkQueueFifo = LinkQueueFifo;\n//# sourceMappingURL=LinkQueueFifo.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksQueueFifo\"), exports);\n__exportStar(require(\"./LinkQueueFifo\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaNone = void 0;\nconst actor_rdf_resolve_quad_pattern_rdfjs_source_1 = require(\"@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source\");\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst rdf_store_stream_1 = require(\"rdf-store-stream\");\n/**\n * A comunica None RDF Resolve Hypermedia Actor.\n */\nclass ActorRdfResolveHypermediaNone extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'file');\n }\n async testMetadata(action) {\n return { filterFactor: 0 };\n }\n async run(action) {\n this.logInfo(action.context, `Identified as file source: ${action.url}`);\n return { source: new actor_rdf_resolve_quad_pattern_rdfjs_source_1.RdfJsQuadSource(await (0, rdf_store_stream_1.storeStream)(action.quads)) };\n }\n}\nexports.ActorRdfResolveHypermediaNone = ActorRdfResolveHypermediaNone;\n//# sourceMappingURL=ActorRdfResolveHypermediaNone.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaNone\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaQpf = void 0;\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst RdfSourceQpf_1 = require(\"./RdfSourceQpf\");\n/**\n * A comunica QPF RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveHypermediaQpf extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'qpf');\n }\n async testMetadata(action) {\n const { searchForm } = this.createSource(action.metadata, action.context);\n if (action.handledDatasets && action.handledDatasets[searchForm.dataset]) {\n throw new Error(`Actor ${this.name} can only be applied for the first page of a QPF dataset.`);\n }\n return { filterFactor: 1 };\n }\n /**\n * Look for the search form\n * @param {IActionRdfResolveHypermedia} action the metadata to look for the form.\n * @return {Promise} A promise resolving to a hypermedia form.\n */\n async run(action) {\n this.logInfo(action.context, `Identified as qpf source: ${action.url}`);\n const source = this.createSource(action.metadata, action.context, action.quads);\n return { source, dataset: source.searchForm.dataset };\n }\n createSource(metadata, context, quads) {\n return new RdfSourceQpf_1.RdfSourceQpf(this.mediatorMetadata, this.mediatorMetadataExtract, this.mediatorDereferenceRdf, this.subjectUri, this.predicateUri, this.objectUri, this.graphUri, metadata, context, quads);\n }\n}\nexports.ActorRdfResolveHypermediaQpf = ActorRdfResolveHypermediaQpf;\n//# sourceMappingURL=ActorRdfResolveHypermediaQpf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfSourceQpf = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * An RDF source that executes a quad pattern over a QPF interface and fetches its first page.\n */\nclass RdfSourceQpf {\n constructor(mediatorMetadata, mediatorMetadataExtract, mediatorDereferenceRdf, subjectUri, predicateUri, objectUri, graphUri, metadata, context, initialQuads) {\n this.mediatorMetadata = mediatorMetadata;\n this.mediatorMetadataExtract = mediatorMetadataExtract;\n this.mediatorDereferenceRdf = mediatorDereferenceRdf;\n this.subjectUri = subjectUri;\n this.predicateUri = predicateUri;\n this.objectUri = objectUri;\n this.graphUri = graphUri;\n this.context = context;\n this.cachedQuads = {};\n const searchForm = this.getSearchForm(metadata);\n if (!searchForm) {\n throw new Error('Illegal state: found no TPF/QPF search form anymore in metadata.');\n }\n this.searchForm = searchForm;\n this.defaultGraph = metadata.defaultGraph ? DF.namedNode(metadata.defaultGraph) : undefined;\n if (initialQuads) {\n let wrappedQuads = (0, asynciterator_1.wrap)(initialQuads);\n if (this.defaultGraph) {\n wrappedQuads = this.reverseMapQuadsToDefaultGraph(wrappedQuads);\n }\n wrappedQuads.setProperty('metadata', metadata);\n this.cacheQuads(wrappedQuads, DF.variable(''), DF.variable(''), DF.variable(''), DF.variable(''));\n }\n }\n /**\n * Get a first QPF search form.\n * @param {{[p: string]: any}} metadata A metadata object.\n * @return {ISearchForm} A search form, or null if none could be found.\n */\n getSearchForm(metadata) {\n if (!metadata.searchForms || !metadata.searchForms.values) {\n return;\n }\n // Find a quad pattern or triple pattern search form\n const { searchForms } = metadata;\n for (const searchForm of searchForms.values) {\n if (this.graphUri &&\n this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n this.graphUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 4) {\n return searchForm;\n }\n if (this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 3) {\n return searchForm;\n }\n }\n }\n /**\n * Create a QPF fragment IRI for the given quad pattern.\n * @param {ISearchForm} searchForm A search form.\n * @param {Term} subject A term.\n * @param {Term} predicate A term.\n * @param {Term} object A term.\n * @param {Term} graph A term.\n * @return {string} A URI.\n */\n createFragmentUri(searchForm, subject, predicate, object, graph) {\n const entries = {};\n const input = [\n { uri: this.subjectUri, term: subject },\n { uri: this.predicateUri, term: predicate },\n { uri: this.objectUri, term: object },\n { uri: this.graphUri, term: graph },\n ];\n for (const entry of input) {\n if (entry.uri && entry.term.termType !== 'Variable') {\n entries[entry.uri] = (0, rdf_string_1.termToString)(entry.term);\n }\n }\n return searchForm.getUri(entries);\n }\n match(subject, predicate, object, graph) {\n // If we are querying the default graph,\n // and the source has an overridden value for the default graph (such as QPF can provide),\n // we override the graph parameter with that value.\n let modifiedGraph = false;\n if (this.defaultGraph && graph.termType === 'DefaultGraph') {\n modifiedGraph = true;\n graph = this.defaultGraph;\n }\n // Try to emit from cache\n const cached = this.getCachedQuads(subject, predicate, object, graph);\n if (cached) {\n return cached;\n }\n const quads = new asynciterator_1.TransformIterator(async () => {\n let url = this.createFragmentUri(this.searchForm, subject, predicate, object, graph);\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf.mediate({ context: this.context, url });\n url = dereferenceRdfOutput.url;\n // Determine the metadata and emit it\n const rdfMetadataOuput = await this.mediatorMetadata.mediate({ context: this.context,\n url,\n quads: dereferenceRdfOutput.data,\n triples: dereferenceRdfOutput.metadata?.triples });\n const metadataExtractPromise = this.mediatorMetadataExtract\n .mediate({\n context: this.context,\n url,\n metadata: rdfMetadataOuput.metadata,\n requestTime: dereferenceRdfOutput.requestTime,\n })\n .then(({ metadata }) => quads\n .setProperty('metadata', { ...metadata, canContainUndefs: false }));\n // The server is free to send any data in its response (such as metadata),\n // including quads that do not match the given matter.\n // Therefore, we have to filter away all non-matching quads here.\n const actualDefaultGraph = DF.defaultGraph();\n let filteredOutput = (0, asynciterator_1.wrap)(rdfMetadataOuput.data)\n .transform({\n filter(quad) {\n if ((0, rdf_terms_1.matchPattern)(quad, subject, predicate, object, graph)) {\n return true;\n }\n // Special case: if we are querying in the default graph, and we had an overridden default graph,\n // also accept that incoming triples may be defined in the actual default graph\n return modifiedGraph && (0, rdf_terms_1.matchPattern)(quad, subject, predicate, object, actualDefaultGraph);\n },\n });\n if (modifiedGraph || graph.termType === 'Variable') {\n // Reverse-map the overridden default graph back to the actual default graph\n filteredOutput = this.reverseMapQuadsToDefaultGraph(filteredOutput);\n }\n // Swallow error events, as they will be emitted in the metadata stream as well,\n // and therefore thrown async next.\n filteredOutput.on('error', () => {\n // Do nothing\n });\n // Ensures metadata event is emitted before end-event\n await metadataExtractPromise;\n return filteredOutput;\n }, { autoStart: false });\n this.cacheQuads(quads, subject, predicate, object, graph);\n return this.getCachedQuads(subject, predicate, object, graph);\n }\n reverseMapQuadsToDefaultGraph(quads) {\n const actualDefaultGraph = DF.defaultGraph();\n return quads.map(quad => (0, rdf_terms_1.mapTerms)(quad, (term, key) => key === 'graph' && term.equals(this.defaultGraph) ? actualDefaultGraph : term));\n }\n getPatternId(subject, predicate, object, graph) {\n /* eslint-disable id-length */\n return JSON.stringify({\n s: subject.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(subject),\n p: predicate.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(predicate),\n o: object.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(object),\n g: graph.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(graph),\n });\n /* eslint-enable id-length */\n }\n cacheQuads(quads, subject, predicate, object, graph) {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n this.cachedQuads[patternId] = quads.clone();\n }\n getCachedQuads(subject, predicate, object, graph) {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n const quads = this.cachedQuads[patternId];\n if (quads) {\n return quads.clone();\n }\n }\n}\nexports.RdfSourceQpf = RdfSourceQpf;\n//# sourceMappingURL=RdfSourceQpf.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaQpf\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaSparql = void 0;\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst RdfSourceSparql_1 = require(\"./RdfSourceSparql\");\n/**\n * A comunica SPARQL RDF Resolve Hypermedia Actor.\n */\nclass ActorRdfResolveHypermediaSparql extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'sparql');\n }\n async testMetadata(action) {\n if (!action.forceSourceType && !action.metadata.sparqlService &&\n !(this.checkUrlSuffix && action.url.endsWith('/sparql'))) {\n throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql.`);\n }\n return { filterFactor: 1 };\n }\n async run(action) {\n this.logInfo(action.context, `Identified as sparql source: ${action.url}`);\n const source = new RdfSourceSparql_1.RdfSourceSparql(action.metadata.sparqlService || action.url, action.context, this.mediatorHttp, this.forceHttpGet);\n return { source };\n }\n}\nexports.ActorRdfResolveHypermediaSparql = ActorRdfResolveHypermediaSparql;\n//# sourceMappingURL=ActorRdfResolveHypermediaSparql.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfSourceSparql = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst fetch_sparql_endpoint_1 = require(\"fetch-sparql-endpoint\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\nconst BF = new bindings_factory_1.BindingsFactory();\nconst VAR_COUNT = DF.variable('count');\nclass RdfSourceSparql {\n constructor(url, context, mediatorHttp, forceHttpGet) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n this.endpointFetcher = new fetch_sparql_endpoint_1.SparqlEndpointFetcher({\n method: forceHttpGet ? 'GET' : 'POST',\n fetch: (input, init) => this.mediatorHttp.mediate({ input, init, context: this.context }),\n prefixVariableQuestionMark: true,\n });\n }\n /**\n * Replace all blank nodes in a pattern with variables.\n * If the pattern contains no blank nodes the original pattern gets returned.\n * @param {RDF.BaseQuad} pattern A quad pattern.\n * @return {RDF.BaseQuad} A quad pattern with no blank nodes.\n */\n static replaceBlankNodes(pattern) {\n const variableNames = (0, rdf_terms_1.getVariables)((0, rdf_terms_1.getTerms)(pattern)).map(variableTerm => variableTerm.value);\n // Track the names the blank nodes get mapped to (required if the name has to change)\n const blankMap = {};\n let changed = false;\n // For every position, convert to a variable if there is a blank node\n const result = (0, rdf_terms_1.mapTerms)(pattern, term => {\n if (term.termType === 'BlankNode') {\n let name = term.value;\n if (blankMap[name]) {\n name = blankMap[name];\n }\n else {\n if (variableNames.includes(name)) {\n // Increase index added to name until we find one that is available (2 loops at most)\n let idx = 0;\n while (variableNames.includes(`${name}${idx}`)) {\n ++idx;\n }\n name += idx;\n }\n blankMap[term.value] = name;\n variableNames.push(name);\n }\n changed = true;\n return DF.variable(name);\n }\n return term;\n });\n return changed ? result : pattern;\n }\n /**\n * Convert a quad pattern to a BGP with only that pattern.\n * @param {RDF.pattern} quad A quad pattern.\n * @return {Bgp} A BGP.\n */\n static patternToBgp(pattern) {\n return RdfSourceSparql.FACTORY.createBgp([RdfSourceSparql.FACTORY\n .createPattern(pattern.subject, pattern.predicate, pattern.object, pattern.graph)]);\n }\n /**\n * Convert a quad pattern to a select query for this pattern.\n * @param {RDF.Quad} pattern A quad pattern.\n * @return {string} A select query string.\n */\n static patternToSelectQuery(pattern) {\n const variables = (0, rdf_terms_1.getVariables)((0, rdf_terms_1.getTerms)(pattern));\n return (0, sparqlalgebrajs_1.toSparql)(RdfSourceSparql.FACTORY.createProject(RdfSourceSparql.patternToBgp(pattern), variables));\n }\n /**\n * Convert a quad pattern to a count query for the number of matching triples for this pattern.\n * @param {RDF.Quad} pattern A quad pattern.\n * @return {string} A count query string.\n */\n static patternToCountQuery(pattern) {\n return (0, sparqlalgebrajs_1.toSparql)(RdfSourceSparql.FACTORY.createProject(RdfSourceSparql.FACTORY.createExtend(RdfSourceSparql.FACTORY.createGroup(RdfSourceSparql.patternToBgp(pattern), [], [RdfSourceSparql.FACTORY.createBoundAggregate(DF.variable('var0'), 'count', RdfSourceSparql.FACTORY.createWildcardExpression(), false)]), DF.variable('count'), RdfSourceSparql.FACTORY.createTermExpression(DF.variable('var0'))), [DF.variable('count')]));\n }\n /**\n * Send a SPARQL query to a SPARQL endpoint and retrieve its bindings as a stream.\n * @param {string} endpoint A SPARQL endpoint URL.\n * @param {string} query A SPARQL query string.\n * @return {BindingsStream} A stream of bindings.\n */\n queryBindings(endpoint, query) {\n const rawStream = this.endpointFetcher.fetchBindings(endpoint, query);\n return (0, asynciterator_1.wrap)(rawStream, { autoStart: false, maxBufferSize: Number.POSITIVE_INFINITY })\n .map((rawData) => BF.bindings(Object.entries(rawData)\n .map(([key, value]) => [DF.variable(key.slice(1)), value])));\n }\n match(subject, predicate, object, graph) {\n const pattern = RdfSourceSparql.replaceBlankNodes(RdfSourceSparql.FACTORY.createPattern(subject, predicate, object, graph));\n const countQuery = RdfSourceSparql.patternToCountQuery(pattern);\n const selectQuery = RdfSourceSparql.patternToSelectQuery(pattern);\n // Emit metadata containing the estimated count (reject is never called)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n new Promise(resolve => {\n const bindingsStream = this.queryBindings(this.url, countQuery);\n bindingsStream.on('data', (bindings) => {\n const count = bindings.get(VAR_COUNT);\n if (count) {\n const cardinality = Number.parseInt(count.value, 10);\n if (Number.isNaN(cardinality)) {\n return resolve({ cardinality: Number.POSITIVE_INFINITY });\n }\n return resolve({ cardinality });\n }\n return resolve({ cardinality: Number.POSITIVE_INFINITY });\n });\n bindingsStream.on('error', () => resolve({ cardinality: Number.POSITIVE_INFINITY }));\n bindingsStream.on('end', () => resolve({ cardinality: Number.POSITIVE_INFINITY }));\n })\n .then(metadata => quads.setProperty('metadata', { ...metadata, canContainUndefs: true }));\n // Materialize the queried pattern using each found binding.\n const quads = this.queryBindings(this.url, selectQuery)\n .map((bindings) => (0, rdf_terms_1.mapTerms)(pattern, (value) => {\n if (value.termType === 'Variable') {\n const boundValue = bindings.get(value);\n if (!boundValue) {\n quads.destroy(new Error(`The endpoint ${this.url} failed to provide a binding for ${value.value}.`));\n }\n return boundValue;\n }\n return value;\n }));\n return quads;\n }\n}\nexports.RdfSourceSparql = RdfSourceSparql;\nRdfSourceSparql.FACTORY = new sparqlalgebrajs_1.Factory();\n//# sourceMappingURL=RdfSourceSparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaSparql\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternFederated = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst FederatedQuadSource_1 = require(\"./FederatedQuadSource\");\n/**\n * A comunica Federated RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternFederated extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n this.emptyPatterns = new Map();\n }\n async test(action) {\n const sources = (0, bus_rdf_resolve_quad_pattern_1.getContextSources)(action.context);\n if (!sources) {\n throw new Error(`Actor ${this.name} can only resolve quad pattern queries against a sources array.`);\n }\n return true;\n }\n async getSource(context) {\n return new FederatedQuadSource_1.FederatedQuadSource(this.mediatorResolveQuadPattern, context, this.emptyPatterns, this.skipEmptyPatterns);\n }\n}\nexports.ActorRdfResolveQuadPatternFederated = ActorRdfResolveQuadPatternFederated;\n//# sourceMappingURL=ActorRdfResolveQuadPatternFederated.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FederatedQuadSource = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst data_factory_1 = require(\"@comunica/data-factory\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A FederatedQuadSource can evaluate quad pattern queries over the union of different heterogeneous sources.\n * It will call the given mediator to evaluate each quad pattern query separately.\n */\nclass FederatedQuadSource {\n constructor(mediatorResolveQuadPattern, context, emptyPatterns, skipEmptyPatterns) {\n this.mediatorResolveQuadPattern = mediatorResolveQuadPattern;\n this.sources = context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n this.contextDefault = context.delete(context_entries_1.KeysRdfResolveQuadPattern.sources);\n this.emptyPatterns = emptyPatterns;\n this.sourceIds = context.get(context_entries_1.KeysRdfResolveQuadPattern.sourceIds) ?? new Map();\n this.skipEmptyPatterns = skipEmptyPatterns;\n this.algebraFactory = new sparqlalgebrajs_1.Factory();\n // Initialize sources in the emptyPatterns datastructure\n if (this.skipEmptyPatterns) {\n for (const source of this.sources) {\n if (!this.emptyPatterns.has(source)) {\n this.emptyPatterns.set(source, []);\n }\n }\n }\n }\n /**\n * Check if the given RDF term is not bound to an exact value.\n * I.e., if it is not a Variable.\n * @param {RDF.Term} term An RDF term.\n * @return {boolean} If it is not bound.\n */\n static isTermBound(term) {\n return term.termType !== 'Variable';\n }\n /**\n * Checks if the given (child) pattern is a more bound version of the given (parent) pattern.\n * This will also return true if the patterns are equal.\n * @param {RDF.BaseQuad} child A child pattern.\n * @param {RDF.BaseQuad} parent A parent pattern.\n * @return {boolean} If child is a sub-pattern of parent\n */\n static isSubPatternOf(child, parent) {\n return (!FederatedQuadSource.isTermBound(parent.subject) || parent.subject.equals(child.subject)) &&\n (!FederatedQuadSource.isTermBound(parent.predicate) || parent.predicate.equals(child.predicate)) &&\n (!FederatedQuadSource.isTermBound(parent.object) || parent.object.equals(child.object)) &&\n (!FederatedQuadSource.isTermBound(parent.graph) || parent.graph.equals(child.graph));\n }\n /**\n * If the given term is a blank node, return a deterministic named node for it\n * based on the source id and the blank node value.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n * @return If the given term was a blank node, this will return a skolemized named node, otherwise the original term.\n */\n static skolemizeTerm(term, sourceId) {\n if (term.termType === 'BlankNode') {\n return new data_factory_1.BlankNodeScoped(`bc_${sourceId}_${term.value}`, DF.namedNode(`${FederatedQuadSource.SKOLEM_PREFIX}${sourceId}:${term.value}`));\n }\n return term;\n }\n /**\n * Skolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The skolemized quad.\n */\n static skolemizeQuad(quad, sourceId) {\n return (0, rdf_terms_1.mapTerms)(quad, term => FederatedQuadSource.skolemizeTerm(term, sourceId));\n }\n /**\n * If a given term was a skolemized named node for the given source id,\n * deskolemize it again to a blank node.\n * If the given term was a skolemized named node for another source, return false.\n * If the given term was not a skolemized named node, return the original term.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n */\n static deskolemizeTerm(term, sourceId) {\n if (term.termType === 'BlankNode' && 'skolemized' in term) {\n term = term.skolemized;\n }\n if (term.termType === 'NamedNode' && term.value.startsWith(FederatedQuadSource.SKOLEM_PREFIX)) {\n const colonSeparator = term.value.indexOf(':', FederatedQuadSource.SKOLEM_PREFIX.length);\n const termSourceId = term.value.slice(FederatedQuadSource.SKOLEM_PREFIX.length, colonSeparator);\n // We had a skolemized term\n if (termSourceId === sourceId) {\n // It came from the correct source\n const termLabel = term.value.slice(colonSeparator + 1, term.value.length);\n return DF.blankNode(termLabel);\n }\n // It came from a different source\n return null;\n }\n return term;\n }\n /**\n * Deskolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The deskolemized quad.\n */\n static deskolemizeQuad(quad, sourceId) {\n return (0, rdf_terms_1.mapTerms)(quad, (term) => {\n const newTerm = FederatedQuadSource.deskolemizeTerm(term, sourceId);\n // If the term was skolemized in a different source then dont deskolemize it\n return !newTerm ? term : newTerm;\n });\n }\n /**\n * If the given source is guaranteed to produce an empty result for the given pattern.\n *\n * This prediction is done based on the 'emptyPatterns' datastructure that is stored within this actor.\n * Every time an empty pattern is passed, this pattern is stored in this datastructure for this source.\n * If this pattern (or a more bound pattern) is queried, we know for certain that it will be empty again.\n * This is under the assumption that sources will remain static during query evaluation.\n *\n * @param {IQuerySource} source\n * @param {RDF.BaseQuad} pattern\n * @return {boolean}\n */\n isSourceEmpty(source, pattern) {\n if (!this.skipEmptyPatterns) {\n return false;\n }\n const emptyPatterns = this.emptyPatterns.get(source);\n if (emptyPatterns) {\n for (const emptyPattern of emptyPatterns) {\n if (FederatedQuadSource.isSubPatternOf(pattern, emptyPattern)) {\n return true;\n }\n }\n }\n return false;\n }\n /**\n * Get the unique, deterministic id for the given source.\n * @param source A data source.\n * @return The id of the given source.\n */\n getSourceId(source) {\n let sourceId = this.sourceIds.get(source);\n if (sourceId === undefined) {\n sourceId = `${this.sourceIds.size}`;\n this.sourceIds.set(source, sourceId);\n }\n return sourceId;\n }\n match(subject, predicate, object, graph) {\n // Counters for our metadata\n const metadata = { cardinality: { type: 'exact', value: 0 }, canContainUndefs: false };\n let remainingSources = this.sources.length;\n // Anonymous function to handle cardinality from metadata\n const checkEmitMetadata = (currentTotalItems, source, pattern, lastMetadata) => {\n if (this.skipEmptyPatterns && !currentTotalItems && pattern && !this.isSourceEmpty(source, pattern)) {\n this.emptyPatterns.get(source).push(pattern);\n }\n if (!remainingSources) {\n if (lastMetadata && this.sources.length === 1) {\n // If we only had one source, emit the metadata as-is.\n it.setProperty('metadata', lastMetadata);\n }\n else {\n it.setProperty('metadata', metadata);\n }\n }\n };\n const proxyIt = Promise.all(this.sources.map(async (source) => {\n const sourceId = this.getSourceId(source);\n // Deskolemize terms, so we send the original blank nodes to each source.\n // Note that some sources may not match bnodes by label. SPARQL endpoints for example consider them variables.\n const patternS = FederatedQuadSource.deskolemizeTerm(subject, sourceId);\n const patternP = FederatedQuadSource.deskolemizeTerm(predicate, sourceId);\n const patternO = FederatedQuadSource.deskolemizeTerm(object, sourceId);\n const patternG = FederatedQuadSource.deskolemizeTerm(graph, sourceId);\n let pattern;\n // Prepare the context for this specific source\n let context = (0, bus_rdf_resolve_quad_pattern_1.getDataSourceContext)(source, this.contextDefault);\n context = context.set(context_entries_1.KeysRdfResolveQuadPattern.source, { type: (0, bus_rdf_resolve_quad_pattern_1.getDataSourceType)(source), value: (0, bus_rdf_resolve_quad_pattern_1.getDataSourceValue)(source) });\n let output;\n // If any of the deskolemized blank nodes originate from another source,\n // or if we can predict that the given source will have no bindings for the given pattern,\n // return an empty iterator.\n if (!patternS || !patternP || !patternO || !patternG ||\n // eslint-disable-next-line no-cond-assign\n this.isSourceEmpty(source, pattern = this.algebraFactory\n .createPattern(patternS, patternP, patternO, patternG))) {\n output = { data: new asynciterator_1.ArrayIterator([], { autoStart: false }) };\n output.data.setProperty('metadata', { cardinality: 0, canContainUndefs: false });\n }\n else {\n output = await this.mediatorResolveQuadPattern.mediate({ pattern, context });\n }\n // Handle the metadata from this source\n output.data.getProperty('metadata', (subMetadata) => {\n if (!subMetadata.cardinality || !Number.isFinite(subMetadata.cardinality.value)) {\n // We're already at infinite, so ignore any later metadata\n metadata.cardinality.type = 'estimate';\n metadata.cardinality.value = Number.POSITIVE_INFINITY;\n remainingSources = 0;\n }\n else {\n if (subMetadata.cardinality.type === 'estimate') {\n metadata.cardinality.type = 'estimate';\n }\n metadata.cardinality.value += subMetadata.cardinality.value;\n remainingSources--;\n }\n if (metadata.requestTime || subMetadata.requestTime) {\n metadata.requestTime = metadata.requestTime || 0;\n subMetadata.requestTime = subMetadata.requestTime || 0;\n metadata.requestTime += subMetadata.requestTime;\n }\n if (metadata.pageSize || subMetadata.pageSize) {\n metadata.pageSize = metadata.pageSize || 0;\n subMetadata.pageSize = subMetadata.pageSize || 0;\n metadata.pageSize += subMetadata.pageSize;\n }\n if (subMetadata.canContainUndefs) {\n metadata.canContainUndefs = true;\n }\n checkEmitMetadata(metadata.cardinality.value, source, pattern, subMetadata);\n });\n // Determine the data stream from this source\n let data = output.data.map(quad => FederatedQuadSource.skolemizeQuad(quad, sourceId));\n // SPARQL query semantics allow graph variables to only match with named graphs, excluding the default graph\n if (graph.termType === 'Variable') {\n data = data.filter(quad => quad.graph.termType !== 'DefaultGraph');\n }\n // Forward errors to our final iterator\n data.on('error', error => it.emit('error', error));\n return data;\n }));\n // Take the union of all source streams\n const it = new asynciterator_1.TransformIterator(async () => new asynciterator_1.UnionIterator(await proxyIt), { autoStart: false });\n // If we have 0 sources, immediately emit metadata\n if (this.sources.length === 0) {\n it.setProperty('metadata', metadata);\n }\n return it;\n }\n}\nexports.FederatedQuadSource = FederatedQuadSource;\nFederatedQuadSource.SKOLEM_PREFIX = 'urn:comunica_skolem:source_';\n//# sourceMappingURL=FederatedQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternFederated\"), exports);\n__exportStar(require(\"./FederatedQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternHypermedia = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst LRUCache = require(\"lru-cache\");\nconst MediatedQuadSource_1 = require(\"./MediatedQuadSource\");\n/**\n * A comunica Hypermedia RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternHypermedia extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(({ url }) => url ? cache.del(url) : cache.reset());\n }\n }\n async test(action) {\n const sources = (0, bus_rdf_resolve_quad_pattern_1.hasContextSingleSource)(action.context);\n if (!sources) {\n throw new Error(`Actor ${this.name} can only resolve quad pattern queries against a single source.`);\n }\n return true;\n }\n getSource(context, operation) {\n const contextSource = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(context);\n const url = (0, bus_rdf_resolve_quad_pattern_1.getContextSourceUrl)(contextSource);\n let source;\n // Try to read from cache\n if (this.cache && this.cache.has(url)) {\n source = this.cache.get(url);\n }\n else {\n // If not in cache, create a new source\n source = new MediatedQuadSource_1.MediatedQuadSource(this.cacheSize, context, url, (0, bus_rdf_resolve_quad_pattern_1.getDataSourceType)(contextSource), this.maxIterators, {\n mediatorMetadata: this.mediatorMetadata,\n mediatorMetadataExtract: this.mediatorMetadataExtract,\n mediatorDereferenceRdf: this.mediatorDereferenceRdf,\n mediatorRdfResolveHypermedia: this.mediatorRdfResolveHypermedia,\n mediatorRdfResolveHypermediaLinks: this.mediatorRdfResolveHypermediaLinks,\n mediatorRdfResolveHypermediaLinksQueue: this.mediatorRdfResolveHypermediaLinksQueue,\n });\n // Set in cache\n if (this.cache) {\n this.cache.set(url, source);\n }\n }\n return Promise.resolve(source);\n }\n}\nexports.ActorRdfResolveQuadPatternHypermedia = ActorRdfResolveQuadPatternHypermedia;\n//# sourceMappingURL=ActorRdfResolveQuadPatternHypermedia.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedRdfSourcesAsyncRdfIterator = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\nconst LRUCache = require(\"lru-cache\");\nclass LinkedRdfSourcesAsyncRdfIterator extends asynciterator_1.BufferedIterator {\n constructor(cacheSize, subject, predicate, object, graph, firstUrl, maxIterators) {\n super({ autoStart: true });\n this.started = false;\n this.cacheSize = cacheSize;\n this.subject = subject;\n this.predicate = predicate;\n this.object = object;\n this.graph = graph;\n this.firstUrl = firstUrl;\n this.maxIterators = maxIterators;\n if (this.maxIterators <= 0) {\n throw new Error(`LinkedRdfSourcesAsyncRdfIterator.maxIterators must be larger than zero, but got ${this.maxIterators}`);\n }\n this.currentIterators = [];\n this.iteratorsPendingCreation = 0;\n }\n /**\n * This method can optionally called after constructing an instance\n * for allowing the sources state to be cached.\n *\n * When calling without args, then the default logic will be followed to determine the sources state.\n * When calling with an arg, then the given sources state will be set instead of following the default logic.\n *\n * After calling this method, the `sourcesState` field can be retrieved and optionally cached.\n *\n * This sources state also contains a hash of all handled datasets that will be copied upon first use.\n *\n * @param {ISourcesState} sourcesState An optional sources state.\n */\n setSourcesState(sourcesState) {\n if (sourcesState) {\n this.sourcesState = sourcesState;\n }\n else {\n this.sourcesState = {\n sources: new LRUCache({ max: this.cacheSize }),\n };\n // Ignore the response, we just want the promise to be cached\n this.getSourceCached({ url: this.firstUrl }, {})\n .catch(error => this.destroy(error));\n }\n }\n /**\n * Resolve a source for the given URL.\n * This will first try to retrieve the source from cache.\n * @param link A source ILink.\n * @param handledDatasets A hash of dataset identifiers that have already been handled.\n */\n getSourceCached(link, handledDatasets) {\n let source = this.sourcesState.sources.get(link.url);\n if (source) {\n return source;\n }\n source = this.getSource(link, handledDatasets);\n this.sourcesState.sources.set(link.url, source);\n return source;\n }\n _read(count, done) {\n if (!this.started) {\n // The first time this is called, prepare the first source\n this.started = true;\n // Create a sources state if needed (can be defined if set from actor cache)\n if (!this.sourcesState) {\n this.setSourcesState();\n }\n // Await the source to be set, and start the source iterator\n this.getSourceCached({ url: this.firstUrl }, {})\n .then(sourceState => {\n this.startIterator(sourceState, true);\n done();\n })\n .catch(error => {\n // We can safely ignore this error, since it handled in setSourcesState\n done();\n });\n }\n else {\n // Read from all current iterators\n for (const iterator of this.currentIterators) {\n while (count > 0) {\n const read = iterator.read();\n if (read !== null) {\n count--;\n this._push(read);\n }\n else {\n break;\n }\n }\n if (count <= 0) {\n break;\n }\n }\n // Schedule new iterators if needed\n if (count >= 0 && this.canStartNewIterator()) {\n this.getSourceCached({ url: this.firstUrl }, {})\n .then(sourceState => {\n this.startIteratorsForNextUrls(sourceState.handledDatasets, false);\n done();\n })\n .catch(error => this.destroy(error));\n }\n else {\n done();\n }\n }\n }\n canStartNewIterator() {\n return (this.currentIterators.length + this.iteratorsPendingCreation) < this.maxIterators && !this.readable;\n }\n areIteratorsRunning() {\n return (this.currentIterators.length + this.iteratorsPendingCreation) > 0;\n }\n /**\n * Start a new iterator for the given source.\n * Once the iterator is done, it will either determine a new source, or it will close the linked iterator.\n * @param {ISourceState} startSource The start source state.\n * @param {boolean} emitMetadata If the metadata event should be emitted.\n */\n startIterator(startSource, emitMetadata) {\n // Delegate the quad pattern query to the given source\n const iterator = startSource.source\n .match(this.subject, this.predicate, this.object, this.graph);\n this.currentIterators.push(iterator);\n let receivedMetadata = false;\n // Attach readers to the newly created iterator\n iterator._destination = this;\n iterator.on('error', (error) => this.destroy(error));\n iterator.on('readable', () => this._fillBuffer());\n iterator.on('end', () => {\n this.currentIterators.splice(this.currentIterators.indexOf(iterator), 1);\n // If the metadata was already received, handle the next URL in the queue\n if (receivedMetadata) {\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }\n });\n // Listen for the metadata of the source\n // The metadata property is guaranteed to be set\n iterator.getProperty('metadata', (metadata) => {\n startSource.metadata = { ...startSource.metadata, ...metadata };\n // Emit metadata if needed\n if (emitMetadata) {\n this.setProperty('metadata', startSource.metadata);\n }\n // Determine next urls, which will eventually become a next-next source.\n this.getSourceLinks(startSource.metadata)\n .then((nextUrls) => Promise.all(nextUrls))\n .then(async (nextUrls) => {\n // Append all next URLs to our queue\n const linkQueue = await this.getLinkQueue();\n for (const nextUrl of nextUrls) {\n linkQueue.push(nextUrl, startSource.link);\n }\n receivedMetadata = true;\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }).catch(error => this.destroy(error));\n });\n }\n /**\n * Check if a next URL is in the queue.\n * If yes, start a new iterator.\n * If no, close this iterator.\n * @param handledDatasets\n * @param canClose\n */\n startIteratorsForNextUrls(handledDatasets, canClose) {\n this.getLinkQueue()\n .then(linkQueue => {\n // Create as many new iterators as possible\n while (this.canStartNewIterator() && !this.done) {\n const nextLink = linkQueue.pop();\n if (nextLink) {\n this.iteratorsPendingCreation++;\n this.getSourceCached(nextLink, handledDatasets)\n .then(nextSourceState => {\n this.iteratorsPendingCreation--;\n this.startIterator(nextSourceState, false);\n })\n .catch(error => this.destroy(error));\n }\n else {\n break;\n }\n }\n // Close, only if no other iterators are still running\n if (canClose && linkQueue.isEmpty() && !this.areIteratorsRunning()) {\n this.close();\n }\n })\n .catch(error => this.destroy(error));\n }\n}\nexports.LinkedRdfSourcesAsyncRdfIterator = LinkedRdfSourcesAsyncRdfIterator;\n//# sourceMappingURL=LinkedRdfSourcesAsyncRdfIterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatedLinkedRdfSourcesAsyncRdfIterator = void 0;\nconst stream_1 = require(\"stream\");\nconst LinkedRdfSourcesAsyncRdfIterator_1 = require(\"./LinkedRdfSourcesAsyncRdfIterator\");\n/**\n * An quad iterator that can iterate over consecutive RDF sources\n * that are determined using the rdf-resolve-hypermedia-links bus.\n *\n * @see LinkedRdfSourcesAsyncRdfIterator\n */\nclass MediatedLinkedRdfSourcesAsyncRdfIterator extends LinkedRdfSourcesAsyncRdfIterator_1.LinkedRdfSourcesAsyncRdfIterator {\n constructor(cacheSize, context, forceSourceType, subject, predicate, object, graph, firstUrl, maxIterators, mediators) {\n super(cacheSize, subject, predicate, object, graph, firstUrl, maxIterators);\n this.context = context;\n this.forceSourceType = forceSourceType;\n this.mediatorDereferenceRdf = mediators.mediatorDereferenceRdf;\n this.mediatorMetadata = mediators.mediatorMetadata;\n this.mediatorMetadataExtract = mediators.mediatorMetadataExtract;\n this.mediatorRdfResolveHypermedia = mediators.mediatorRdfResolveHypermedia;\n this.mediatorRdfResolveHypermediaLinks = mediators.mediatorRdfResolveHypermediaLinks;\n this.mediatorRdfResolveHypermediaLinksQueue = mediators.mediatorRdfResolveHypermediaLinksQueue;\n this.handledUrls = { [firstUrl]: true };\n }\n getLinkQueue() {\n if (!this.linkQueue) {\n this.linkQueue = this.mediatorRdfResolveHypermediaLinksQueue\n .mediate({ firstUrl: this.firstUrl, context: this.context })\n .then(result => result.linkQueue);\n }\n return this.linkQueue;\n }\n async getSourceLinks(metadata) {\n try {\n const { links } = await this.mediatorRdfResolveHypermediaLinks.mediate({ context: this.context, metadata });\n // Filter URLs to avoid cyclic next-page loops\n return links.filter(link => {\n if (this.handledUrls[link.url]) {\n return false;\n }\n this.handledUrls[link.url] = true;\n return true;\n });\n }\n catch {\n // No next URLs may be available, for example when we've reached the end of a Hydra next-page sequence.\n return [];\n }\n }\n async getSource(link, handledDatasets) {\n // Include context entries from link\n let context = this.context;\n if (link.context) {\n context = context.merge(link.context);\n }\n // Get the RDF representation of the given document\n let url = link.url;\n let quads;\n let metadata;\n try {\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf\n .mediate({ context, url });\n url = dereferenceRdfOutput.url;\n // Determine the metadata\n const rdfMetadataOutput = await this.mediatorMetadata.mediate({ context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples });\n rdfMetadataOutput.data.on('error', () => {\n // Silence errors in the data stream,\n // as they will be emitted again in the metadata stream,\n // and will result in a promise rejection anyways.\n // If we don't do this, we end up with an unhandled error message\n });\n metadata = (await this.mediatorMetadataExtract.mediate({\n context,\n url,\n // The problem appears to be conflicting metadata keys here\n metadata: rdfMetadataOutput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n quads = rdfMetadataOutput.data;\n // Optionally filter the resulting data\n if (link.transform) {\n quads = await link.transform(quads);\n }\n }\n catch (error) {\n // Make sure that dereference errors are only emitted once an actor really needs the read quads\n // This for example allows SPARQL endpoints that error on service description fetching to still be source-forcible\n quads = new stream_1.Readable();\n quads.read = () => {\n quads.emit('error', error);\n return null;\n };\n metadata = {};\n }\n // Determine the source\n const { source, dataset } = await this.mediatorRdfResolveHypermedia.mediate({\n context,\n forceSourceType: this.forceSourceType,\n handledDatasets,\n metadata,\n quads,\n url,\n });\n if (dataset) {\n // Mark the dataset as applied\n // This is needed to make sure that things like QPF search forms are only applied once,\n // and next page links are followed after that.\n handledDatasets[dataset] = true;\n }\n return { link, source, metadata, handledDatasets };\n }\n}\nexports.MediatedLinkedRdfSourcesAsyncRdfIterator = MediatedLinkedRdfSourcesAsyncRdfIterator;\n//# sourceMappingURL=MediatedLinkedRdfSourcesAsyncRdfIterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatedQuadSource = void 0;\nconst MediatedLinkedRdfSourcesAsyncRdfIterator_1 = require(\"./MediatedLinkedRdfSourcesAsyncRdfIterator\");\n/**\n * A lazy quad source that creates {@link MediatedLinkedRdfSourcesAsyncRdfIterator} instances when matching quads.\n *\n * @see MediatedLinkedRdfSourcesAsyncRdfIterator\n */\nclass MediatedQuadSource {\n constructor(cacheSize, context, firstUrl, forceSourceType, maxIterators, mediators) {\n this.cacheSize = cacheSize;\n this.context = context;\n this.firstUrl = firstUrl;\n this.forceSourceType = forceSourceType;\n this.maxIterators = maxIterators;\n this.mediators = mediators;\n }\n match(subject, predicate, object, graph) {\n const it = new MediatedLinkedRdfSourcesAsyncRdfIterator_1.MediatedLinkedRdfSourcesAsyncRdfIterator(this.cacheSize, this.context, this.forceSourceType, subject, predicate, object, graph, this.firstUrl, this.maxIterators, this.mediators);\n if (!this.sourcesState) {\n it.setSourcesState();\n this.sourcesState = it.sourcesState;\n }\n else {\n it.setSourcesState(this.sourcesState);\n }\n return it;\n }\n}\nexports.MediatedQuadSource = MediatedQuadSource;\n//# sourceMappingURL=MediatedQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternHypermedia\"), exports);\n__exportStar(require(\"./MediatedQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternRdfJsSource = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst RdfJsQuadSource_1 = require(\"./RdfJsQuadSource\");\n/**\n * A comunica RDFJS Source RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternRdfJsSource extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n }\n async test(action) {\n if (!(0, bus_rdf_resolve_quad_pattern_1.hasContextSingleSourceOfType)('rdfjsSource', action.context)) {\n throw new Error(`${this.name} requires a single source with an rdfjsSource to be present in the context.`);\n }\n const source = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(action.context);\n if (!source || typeof source === 'string' || (!('match' in source) && !source.value.match)) {\n throw new Error(`${this.name} received an invalid rdfjsSource.`);\n }\n return true;\n }\n async getSource(context) {\n const source = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(context);\n return new RdfJsQuadSource_1.RdfJsQuadSource('match' in source ? source : source.value);\n }\n}\nexports.ActorRdfResolveQuadPatternRdfJsSource = ActorRdfResolveQuadPatternRdfJsSource;\n//# sourceMappingURL=ActorRdfResolveQuadPatternRdfJsSource.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IRdfJsSourceExtended.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfJsQuadSource = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\n/**\n * A quad source that wraps over an {@link RDF.Source}.\n */\nclass RdfJsQuadSource {\n constructor(source) {\n this.source = source;\n }\n static nullifyVariables(term) {\n return !term || term.termType === 'Variable' ? undefined : term;\n }\n match(subject, predicate, object, graph) {\n // Create an async iterator from the matched quad stream\n const rawStream = this.source.match(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n const it = (0, asynciterator_1.wrap)(rawStream, { autoStart: false });\n // Determine metadata\n this.setMetadata(it, subject, predicate, object, graph)\n .catch(error => it.destroy(error));\n return it;\n }\n async setMetadata(it, subject, predicate, object, graph) {\n let cardinality;\n if (this.source.countQuads) {\n // If the source provides a dedicated method for determining cardinality, use that.\n cardinality = await this.source.countQuads(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n }\n else {\n // Otherwise, fallback to a sub-optimal alternative where we just call match again to count the quads.\n // WARNING: we can NOT reuse the original data stream here,\n // because we may loose data elements due to things happening async.\n let i = 0;\n cardinality = await new Promise((resolve, reject) => {\n const matches = this.source.match(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n matches.on('error', reject);\n matches.on('end', () => resolve(i));\n matches.on('data', () => i++);\n });\n }\n it.setProperty('metadata', { cardinality: { type: 'exact', value: cardinality }, canContainUndefs: false });\n }\n}\nexports.RdfJsQuadSource = RdfJsQuadSource;\n//# sourceMappingURL=RdfJsQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternRdfJsSource\"), exports);\n__exportStar(require(\"./IRdfJsSourceExtended\"), exports);\n__exportStar(require(\"./RdfJsQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeJsonLd = void 0;\nconst bus_rdf_serialize_1 = require(\"@comunica/bus-rdf-serialize\");\nconst jsonld_streaming_serializer_1 = require(\"jsonld-streaming-serializer\");\n/**\n * A comunica Jsonld RDF Serialize Actor.\n */\nclass ActorRdfSerializeJsonLd extends bus_rdf_serialize_1.ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/ld+json\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/ld+json\": \"http://www.w3.org/ns/formats/JSON-LD\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const data = new jsonld_streaming_serializer_1.JsonLdSerializer({ space: ' '.repeat(this.jsonStringifyIndentSpaces) }).import(action.quadStream);\n return { data };\n }\n}\nexports.ActorRdfSerializeJsonLd = ActorRdfSerializeJsonLd;\n//# sourceMappingURL=ActorRdfSerializeJsonLd.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerializeJsonLd\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeN3 = void 0;\nconst bus_rdf_serialize_1 = require(\"@comunica/bus-rdf-serialize\");\nconst n3_1 = require(\"n3\");\n/**\n * A comunica N3 RDF Serialize Actor.\n */\nclass ActorRdfSerializeN3 extends bus_rdf_serialize_1.ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/n-quads\": 1.0,\n * \"application/trig\": 0.95,\n * \"application/n-triples\": 0.8,\n * \"text/turtle\": 0.6,\n * \"text/n3\": 0.35\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/n-quads\": \"http://www.w3.org/ns/formats/N-Quads\",\n * \"application/trig\": \"http://www.w3.org/ns/formats/TriG\",\n * \"application/n-triples\": \"http://www.w3.org/ns/formats/N-Triples\",\n * \"text/turtle\": \"http://www.w3.org/ns/formats/Turtle\",\n * \"text/n3\": \"http://www.w3.org/ns/formats/N3\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const data = new n3_1.StreamWriter({ format: mediaType }).import(action.quadStream);\n return { data,\n triples: mediaType === 'text/turtle' ||\n mediaType === 'application/n-triples' ||\n mediaType === 'text/n3' };\n }\n}\nexports.ActorRdfSerializeN3 = ActorRdfSerializeN3;\n//# sourceMappingURL=ActorRdfSerializeN3.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerializeN3\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaPatchSparqlUpdate = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationPatchSparqlUpdate_1 = require(\"./QuadDestinationPatchSparqlUpdate\");\n/**\n * A comunica Patch SPARQL Update RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaPatchSparqlUpdate extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'patchSparqlUpdate');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType && !action.metadata.patchSparqlUpdate) {\n throw new Error(`Actor ${this.name} could not detect a destination with 'application/sparql-update' as 'Accept-Patch' header.`);\n }\n if (!action.forceDestinationType && !action.exists) {\n throw new Error(`Actor ${this.name} can only patch a destination that already exists.`);\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as patchSparqlUpdate destination: ${action.url}`);\n return {\n destination: new QuadDestinationPatchSparqlUpdate_1.QuadDestinationPatchSparqlUpdate(action.url, action.context, this.mediatorHttp),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaPatchSparqlUpdate = ActorRdfUpdateHypermediaPatchSparqlUpdate;\n//# sourceMappingURL=ActorRdfUpdateHypermediaPatchSparqlUpdate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationPatchSparqlUpdate = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst cross_fetch_1 = require(\"cross-fetch\");\nconst rdf_string_ttl_1 = require(\"rdf-string-ttl\");\n/**\n * A quad destination that represents a resource that is patchable via SPARQL Update.\n */\nclass QuadDestinationPatchSparqlUpdate {\n constructor(url, context, mediatorHttp) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n }\n insert(quads) {\n return this.wrapSparqlUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n return this.wrapSparqlUpdateRequest('DELETE', quads);\n }\n async wrapSparqlUpdateRequest(type, quads) {\n // Wrap triples in DATA block\n const dataWrapped = quads\n .map((quad) => {\n let stringQuad = `${(0, rdf_string_ttl_1.termToString)(quad.subject)} ${(0, rdf_string_ttl_1.termToString)(quad.predicate)} ${(0, rdf_string_ttl_1.termToString)(quad.object)} .`;\n if (quad.graph.termType !== 'DefaultGraph') {\n stringQuad = ` GRAPH ${(0, rdf_string_ttl_1.termToString)(quad.graph)} { ${stringQuad} }\\n`;\n }\n else {\n stringQuad = ` ${stringQuad}\\n`;\n }\n return stringQuad;\n })\n .prepend([`${type} DATA {\\n`])\n .append(['}']);\n const readable = new stream_1.Readable();\n readable._read = () => true;\n dataWrapped.on('data', (quad) => readable.push(quad));\n dataWrapped.on('end', () => readable.push(null));\n // Send data in PUT request\n const headers = new cross_fetch_1.Headers({ 'content-type': 'application/sparql-update' });\n const httpResponse = await this.mediatorHttp.mediate({\n context: this.context,\n init: {\n headers,\n method: 'PATCH',\n body: bus_http_1.ActorHttp.toWebReadableStream(readable),\n },\n input: this.url,\n });\n await (0, bus_rdf_update_quads_1.validateHttpResponse)(this.url, httpResponse);\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n throw new Error(`Patch-based SPARQL Update destinations don't support named graphs`);\n }\n async createGraphs(graphs, requireNonExistence) {\n throw new Error(`Patch-based SPARQL Update destinations don't support named graphs`);\n }\n}\nexports.QuadDestinationPatchSparqlUpdate = QuadDestinationPatchSparqlUpdate;\n//# sourceMappingURL=QuadDestinationPatchSparqlUpdate.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaPatchSparqlUpdate\"), exports);\n__exportStar(require(\"./QuadDestinationPatchSparqlUpdate\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaPutLdp = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationPutLdp_1 = require(\"./QuadDestinationPutLdp\");\n/**\n * A comunica Post LDP RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaPutLdp extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'putLdp');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType) {\n if (!action.metadata.allowHttpMethods || !action.metadata.allowHttpMethods.includes('PUT')) {\n throw new Error(`Actor ${this.name} could not detect a destination with 'Allow: PUT' header.`);\n }\n if (action.exists) {\n throw new Error(`Actor ${this.name} can only put on a destination that does not already exists.`);\n }\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as putLdp destination: ${action.url}`);\n return {\n destination: new QuadDestinationPutLdp_1.QuadDestinationPutLdp(action.url, action.context, action.metadata.putAccepted || [], this.mediatorHttp, this.mediatorRdfSerializeMediatypes, this.mediatorRdfSerialize),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaPutLdp = ActorRdfUpdateHypermediaPutLdp;\n//# sourceMappingURL=ActorRdfUpdateHypermediaPutLdp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationPutLdp = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst cross_fetch_1 = require(\"cross-fetch\");\n/**\n * A quad destination that represents a resource that can be PUT.\n */\nclass QuadDestinationPutLdp {\n constructor(url, context, mediaTypes, mediatorHttp, mediatorRdfSerializeMediatypes, mediatorRdfSerialize) {\n this.url = url;\n this.context = context;\n this.mediaTypes = mediaTypes;\n this.mediatorHttp = mediatorHttp;\n this.mediatorRdfSerializeMediatypes = mediatorRdfSerializeMediatypes;\n this.mediatorRdfSerialize = mediatorRdfSerialize;\n }\n insert(quads) {\n return this.wrapRdfUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n throw new Error(`Put-based LDP destinations don't support deletions`);\n }\n async wrapRdfUpdateRequest(type, quads) {\n // Determine media type for serialization\n const { mediaTypes } = await this.mediatorRdfSerializeMediatypes.mediate({ context: this.context, mediaTypes: true });\n const availableMediaTypes = this.mediaTypes\n .filter(mediaType => mediaType in mediaTypes);\n // Fallback to our own preferred media type\n const mediaType = availableMediaTypes.length > 0 ?\n availableMediaTypes[0] :\n Object.keys(mediaTypes).sort((typeA, typeB) => mediaTypes[typeB] - mediaTypes[typeA])[0];\n // Serialize quads\n const { handle: { data } } = await this.mediatorRdfSerialize.mediate({\n context: this.context,\n handle: { quadStream: quads, context: this.context },\n handleMediaType: mediaType,\n });\n // Send data in (LDP) PUT request\n const headers = new cross_fetch_1.Headers({ 'content-type': mediaType });\n const httpResponse = await this.mediatorHttp.mediate({\n context: this.context,\n init: {\n headers,\n method: 'PUT',\n body: bus_http_1.ActorHttp.toWebReadableStream(data),\n },\n input: this.url,\n });\n await (0, bus_rdf_update_quads_1.validateHttpResponse)(this.url, httpResponse);\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n throw new Error(`Put-based LDP destinations don't support named graphs`);\n }\n async createGraphs(graphs, requireNonExistence) {\n throw new Error(`Put-based LDP destinations don't support named graphs`);\n }\n}\nexports.QuadDestinationPutLdp = QuadDestinationPutLdp;\n//# sourceMappingURL=QuadDestinationPutLdp.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaPutLdp\"), exports);\n__exportStar(require(\"./QuadDestinationPutLdp\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaSparql = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationSparql_1 = require(\"./QuadDestinationSparql\");\n/**\n * A comunica SPARQL RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaSparql extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'sparql');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType && !action.metadata.sparqlService &&\n !(this.checkUrlSuffixSparql && action.url.endsWith('/sparql')) &&\n !(this.checkUrlSuffixUpdate && action.url.endsWith('/update'))) {\n throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql or /update.`);\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as sparql destination: ${action.url}`);\n return {\n destination: new QuadDestinationSparql_1.QuadDestinationSparql(action.metadata.sparqlService || action.url, action.context, this.mediatorHttp),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaSparql = ActorRdfUpdateHypermediaSparql;\n//# sourceMappingURL=ActorRdfUpdateHypermediaSparql.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationSparql = void 0;\nconst fetch_sparql_endpoint_1 = require(\"fetch-sparql-endpoint\");\nconst rdf_string_ttl_1 = require(\"rdf-string-ttl\");\nconst stringifyStream = require('stream-to-string');\n/**\n * A quad destination that represents an LDP resource.\n */\nclass QuadDestinationSparql {\n constructor(url, context, mediatorHttp) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n this.endpointFetcher = new fetch_sparql_endpoint_1.SparqlEndpointFetcher({\n fetch: (input, init) => this.mediatorHttp.mediate({ input, init, context: this.context }),\n prefixVariableQuestionMark: true,\n });\n }\n insert(quads) {\n return this.wrapSparqlUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n return this.wrapSparqlUpdateRequest('DELETE', quads);\n }\n async wrapSparqlUpdateRequest(type, quads) {\n // Wrap triples in DATA block\n const dataWrapped = quads\n .map((quad) => {\n let stringQuad = `${(0, rdf_string_ttl_1.termToString)(quad.subject)} ${(0, rdf_string_ttl_1.termToString)(quad.predicate)} ${(0, rdf_string_ttl_1.termToString)(quad.object)} .`;\n if (quad.graph.termType !== 'DefaultGraph') {\n stringQuad = ` GRAPH ${(0, rdf_string_ttl_1.termToString)(quad.graph)} { ${stringQuad} }\\n`;\n }\n else {\n stringQuad = ` ${stringQuad}\\n`;\n }\n return stringQuad;\n })\n .prepend([`${type} DATA {\\n`])\n .append(['}']);\n // Serialize query stream to string\n const query = await stringifyStream(dataWrapped);\n // Send update query to endpoint\n await this.endpointFetcher.fetchUpdate(this.url, query);\n }\n async deleteGraphs(graphsIn, requireExistence, dropGraphs) {\n const graphs = Array.isArray(graphsIn) ?\n graphsIn :\n [graphsIn];\n const queries = [];\n for (const graph of graphs) {\n let graphValue;\n if (typeof graph === 'string') {\n graphValue = graph;\n }\n else if (graph.termType === 'DefaultGraph') {\n graphValue = 'DEFAULT';\n }\n else {\n graphValue = `GRAPH <${graph.value}>`;\n }\n queries.push(`${dropGraphs ? 'DROP' : 'CLEAR'} ${requireExistence ? '' : 'SILENT '}${graphValue}`);\n }\n await this.endpointFetcher.fetchUpdate(this.url, queries.join('; '));\n }\n async createGraphs(graphs, requireNonExistence) {\n const queries = [];\n for (const graph of graphs) {\n queries.push(`CREATE${requireNonExistence ? '' : ' SILENT'} GRAPH <${graph.value}>`);\n }\n await this.endpointFetcher.fetchUpdate(this.url, queries.join('; '));\n }\n}\nexports.QuadDestinationSparql = QuadDestinationSparql;\n//# sourceMappingURL=QuadDestinationSparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaSparql\"), exports);\n__exportStar(require(\"./QuadDestinationSparql\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsHypermedia = void 0;\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst LRUCache = require(\"lru-cache\");\n/**\n * A comunica Hypermedia RDF Update Quads Actor.\n */\nclass ActorRdfUpdateQuadsHypermedia extends bus_rdf_update_quads_1.ActorRdfUpdateQuadsDestination {\n constructor(args) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(({ url }) => url ? cache.del(url) : cache.reset());\n }\n }\n async test(action) {\n const url = (0, bus_rdf_update_quads_1.getContextDestinationUrl)((0, bus_rdf_update_quads_1.getContextDestination)(action.context));\n if (!url) {\n throw new Error(`Actor ${this.name} can only update quads against a single destination URL.`);\n }\n return true;\n }\n getDestination(context) {\n const dataDestination = (0, bus_rdf_update_quads_1.getContextDestination)(context);\n let url = (0, bus_rdf_update_quads_1.getContextDestinationUrl)(dataDestination);\n // Try to read from cache\n if (this.cache && this.cache.has(url)) {\n return this.cache.get(url);\n }\n // Otherwise, call mediators\n const ret = (async () => {\n let metadata;\n let exists;\n try {\n // Dereference destination URL\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf\n .mediate({ context, url, acceptErrors: true });\n exists = dereferenceRdfOutput.exists;\n url = dereferenceRdfOutput.url;\n // Determine the metadata\n const rdfMetadataOuput = await this.mediatorMetadata.mediate({ context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples });\n metadata = (await this.mediatorMetadataExtract.mediate({\n context,\n url,\n metadata: rdfMetadataOuput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n }\n catch {\n metadata = {};\n exists = false;\n }\n // Obtain destination\n const { destination } = await this.mediatorRdfUpdateHypermedia.mediate({\n context,\n url,\n metadata,\n exists,\n forceDestinationType: (0, bus_rdf_update_quads_1.getDataDestinationType)(dataDestination),\n });\n return destination;\n })();\n if (this.cache) {\n this.cache.set(url, ret);\n }\n return ret;\n }\n}\nexports.ActorRdfUpdateQuadsHypermedia = ActorRdfUpdateQuadsHypermedia;\n//# sourceMappingURL=ActorRdfUpdateQuadsHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuadsHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsRdfJsStore = void 0;\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst RdfJsQuadDestination_1 = require(\"./RdfJsQuadDestination\");\n/**\n * A comunica RDFJS Store RDF Update Quads Actor.\n */\nclass ActorRdfUpdateQuadsRdfJsStore extends bus_rdf_update_quads_1.ActorRdfUpdateQuadsDestination {\n constructor(args) {\n super(args);\n }\n async test(action) {\n const destination = (0, bus_rdf_update_quads_1.getContextDestination)(action.context);\n if (!destination || typeof destination === 'string' ||\n (!('remove' in destination) && 'value' in destination && !destination.value.remove)) {\n throw new Error(`${this.name} received an invalid rdfjsStore.`);\n }\n return true;\n }\n async getDestination(context) {\n const destination = (0, bus_rdf_update_quads_1.getContextDestination)(context);\n return new RdfJsQuadDestination_1.RdfJsQuadDestination('remove' in destination ? destination : destination.value);\n }\n}\nexports.ActorRdfUpdateQuadsRdfJsStore = ActorRdfUpdateQuadsRdfJsStore;\n//# sourceMappingURL=ActorRdfUpdateQuadsRdfJsStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfJsQuadDestination = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A quad destination that wraps around an {@link RDF.Store}.\n */\nclass RdfJsQuadDestination {\n constructor(store) {\n this.store = store;\n }\n promisifyEventEmitter(eventEmitter) {\n return new Promise((resolve, reject) => {\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n delete(quads) {\n return this.promisifyEventEmitter(this.store.remove(quads));\n }\n insert(quads) {\n return this.promisifyEventEmitter(this.store.import(quads));\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n switch (graphs) {\n case 'ALL':\n /* eslint-disable no-fallthrough */\n // Remove the default graph\n await this.promisifyEventEmitter(this.store.deleteGraph(DF.defaultGraph()));\n // Drop through to remove all named graphs\n case 'NAMED':\n /* eslint-enable no-fallthrough */\n // Warning: this is sub-optimal!\n // Query ALL quads to determine all named graphs\n // eslint-disable-next-line no-case-declarations\n const allQuads = this.store.match();\n // eslint-disable-next-line no-case-declarations\n const namedGraphs = {};\n allQuads.on('data', (quad) => {\n if (quad.graph.termType !== 'DefaultGraph') {\n namedGraphs[(0, rdf_string_1.termToString)(quad.graph)] = true;\n }\n });\n await this.promisifyEventEmitter(allQuads);\n // Delete all named graphs\n await Promise.all(Object.keys(namedGraphs)\n .map(namedGraph => this.promisifyEventEmitter(this.store\n .deleteGraph((0, rdf_string_1.stringToTerm)(namedGraph)))));\n break;\n default:\n // Delete the default graph or a named graph\n for (const graph of Array.isArray(graphs) ? graphs : [graphs]) {\n await this.promisifyEventEmitter(this.store.deleteGraph(graph));\n }\n }\n }\n async createGraphs(graphs, requireNonExistence) {\n // We don't have to create anything, since RDF/JS stores don't record empty graphs.\n // The only check we have to do is error on existence\n if (requireNonExistence) {\n for (const graph of graphs) {\n const eventEmitter = this.store.match(undefined, undefined, undefined, graph);\n await new Promise((resolve, reject) => {\n eventEmitter.once('data', () => {\n reject(new Error(`Unable to create graph ${graph.value} as it already exists`));\n });\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n }\n }\n}\nexports.RdfJsQuadDestination = RdfJsQuadDestination;\n//# sourceMappingURL=RdfJsQuadDestination.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuadsRdfJsStore\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bindings = void 0;\nconst immutable_1 = require(\"immutable\");\nconst bindingsToString_1 = require(\"./bindingsToString\");\n/**\n * An immutable.js-based Bindings object.\n */\nclass Bindings {\n constructor(dataFactory, entries) {\n this.type = 'bindings';\n this.dataFactory = dataFactory;\n this.entries = entries;\n }\n has(key) {\n return this.entries.has(typeof key === 'string' ? key : key.value);\n }\n get(key) {\n return this.entries.get(typeof key === 'string' ? key : key.value);\n }\n set(key, value) {\n return new Bindings(this.dataFactory, this.entries.set(typeof key === 'string' ? key : key.value, value));\n }\n delete(key) {\n return new Bindings(this.dataFactory, this.entries.delete(typeof key === 'string' ? key : key.value));\n }\n keys() {\n return this.mapIterable(this.iteratorToIterable(this.entries.keys()), key => this.dataFactory.variable(key));\n }\n values() {\n return this.iteratorToIterable(this.entries.values());\n }\n forEach(fn) {\n this.entries.forEach((value, key) => fn(value, this.dataFactory.variable(key)));\n }\n get size() {\n return this.entries.size;\n }\n [Symbol.iterator]() {\n return this.mapIterable(this.iteratorToIterable(this.entries.entries()), ([key, value]) => [this.dataFactory.variable(key), value])[Symbol.iterator]();\n }\n equals(other) {\n if (!other) {\n return false;\n }\n if (this === other) {\n return true;\n }\n // First check if size is equal\n if (this.size !== other.size) {\n return false;\n }\n // Then check if keys and values are equal\n for (const key of this.keys()) {\n if (!this.get(key)?.equals(other.get(key))) {\n return false;\n }\n }\n return true;\n }\n filter(fn) {\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(this.entries\n .filter((value, key) => fn(value, this.dataFactory.variable(key)))));\n }\n map(fn) {\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(this.entries\n .map((value, key) => fn(value, this.dataFactory.variable(key)))));\n }\n merge(other) {\n // Determine the union of keys\n const keys = new Set([\n ...this.iteratorToIterable(this.entries.keys()),\n ...[...other.keys()].map(key => key.value),\n ]);\n // Collect entries\n const entries = [];\n for (const key of keys) {\n const left = this.entries.get(key);\n const right = other.get(this.dataFactory.variable(key));\n if (left && right && !left.equals(right)) {\n return;\n }\n const value = left || right;\n entries.push([key, value]);\n }\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(entries));\n }\n mergeWith(merger, other) {\n // Determine the union of keys\n const keys = new Set([\n ...this.iteratorToIterable(this.entries.keys()),\n ...[...other.keys()].map(key => key.value),\n ]);\n // Collect entries\n const entries = [];\n for (const key of keys) {\n const variable = this.dataFactory.variable(key);\n const left = this.entries.get(key);\n const right = other.get(variable);\n let value;\n if (left && right && !left.equals(right)) {\n value = merger(left, right, variable);\n }\n else {\n value = left || right;\n }\n entries.push([key, value]);\n }\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(entries));\n }\n toString() {\n return (0, bindingsToString_1.bindingsToString)(this);\n }\n *mapIterable(iterable, callback) {\n for (const x of iterable) {\n // eslint-disable-next-line callback-return\n yield callback(x);\n }\n }\n iteratorToIterable(iterator) {\n return {\n [Symbol.iterator]: () => iterator,\n };\n }\n}\nexports.Bindings = Bindings;\n//# sourceMappingURL=Bindings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingsFactory = void 0;\nconst immutable_1 = require(\"immutable\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst Bindings_1 = require(\"./Bindings\");\n/**\n * A Bindings factory that provides Bindings backed by immutable.js.\n */\nclass BindingsFactory {\n constructor(dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.dataFactory = dataFactory;\n }\n bindings(entries = []) {\n return new Bindings_1.Bindings(this.dataFactory, (0, immutable_1.Map)(entries.map(([key, value]) => [key.value, value])));\n }\n fromBindings(bindings) {\n return this.bindings([...bindings]);\n }\n fromRecord(record) {\n return this.bindings(Object.entries(record).map(([key, value]) => [this.dataFactory.variable(key), value]));\n }\n}\nexports.BindingsFactory = BindingsFactory;\n//# sourceMappingURL=BindingsFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindingsToString = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * Stringify a bindings object.\n * @param bindings A bindings object.\n */\nfunction bindingsToString(bindings) {\n const raw = {};\n for (const key of bindings.keys()) {\n raw[key.value] = (0, rdf_string_1.termToString)(bindings.get(key));\n }\n return JSON.stringify(raw, null, ' ');\n}\nexports.bindingsToString = bindingsToString;\n//# sourceMappingURL=bindingsToString.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Bindings\"), exports);\n__exportStar(require(\"./BindingsFactory\"), exports);\n__exportStar(require(\"./bindingsToString\"), exports);\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorContextPreprocess = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for context-preprocess events.\n *\n * Actor types:\n * * Input: IAction: A context that will be processed.\n * * Test: \n * * Output: IActorContextPreprocessOutput: The resulting context.\n *\n * @see IActionContextPreprocess\n * @see IActorContextPreprocessOutput\n */\nclass ActorContextPreprocess extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorContextPreprocess = ActorContextPreprocess;\n//# sourceMappingURL=ActorContextPreprocess.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorContextPreprocess\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceRdf = void 0;\nconst bus_dereference_1 = require(\"@comunica/bus-dereference\");\n/**\n * A base actor for dereferencing URLs to quad streams.\n *\n * Actor types:\n * * Input: IActionDereferenceRdf: A URL.\n * * Test: \n * * Output: IActorDereferenceRdfOutput: A quad stream.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorDereferenceRdf extends bus_dereference_1.ActorDereferenceParse {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorDereferenceRdf = ActorDereferenceRdf;\n//# sourceMappingURL=ActorDereferenceRdf.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorDereferenceRdf\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereference = void 0;\nconst ActorDereferenceBase_1 = require(\"./ActorDereferenceBase\");\n/**\n * A base actor for dereferencing URLs to (generic) streams.\n *\n * Actor types:\n * * Input: IActionDereference: A URL.\n * * Test: \n * * Output: IActorDereferenceOutput: A Readable stream\n *\n * @see IActionDereference\n * @see IActorDereferenceOutput\n */\nclass ActorDereference extends ActorDereferenceBase_1.ActorDereferenceBase {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Handle the given error as a rejection or delegate it to the logger,\n * depending on whether or not hard errors are enabled.\n * @param {IActionDereference} action A dereference action.\n * @param {Error} error An error that has occurred.\n * @param headers Optional HTTP headers to pass.\n * @param {number} requestTime The time it took to request the page in milliseconds.\n * @return {Promise} A promise that rejects or resolves to an empty output.\n */\n async handleDereferenceErrors(action, error, headers, requestTime = 0) {\n return this.dereferenceErrorHandler(action, error, { url: action.url, exists: false, headers, requestTime });\n }\n}\nexports.ActorDereference = ActorDereference;\n//# sourceMappingURL=ActorDereference.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceBase = exports.isHardError = exports.emptyReadable = void 0;\nconst stream_1 = require(\"stream\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nfunction emptyReadable() {\n const data = new stream_1.Readable();\n data.push(null);\n return data;\n}\nexports.emptyReadable = emptyReadable;\n/**\n * Check if hard errors should occur on HTTP or parse errors.\n * @param {IActionDereference} action A dereference action.\n * @return {boolean} If hard errors are enabled.\n */\nfunction isHardError(context) {\n return !context.get(context_entries_1.KeysInitQuery.lenient);\n}\nexports.isHardError = isHardError;\n/**\n * A base actor for dereferencing URLs to (generic) streams.\n *\n * Actor types:\n * * Input: IActionDereference: A URL.\n * * Test: \n * * Output: IActorDereferenceOutput: A Readable stream\n *\n * @see IActionDereference\n * @see IActorDereferenceOutput\n */\nclass ActorDereferenceBase extends core_1.Actor {\n constructor(args) {\n super(args);\n }\n /**\n * Handle the given error as a rejection or delegate it to the logger,\n * depending on whether or not hard errors are enabled.\n * @param {I} action An action.\n * @param {Error} error An error that has occurred.\n * @param {N} output Data to add to the output\n */\n async dereferenceErrorHandler(action, error, output) {\n if (isHardError(action.context)) {\n throw error;\n }\n this.logError(action.context, error.message);\n return { ...output, data: emptyReadable() };\n }\n}\nexports.ActorDereferenceBase = ActorDereferenceBase;\n//# sourceMappingURL=ActorDereferenceBase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceParse = exports.getMediaTypeFromExtension = void 0;\nconst stream_1 = require(\"stream\");\nconst ActorDereferenceBase_1 = require(\"./ActorDereferenceBase\");\n/**\n * Get the media type based on the extension of the given path,\n * which can be an URL or file path.\n * @param {string} path A path.\n * @param {Record} mediaMappings A collection of mappings,\n * mapping file extensions to their corresponding media type.\n * @return {string} A media type or the empty string.\n */\nfunction getMediaTypeFromExtension(path, mediaMappings) {\n const dotIndex = path.lastIndexOf('.');\n // Get extension after last dot and map to media\n return (dotIndex >= 0 && mediaMappings?.[path.slice(dotIndex + 1)]) || '';\n}\nexports.getMediaTypeFromExtension = getMediaTypeFromExtension;\n/**\n * An abstract actor that handles dereference and parse actions.\n *\n * Actor types:\n * Input: IActionDereferenceParse: A URL.\n * Test: \n * Output: IActorDereferenceParseOutput: A data stream of type output by the Parser.\n *\n */\nclass ActorDereferenceParse extends ActorDereferenceBase_1.ActorDereferenceBase {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n /**\n * If hard errors are disabled, modify the given stream so that errors are delegated to the logger.\n * @param {IActionDereferenceParse} action A dereference action.\n * @param {Readable} data A data stream.\n * @return {Readable} The resulting data stream.\n */\n handleDereferenceStreamErrors(action, data) {\n // If we don't emit hard errors, make parsing error events log instead, and silence them downstream.\n if (!(0, ActorDereferenceBase_1.isHardError)(action.context)) {\n data.on('error', error => {\n this.logError(action.context, error.message, () => ({ url: action.url }));\n // Make sure the errored stream is ended.\n data.push(null);\n });\n data = data.pipe(new stream_1.PassThrough({ objectMode: true }));\n }\n return data;\n }\n async run(action) {\n const { context } = action;\n const dereference = await this.mediatorDereference.mediate({\n ...action,\n mediaTypes: async () => (await this.mediatorParseMediatypes?.mediate({ context, mediaTypes: true }))?.mediaTypes,\n });\n let result;\n try {\n result = (await this.mediatorParse.mediate({\n context,\n handle: { context, ...dereference, metadata: await this.getMetadata(dereference) },\n handleMediaType: dereference.mediaType ||\n getMediaTypeFromExtension(dereference.url, this.mediaMappings) ||\n action.mediaType,\n })).handle;\n result.data = this.handleDereferenceStreamErrors(action, result.data);\n }\n catch (error) {\n // Close the body, to avoid process to hang\n await dereference.data.close?.();\n result = await this.dereferenceErrorHandler(action, error, {});\n }\n // Return the parsed stream and any metadata\n return { ...dereference, ...result };\n }\n}\nexports.ActorDereferenceParse = ActorDereferenceParse;\n//# sourceMappingURL=ActorDereferenceParse.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorDereference\"), exports);\n__exportStar(require(\"./ActorDereferenceParse\"), exports);\n__exportStar(require(\"./ActorDereferenceBase\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHashBindings = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for hash-bindings events.\n *\n * Actor types:\n * * Input: IActionHashBindings: Metadata for selecting a hash function.\n * * Test: IActorTest:\n * * Output: IActorHashBindingsOutput: The resulting hash function.\n *\n * @see IActionHashBindings\n * @see IActorHashBindingsTest\n * @see IActorHashBindingsOutput\n */\nclass ActorHashBindings extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorHashBindings = ActorHashBindings;\n//# sourceMappingURL=ActorHashBindings.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHashBindings\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttpInvalidate = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for http-invalidate events.\n *\n * Actor types:\n * * Input: IActionHttpInvalidate: An action for invalidating the cached contents of given URL.\n * * Test: \n * * Output: IActorHttpInvalidateOutput: An empty response.\n *\n * @see IActionHttpInvalidate\n * @see IActorHttpInvalidateOutput\n */\nclass ActorHttpInvalidate extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorHttpInvalidate = ActorHttpInvalidate;\n//# sourceMappingURL=ActorHttpInvalidate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttpInvalidateListenable = void 0;\nconst ActorHttpInvalidate_1 = require(\"./ActorHttpInvalidate\");\n/**\n * An ActorHttpInvalidate actor that allows listeners to be attached.\n *\n * @see ActorHttpInvalidate\n */\nclass ActorHttpInvalidateListenable extends ActorHttpInvalidate_1.ActorHttpInvalidate {\n constructor(args) {\n super(args);\n this.invalidateListeners = [];\n this.invalidateListeners = [];\n }\n addInvalidateListener(listener) {\n this.invalidateListeners.push(listener);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n for (const listener of this.invalidateListeners) {\n listener(action);\n }\n return {};\n }\n}\nexports.ActorHttpInvalidateListenable = ActorHttpInvalidateListenable;\n//# sourceMappingURL=ActorHttpInvalidateListenable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttpInvalidate\"), exports);\n__exportStar(require(\"./ActorHttpInvalidateListenable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttp = void 0;\nconst core_1 = require(\"@comunica/core\");\nconst readable_web_to_node_stream_1 = require(\"readable-web-to-node-stream\");\nconst isStream = require('is-stream');\nconst toWebReadableStream = require('web-streams-node').toWebReadableStream;\n/**\n * A base actor for listening to HTTP events.\n *\n * Actor types:\n * * Input: IActionHttp: The HTTP request.\n * * Test: IActorHttpTest: An estimate for the response time.\n * * Output: IActorHttpOutput: The HTTP response.\n *\n * @see IActionHttp\n * @see IActorHttpTest\n * @see IActorHttpOutput\n */\nclass ActorHttp extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Converts WhatWG streams to Node streams if required.\n * Returns the input in case the stream already is a Node stream.\n * @param {ReadableStream} body\n * @returns {NodeJS.ReadableStream}\n */\n static toNodeReadable(body) {\n return isStream(body) || body === null ?\n body :\n new readable_web_to_node_stream_1.ReadableWebToNodeStream(body);\n }\n /**\n * Converts Node streams to WhatWG streams.\n * @param {NodeJS.ReadableStream} body\n * @returns {ReadableStream}\n */\n static toWebReadableStream(body) {\n return toWebReadableStream(body);\n }\n /**\n * Convert the given headers object into a raw hash.\n * @param headers A headers object.\n */\n static headersToHash(headers) {\n const hash = {};\n headers.forEach((value, key) => {\n hash[key] = value;\n });\n return hash;\n }\n}\nexports.ActorHttp = ActorHttp;\n//# sourceMappingURL=ActorHttp.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttp\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorInit = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A base actor for listening to init events.\n *\n * Actor types:\n * * Input: IActionInit: Contains process information\n * such as the list of arguments,\n * environment variables and input stream.\n * * Test: \n * * Output: IActorOutputInit: Contains process output streams.\n *\n * @see IActionInit\n */\nclass ActorInit extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorInit = ActorInit;\n//# sourceMappingURL=ActorInit.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorInit\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorOptimizeQueryOperation = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for optimize-query-operation events.\n *\n * Actor types:\n * * Input: IActionOptimizeQueryOperation: An incoming SPARQL operation.\n * * Test: \n * * Output: IActorOptimizeQueryOperationOutput: A (possibly optimized) outgoing SPARQL operation.\n *\n * @see IActionOptimizeQueryOperation\n * @see IActorOptimizeQueryOperationOutput\n */\nclass ActorOptimizeQueryOperation extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorOptimizeQueryOperation = ActorOptimizeQueryOperation;\n//# sourceMappingURL=ActorOptimizeQueryOperation.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorOptimizeQueryOperation\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperation = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst data_factory_1 = require(\"@comunica/data-factory\");\nconst Bindings_1 = require(\"./Bindings\");\n/**\n * A counter that keeps track blank node generated through BNODE() SPARQL\n * expressions.\n *\n * @type {number}\n */\nlet bnodeCounter = 0;\n/**\n * A comunica actor for query-operation events.\n *\n * Actor types:\n * * Input: IActionQueryOperation: A SPARQL Algebra operation.\n * * Test: \n * * Output: IActorQueryOperationOutput: A bindings stream.\n *\n * @see IActionQueryOperation\n * @see IQueryOperationResult\n */\nclass ActorQueryOperation extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Safely cast a query operation output to a bindings output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBindings} A bindings query operation output.\n */\n static getSafeBindings(output) {\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n return output;\n }\n /**\n * Safely cast a query operation output to a quads output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultQuads} A quads query operation output.\n */\n static getSafeQuads(output) {\n ActorQueryOperation.validateQueryOutput(output, 'quads');\n return output;\n }\n /**\n * Safely cast a query operation output to a boolean output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBoolean} A boolean query operation output.\n */\n static getSafeBoolean(output) {\n ActorQueryOperation.validateQueryOutput(output, 'boolean');\n return output;\n }\n /**\n * Safely cast a query operation output to a void output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultVoid} A void query operation output.\n */\n static getSafeVoid(output) {\n ActorQueryOperation.validateQueryOutput(output, 'void');\n return output;\n }\n /**\n * Convert a metadata callback to a lazy callback where the response value is cached.\n * @param {() => Promise} metadata A metadata callback\n * @return {() => Promise<{[p: string]: any}>} The callback where the response will be cached.\n */\n static cachifyMetadata(metadata) {\n let lastReturn;\n // eslint-disable-next-line no-return-assign,@typescript-eslint/no-misused-promises\n return () => (lastReturn || (lastReturn = metadata()));\n }\n /**\n * Throw an error if the output type does not match the expected type.\n * @param {IQueryOperationResult} output A query operation output.\n * @param {string} expectedType The expected output type.\n */\n static validateQueryOutput(output, expectedType) {\n if (output.type !== expectedType) {\n throw new Error(`Invalid query output type: Expected '${expectedType}' but got '${output.type}'`);\n }\n }\n static getBaseExpressionContext(context) {\n const now = context.get(context_entries_1.KeysInitQuery.queryTimestamp);\n const baseIRI = context.get(context_entries_1.KeysInitQuery.baseIRI);\n // Handle two variants of providing extension functions\n if (context.has(context_entries_1.KeysInitQuery.extensionFunctionCreator) && context.has(context_entries_1.KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n let extensionFunctionCreator = context\n .get(context_entries_1.KeysInitQuery.extensionFunctionCreator);\n // Convert dictionary-based variant to callback\n const extensionFunctions = context\n .get(context_entries_1.KeysInitQuery.extensionFunctions);\n if (extensionFunctions) {\n extensionFunctionCreator = functionNamedNode => extensionFunctions[functionNamedNode.value];\n }\n return { now, baseIRI, extensionFunctionCreator };\n }\n /**\n * Create an options object that can be used to construct a sparqlee synchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n static getExpressionContext(context, mediatorQueryOperation) {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input) => new data_factory_1.BlankNodeBindingsScoped(input || `BNODE_${bnodeCounter++}`),\n };\n }\n /**\n * Create an options object that can be used to construct a sparqlee asynchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n static getAsyncExpressionContext(context, mediatorQueryOperation) {\n const expressionContext = {\n ...this.getBaseExpressionContext(context),\n bnode: (input) => Promise.resolve(new data_factory_1.BlankNodeBindingsScoped(input || `BNODE_${bnodeCounter++}`)),\n };\n if (mediatorQueryOperation) {\n expressionContext.exists = ActorQueryOperation.createExistenceResolver(context, mediatorQueryOperation);\n }\n return expressionContext;\n }\n /**\n * Create an existence resolver for usage within an expression context.\n * @param context An action context.\n * @param mediatorQueryOperation A query operation mediator.\n */\n static createExistenceResolver(context, mediatorQueryOperation) {\n return async (expr, bindings) => {\n const operation = (0, Bindings_1.materializeOperation)(expr.input, bindings);\n const outputRaw = await mediatorQueryOperation.mediate({ operation, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n return new Promise((resolve, reject) => {\n output.bindingsStream.on('end', () => {\n resolve(false);\n });\n output.bindingsStream.on('error', reject);\n output.bindingsStream.on('data', () => {\n output.bindingsStream.close();\n resolve(true);\n });\n })\n .then((exists) => expr.not ? !exists : exists);\n };\n }\n /**\n * Throw an error if the context contains the readOnly flag.\n * @param context An action context.\n */\n static throwOnReadOnly(context) {\n if (context.get(context_entries_1.KeysQueryOperation.readOnly)) {\n throw new Error(`Attempted a write operation in read-only mode`);\n }\n }\n}\nexports.ActorQueryOperation = ActorQueryOperation;\n//# sourceMappingURL=ActorQueryOperation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationTyped = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst ActorQueryOperation_1 = require(\"./ActorQueryOperation\");\n/**\n * A base implementation for query operation actors for a specific operation type.\n */\nclass ActorQueryOperationTyped extends ActorQueryOperation_1.ActorQueryOperation {\n constructor(args, operationName) {\n super({ ...args, operationName });\n if (!this.operationName) {\n throw new Error('A valid \"operationName\" argument must be provided.');\n }\n }\n async test(action) {\n if (!action.operation) {\n throw new Error('Missing field \\'operation\\' in a query operation action.');\n }\n if (action.operation.type !== this.operationName) {\n throw new Error(`Actor ${this.name} only supports ${this.operationName} operations, but got ${action.operation.type}`);\n }\n const operation = action.operation;\n return this.testOperation(operation, action.context);\n }\n async run(action) {\n // Log to physical plan\n const physicalQueryPlanLogger = action.context\n .get(context_entries_1.KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(action.operation.type, undefined, action.operation, action.context.get(context_entries_1.KeysInitQuery.physicalQueryPlanNode), this.name, {});\n action.context = action.context.set(context_entries_1.KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n const operation = action.operation;\n const subContext = action.context.set(context_entries_1.KeysQueryOperation.operation, operation);\n const output = await this.runOperation(operation, subContext);\n if ('metadata' in output) {\n output.metadata = ActorQueryOperation_1.ActorQueryOperation\n .cachifyMetadata(output.metadata);\n }\n return output;\n }\n}\nexports.ActorQueryOperationTyped = ActorQueryOperationTyped;\n//# sourceMappingURL=ActorQueryOperationTyped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationTypedMediated = void 0;\nconst ActorQueryOperationTyped_1 = require(\"./ActorQueryOperationTyped\");\n/**\n * A base implementation for query operation actors for a specific operation type that have a query operation mediator.\n */\nclass ActorQueryOperationTypedMediated extends ActorQueryOperationTyped_1.ActorQueryOperationTyped {\n constructor(args, operationName) {\n super(args, operationName);\n }\n}\nexports.ActorQueryOperationTypedMediated = ActorQueryOperationTypedMediated;\n//# sourceMappingURL=ActorQueryOperationTypedMediated.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.materializeOperation = exports.materializeTerm = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * Materialize a term with the given binding.\n *\n * If the given term is a variable,\n * and that variable exist in the given bindings object,\n * the value of that binding is returned.\n * In all other cases, the term itself is returned.\n *\n * @param {RDF.Term} term A term.\n * @param {Bindings} bindings A bindings object.\n * @return {RDF.Term} The materialized term.\n */\nfunction materializeTerm(term, bindings) {\n if (term.termType === 'Variable') {\n const value = bindings.get(term);\n if (value) {\n return value;\n }\n }\n return term;\n}\nexports.materializeTerm = materializeTerm;\n/**\n * Materialize the given operation (recursively) with the given bindings.\n * Essentially, all variables in the given operation will be replaced\n * by the terms bound to the variables in the given bindings.\n * @param {Operation} operation SPARQL algebra operation.\n * @param {Bindings} bindings A bindings object.\n * @param options Options for materializations.\n * @return Algebra.Operation A new operation materialized with the given bindings.\n */\nfunction materializeOperation(operation, bindings, options = {}) {\n options = {\n strictTargetVariables: 'strictTargetVariables' in options ? options.strictTargetVariables : false,\n bindFilter: 'bindFilter' in options ? options.bindFilter : true,\n };\n return sparqlalgebrajs_1.Util.mapOperation(operation, {\n path(op, factory) {\n // Materialize variables in a path expression.\n // The predicate expression will be recursed.\n return {\n recurse: false,\n result: factory.createPath(materializeTerm(op.subject, bindings), op.predicate, materializeTerm(op.object, bindings), materializeTerm(op.graph, bindings)),\n };\n },\n pattern(op, factory) {\n // Materialize variables in the quad pattern.\n return {\n recurse: false,\n result: factory.createPattern(materializeTerm(op.subject, bindings), materializeTerm(op.predicate, bindings), materializeTerm(op.object, bindings), materializeTerm(op.graph, bindings)),\n };\n },\n extend(op) {\n // Materialize an extend operation.\n // If strictTargetVariables is true, we throw if the extension target variable is attempted to be bound.\n // Otherwise, we remove the extend operation.\n if (bindings.has(op.variable)) {\n if (options.strictTargetVariables) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(op.variable)} in a BIND operator.`);\n }\n else {\n return {\n recurse: true,\n result: materializeOperation(op.input, bindings, options),\n };\n }\n }\n return {\n recurse: true,\n result: op,\n };\n },\n group(op, factory) {\n // Materialize a group operation.\n // If strictTargetVariables is true, we throw if the group target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a GROUP BY operator.`);\n }\n }\n return {\n recurse: true,\n result: op,\n };\n }\n const variables = op.variables.filter(variable => !bindings.has(variable));\n return {\n recurse: true,\n result: factory.createGroup(op.input, variables, op.aggregates),\n };\n },\n project(op, factory) {\n // Materialize a project operation.\n // If strictTargetVariables is true, we throw if the project target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a SELECT operator.`);\n }\n }\n return {\n recurse: true,\n result: op,\n };\n }\n const variables = op.variables.filter(variable => !bindings.has(variable));\n // Only include projected variables in the sub-bindings that will be passed down recursively.\n // If we don't do this, we may be binding variables that may have the same label, but are not considered equal.\n const subBindings = BF.bindings(op.variables.map(variable => {\n const binding = bindings.get(variable);\n if (binding) {\n return [variable, binding];\n }\n // eslint-disable-next-line no-useless-return\n return;\n }).filter(entry => Boolean(entry)));\n return {\n recurse: false,\n result: factory.createProject(materializeOperation(op.input, subBindings, options), variables),\n };\n },\n values(op, factory) {\n // Materialize a values operation.\n // If strictTargetVariables is true, we throw if the values target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables and their bindings.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a VALUES operator.`);\n }\n }\n }\n else {\n const variables = op.variables.filter(variable => !bindings.has(variable));\n const valueBindings = op.bindings.map(binding => {\n const newBinding = { ...binding };\n let valid = true;\n bindings.forEach((value, key) => {\n const keyString = (0, rdf_string_1.termToString)(key);\n if (keyString in newBinding) {\n if (!value.equals(newBinding[keyString])) {\n // If the value of the binding is not equal, remove this binding completely from the VALUES clause\n valid = false;\n }\n delete newBinding[keyString];\n }\n });\n return valid ? newBinding : undefined;\n }).filter(Boolean);\n return {\n recurse: true,\n result: factory.createValues(variables, valueBindings),\n };\n }\n return {\n recurse: false,\n result: op,\n };\n },\n expression(op, factory) {\n if (!options.bindFilter) {\n return {\n recurse: false,\n result: op,\n };\n }\n if (op.expressionType === 'term') {\n // Materialize a term expression\n return {\n recurse: false,\n result: factory.createTermExpression(materializeTerm(op.term, bindings)),\n };\n }\n if (op.expressionType === 'aggregate' &&\n 'variable' in op &&\n bindings.has(op.variable)) {\n // Materialize a bound aggregate operation.\n // If strictTargetVariables is true, we throw if the expression target variable is attempted to be bound.\n // Otherwise, we ignore this operation.\n if (options.strictTargetVariables) {\n throw new Error(`Tried to bind ${(0, rdf_string_1.termToString)(op.variable)} in a ${op.aggregator} aggregate.`);\n }\n else {\n return {\n recurse: true,\n result: op,\n };\n }\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n}\nexports.materializeOperation = materializeOperation;\n//# sourceMappingURL=Bindings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BusQueryOperation = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * Indexed bus for query operations.\n */\nclass BusQueryOperation extends core_1.BusIndexed {\n constructor(args) {\n super({\n ...args,\n actorIdentifierFields: ['operationName'],\n actionIdentifierFields: ['operation', 'type'],\n });\n }\n}\nexports.BusQueryOperation = BusQueryOperation;\n//# sourceMappingURL=BusQueryOperation.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperation\"), exports);\n__exportStar(require(\"./ActorQueryOperationTyped\"), exports);\n__exportStar(require(\"./ActorQueryOperationTypedMediated\"), exports);\n__exportStar(require(\"./Bindings\"), exports);\n__exportStar(require(\"./BusQueryOperation\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryParse = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for query-parse events.\n *\n * Actor types:\n * * Input: IActionSparqlParse: A SPARQL query string.\n * * Test: \n * * Output: IActorSparqlParseOutput: A parsed query in SPARQL query algebra.\n *\n * @see IActionQueryParse\n * @see IActorQueryParseOutput\n */\nclass ActorQueryParse extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorQueryParse = ActorQueryParse;\n//# sourceMappingURL=ActorQueryParse.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryParse\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerialize = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A comunica actor for query-result-serialize events.\n *\n * Actor types:\n * * Input: IActionSparqlSerialize: SPARQL bindings or a quad stream.\n * * Test: \n * * Output: IActorQueryResultSerializeOutput: A text stream.\n *\n * @see IActionSparqlSerialize\n * @see IActorQueryResultSerializeOutput\n */\nclass ActorQueryResultSerialize extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorQueryResultSerialize = ActorQueryResultSerialize;\n//# sourceMappingURL=ActorQueryResultSerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to SPARQL serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionSparqlSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorQueryResultSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nclass ActorQueryResultSerializeFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action, context) {\n return true;\n }\n}\nexports.ActorQueryResultSerializeFixedMediaTypes = ActorQueryResultSerializeFixedMediaTypes;\n//# sourceMappingURL=ActorQueryResultSerializeFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerialize\"), exports);\n__exportStar(require(\"./ActorQueryResultSerializeFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinEntriesSort = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-join-entries-sort events.\n *\n * Actor types:\n * * Input: IActionRdfJoinEntriesSort: Join entries.\n * * Test: IActorTest: Test result.\n * * Output: IActorRdfJoinEntriesSortOutput: The sorted join entries.\n *\n * @see IActionRdfJoinEntriesSort\n * @see IActorTest\n * @see IActorRdfJoinEntriesSortOutput\n */\nclass ActorRdfJoinEntriesSort extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfJoinEntriesSort = ActorRdfJoinEntriesSort;\n//# sourceMappingURL=ActorRdfJoinEntriesSort.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinEntriesSort\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinSelectivity = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-join-selectivity events.\n *\n * Actor types:\n * * Input: IActionRdfJoinSelectivity: Join entries.\n * * Test: IMediatorTypeAccuracy: The accuracy of the selectivity calculator.\n * * Output: IActorRdfJoinSelectivityOutput: The calculated join selectivity.\n *\n * @see IActionRdfJoinSelectivity\n * @see IActorRdfJoinSelectivityTest\n * @see IActorRdfJoinSelectivityOutput\n */\nclass ActorRdfJoinSelectivity extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfJoinSelectivity = ActorRdfJoinSelectivity;\n//# sourceMappingURL=ActorRdfJoinSelectivity.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinSelectivity\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoin = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A comunica actor for joining 2 binding streams.\n *\n * Actor types:\n * * Input: IActionRdfJoin: The streams that need to be joined.\n * * Test: IMediatorTypeJoinCoefficients: Join coefficients.\n * * Output: IActorRdfJoinOutput: The resulting joined stream.\n *\n * @see IActionRdfJoin\n * @see IActorQueryOperationOutput\n */\nclass ActorRdfJoin extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param options - Actor-specific join options.\n */\n constructor(args, options) {\n super(args);\n /**\n * If this actor will be logged in the debugger and physical query plan logger\n */\n this.includeInLogs = true;\n this.logicalType = options.logicalType;\n this.physicalName = options.physicalName;\n this.limitEntries = options.limitEntries ?? Number.POSITIVE_INFINITY;\n this.limitEntriesMin = options.limitEntriesMin ?? false;\n this.canHandleUndefs = options.canHandleUndefs ?? false;\n }\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string}\n */\n static hash(bindings, variables) {\n return variables\n .filter(variable => bindings.has(variable))\n .map(variable => (0, rdf_string_1.termToString)(bindings.get(variable)))\n .join('');\n }\n /**\n * Returns an array containing all the variable names that occur in all bindings streams.\n * @param {MetadataBindings[]} metadatas An array of optional metadata objects for the entries.\n * @returns {string[]}\n */\n static overlappingVariables(metadatas) {\n const variables = metadatas.map(metadata => metadata.variables);\n let baseArray = variables[0];\n for (const array of variables.slice(1)) {\n baseArray = baseArray.filter(el => array.some(value => value.value === el.value));\n }\n return baseArray;\n }\n /**\n * Returns the variables that will occur in the joined bindings.\n * @param {MetadataBindings[]} metadatas An array of metadata objects for the entries.\n * @returns {string[]}\n */\n static joinVariables(metadatas) {\n return [...new Set(metadatas.flatMap(metadata => metadata.variables.map(variable => variable.value)))]\n .map(variable => DF.variable(variable));\n }\n /**\n * Returns the result of joining bindings, or `null` if no join is possible.\n * @param {Bindings[]} bindings\n * @returns {Bindings}\n */\n static joinBindings(...bindings) {\n if (bindings.length === 0) {\n return null;\n }\n if (bindings.length === 1) {\n return bindings[0];\n }\n let acc = bindings[0];\n for (const binding of bindings.slice(1)) {\n const merged = acc.merge(binding);\n if (!merged) {\n return null;\n }\n acc = merged;\n }\n return acc;\n }\n /**\n * Get the estimated number of items from the given metadata.\n * @param {Record} metadata A metadata object.\n * @return {number} The estimated number of items, or `Infinity` if cardinality is falsy.\n */\n static getCardinality(metadata) {\n return metadata.cardinality;\n }\n /**\n * Obtain the metadata from all given join entries.\n * @param entries Join entries.\n */\n static async getMetadatas(entries) {\n return await Promise.all(entries.map(entry => entry.output.metadata()));\n }\n /**\n * Obtain the join entries witt metadata from all given join entries.\n * @param entries Join entries.\n */\n static async getEntriesWithMetadatas(entries) {\n const metadatas = await ActorRdfJoin.getMetadatas(entries);\n return entries.map((entry, i) => ({ ...entry, metadata: metadatas[i] }));\n }\n /**\n * Calculate the time to initiate a request for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n static getRequestInitialTimes(metadatas) {\n return metadatas.map(metadata => metadata.pageSize ? 0 : metadata.requestTime || 0);\n }\n /**\n * Calculate the time to receive a single item for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n static getRequestItemTimes(metadatas) {\n return metadatas\n .map(metadata => !metadata.pageSize ? 0 : (metadata.requestTime || 0) / metadata.pageSize);\n }\n /**\n * Helper function to create a new metadata object for the join result.\n * For required metadata entries that are not provided, sane defaults are calculated.\n * @param entries Join entries.\n * @param metadatas Metadata of the join entries.\n * @param context The action context.\n * @param partialMetadata Partial metadata entries.\n */\n async constructResultMetadata(entries, metadatas, context, partialMetadata = {}) {\n let cardinalityJoined;\n if (partialMetadata.cardinality) {\n cardinalityJoined = partialMetadata.cardinality;\n }\n else {\n cardinalityJoined = metadatas\n .reduce((acc, metadata) => {\n const cardinalityThis = ActorRdfJoin.getCardinality(metadata);\n return {\n type: cardinalityThis.type === 'estimate' ? 'estimate' : acc.type,\n value: acc.value * cardinalityThis.value,\n };\n }, { type: 'exact', value: 1 });\n cardinalityJoined.value *= (await this.mediatorJoinSelectivity.mediate({ entries, context })).selectivity;\n }\n return {\n ...partialMetadata,\n cardinality: {\n type: cardinalityJoined.type,\n value: cardinalityJoined.value,\n },\n canContainUndefs: partialMetadata.canContainUndefs ?? metadatas.some(metadata => metadata.canContainUndefs),\n variables: ActorRdfJoin.joinVariables(metadatas),\n };\n }\n /**\n * Default test function for join actors.\n * Checks whether all iterators have metadata.\n * If yes: call the abstract getIterations method, if not: return Infinity.\n * @param {IActionRdfJoin} action The input action containing the relevant iterators\n * @returns {Promise} The join coefficients.\n */\n async test(action) {\n // Validate logical join type\n if (action.type !== this.logicalType) {\n throw new Error(`${this.name} can only handle logical joins of type '${this.logicalType}', while '${action.type}' was given.`);\n }\n // Don't allow joining of one or zero streams\n if (action.entries.length <= 1) {\n throw new Error(`${this.name} requires at least two join entries.`);\n }\n // Check if this actor can handle the given number of streams\n if (this.limitEntriesMin ? action.entries.length < this.limitEntries : action.entries.length > this.limitEntries) {\n throw new Error(`${this.name} requires ${this.limitEntries} join entries at ${this.limitEntriesMin ? 'least' : 'most'}. The input contained ${action.entries.length}.`);\n }\n // Check if all streams are bindings streams\n for (const entry of action.entries) {\n if (entry.output.type !== 'bindings') {\n throw new Error(`Invalid type of a join entry: Expected 'bindings' but got '${entry.output.type}'`);\n }\n }\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n // Check if this actor can handle undefs\n if (!this.canHandleUndefs) {\n for (const metadata of metadatas) {\n if (metadata.canContainUndefs) {\n throw new Error(`Actor ${this.name} can not join streams containing undefs`);\n }\n }\n }\n return await this.getJoinCoefficients(action, metadatas);\n }\n /**\n * Returns default input for 0 or 1 entries. Calls the getOutput function otherwise\n * @param {IActionRdfJoin} action\n * @returns {Promise}\n */\n async run(action) {\n // Prepare logging to physical plan\n // This must be called before getOutput, because we need to override the plan node in the context\n let parentPhysicalQueryPlanNode;\n if (action.context.has(context_entries_1.KeysInitQuery.physicalQueryPlanLogger)) {\n parentPhysicalQueryPlanNode = action.context.get(context_entries_1.KeysInitQuery.physicalQueryPlanNode);\n action.context = action.context.set(context_entries_1.KeysInitQuery.physicalQueryPlanNode, action);\n }\n const { result, physicalPlanMetadata } = await this.getOutput(action);\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n // Log to physical plan\n const physicalQueryPlanLogger = action.context.get(context_entries_1.KeysInitQuery\n .physicalQueryPlanLogger);\n if (this.includeInLogs && physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(`join-${this.logicalType}`, this.physicalName, action, parentPhysicalQueryPlanNode, this.name, {\n ...physicalPlanMetadata,\n cardinalities: metadatas.map(ActorRdfJoin.getCardinality),\n joinCoefficients: await this.getJoinCoefficients(action, metadatas),\n });\n }\n // Cache metadata\n result.metadata = bus_query_operation_1.ActorQueryOperation.cachifyMetadata(result.metadata);\n return result;\n }\n}\nexports.ActorRdfJoin = ActorRdfJoin;\n//# sourceMappingURL=ActorRdfJoin.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoin\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtract = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-metadata-extract events.\n *\n * Actor types:\n * * Input: IActionRdfMetadataExtract: A metadata quad stream\n * * Test: \n * * Output: IActorRdfMetadataExtractOutput: A metadata hash.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorRdfMetadataExtract extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfMetadataExtract = ActorRdfMetadataExtract;\n//# sourceMappingURL=ActorRdfMetadataExtract.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtract\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadata = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-metadata events.\n *\n * Actor types:\n * * Input: IActionRdfMetadata: An RDF quad stream.\n * * Test: \n * * Output: IActorRdfMetadataOutput: An RDF quad data stream and RDF quad metadata stream.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorRdfMetadata extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfMetadata = ActorRdfMetadata;\n//# sourceMappingURL=ActorRdfMetadata.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadata\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseHtml = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-parse-html events.\n *\n * Actor types:\n * * Input: IActionRdfParseHtml: Callbacks for parsing results.\n * * Test: \n * * Output: IActorRdfParseHtmlOutput: An HTML event listeners.\n *\n * @see IActionRdfParseHtml\n * @see IActorRdfParseHtmlOutput\n */\nclass ActorRdfParseHtml extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfParseHtml = ActorRdfParseHtml;\n//# sourceMappingURL=ActorRdfParseHtml.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseHtml\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParse = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF parse events.\n *\n * Actor types:\n * * Input: IActionRdfParseOrMediaType: A parse input or a media type input.\n * * Test: \n * * Output: IActorOutputRdfParseOrMediaType: The parsed quads.\n *\n * @see IActionInit\n */\nclass ActorRdfParse extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfParse = ActorRdfParse;\n//# sourceMappingURL=ActorRdfParse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF parse events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRdfParseOrMediaType: A parse input or a media type input.\n * * Test: \n * * Output: IActorOutputRdfParseOrMediaType: The parsed quads.\n *\n * @see IActionInit\n */\nclass ActorRdfParseFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action) {\n return true;\n }\n}\nexports.ActorRdfParseFixedMediaTypes = ActorRdfParseFixedMediaTypes;\n//# sourceMappingURL=ActorRdfParseFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParse\"), exports);\n__exportStar(require(\"./ActorRdfParseFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksQueue = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia-links-queue events.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermediaLinksQueue: Creates a new {@link ILinkQueue} for the given seed URL.\n * * Test: \n * * Output: IActorRdfResolveHypermediaLinksQueueOutput: The created {@link ILinkQueue}.\n *\n * @see IActionRdfResolveHypermediaLinksQueue\n * @see IActorRdfResolveHypermediaLinksQueueOutput\n */\nclass ActorRdfResolveHypermediaLinksQueue extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveHypermediaLinksQueue = ActorRdfResolveHypermediaLinksQueue;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksQueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ILinkQueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkQueueWrapper = void 0;\n/**\n * A link queue that wraps a given link queue.\n */\nclass LinkQueueWrapper {\n constructor(linkQueue) {\n this.linkQueue = linkQueue;\n }\n push(link, parent) {\n return this.linkQueue.push(link, parent);\n }\n getSize() {\n return this.linkQueue.getSize();\n }\n isEmpty() {\n return this.linkQueue.isEmpty();\n }\n pop() {\n return this.linkQueue.pop();\n }\n peek() {\n return this.linkQueue.peek();\n }\n}\nexports.LinkQueueWrapper = LinkQueueWrapper;\n//# sourceMappingURL=LinkQueueWrapper.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksQueue\"), exports);\n__exportStar(require(\"./ILinkQueue\"), exports);\n__exportStar(require(\"./LinkQueueWrapper\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinks = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia-links events.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermediaLinks: The metadata from which the links should be extracted.\n * * Test: \n * * Output: IActorRdfResolveHypermediaLinksOutput: The URLs that were detected.\n *\n * @see IActionRdfResolveHypermediaLinks\n * @see IActorRdfResolveHypermediaLinksOutput\n */\nclass ActorRdfResolveHypermediaLinks extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveHypermediaLinks = ActorRdfResolveHypermediaLinks;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinks.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinks\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermedia = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia bus.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermedia: The metadata in the document and a query operation.\n * * Test: \n * * Output: IActorRdfResolveHypermediaOutput: An RDF source.\n *\n * @see IActionRdfResolveQuadPattern\n * @see IActorRdfResolveQuadPatternOutput\n */\nclass ActorRdfResolveHypermedia extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param sourceType The source type.\n */\n constructor(args, sourceType) {\n super(args);\n this.sourceType = sourceType;\n }\n async test(action) {\n if (action.forceSourceType && this.sourceType !== action.forceSourceType) {\n throw new Error(`Actor ${this.name} is not able to handle source type ${action.forceSourceType}.`);\n }\n return this.testMetadata(action);\n }\n}\nexports.ActorRdfResolveHypermedia = ActorRdfResolveHypermedia;\n//# sourceMappingURL=ActorRdfResolveHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPattern = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-quad-pattern events.\n *\n * Actor types:\n * * Input: IActionRdfResolveQuadPattern: A quad pattern and an optional context.\n * * Test: \n * * Output: IActorRdfResolveQuadPatternOutput: The resulting quad stream and optional metadata.\n *\n * @see IActionRdfResolveQuadPattern\n * @see IActorRdfResolveQuadPatternOutput\n */\nclass ActorRdfResolveQuadPattern extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveQuadPattern = ActorRdfResolveQuadPattern;\n//# sourceMappingURL=ActorRdfResolveQuadPattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternSource = void 0;\nconst ActorRdfResolveQuadPattern_1 = require(\"./ActorRdfResolveQuadPattern\");\n/**\n * A base implementation for rdf-resolve-quad-pattern events\n * that wraps around an {@link IQuadSource}.\n *\n * @see IQuadSource\n */\nclass ActorRdfResolveQuadPatternSource extends ActorRdfResolveQuadPattern_1.ActorRdfResolveQuadPattern {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const source = await this.getSource(action.context, action.pattern);\n return await this.getOutput(source, action.pattern, action.context);\n }\n /**\n * Get the output of the given action on a source.\n * @param {IQuadSource} source A quad source, possibly lazy.\n * @param {Algebra.Operation} operation The operation to apply.\n * @param ActionContext context Optional context data.\n * @return {Promise} A promise that resolves to a hash containing\n * a data RDFJS stream.\n */\n async getOutput(source, pattern, context) {\n // Create data stream\n const data = source.match(pattern.subject, pattern.predicate, pattern.object, pattern.graph);\n return { data };\n }\n}\nexports.ActorRdfResolveQuadPatternSource = ActorRdfResolveQuadPatternSource;\n//# sourceMappingURL=ActorRdfResolveQuadPatternSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPattern\"), exports);\n__exportStar(require(\"./ActorRdfResolveQuadPatternSource\"), exports);\n__exportStar(require(\"./utils\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasContextSingleSourceOfType = exports.hasContextSingleSource = exports.getContextSourceUrl = exports.getContextSourceFirst = exports.getContextSource = exports.getContextSources = exports.getDataSourceContext = exports.getDataSourceValue = exports.getDataSourceType = exports.isDataSourceRawType = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * Check if the given data source is a string or RDF store.\n * @param dataSource A data source.\n */\nfunction isDataSourceRawType(dataSource) {\n return typeof dataSource === 'string' || 'match' in dataSource;\n}\nexports.isDataSourceRawType = isDataSourceRawType;\n/**\n * Get the data source type.\n * @param dataSource A data source.\n */\nfunction getDataSourceType(dataSource) {\n if (typeof dataSource === 'string') {\n return '';\n }\n return 'match' in dataSource ? 'rdfjsSource' : dataSource.type;\n}\nexports.getDataSourceType = getDataSourceType;\n/**\n * Get the data source value.\n * @param dataSource A data source.\n */\nfunction getDataSourceValue(dataSource) {\n return isDataSourceRawType(dataSource) ? dataSource : dataSource.value;\n}\nexports.getDataSourceValue = getDataSourceValue;\n/**\n * Get the data source from the given context.\n * @param {ActionContext} context An optional context.\n * @param {IDataSource} dataSource The source or undefined.\n */\nfunction getDataSourceContext(dataSource, context) {\n if (typeof dataSource === 'string' || 'match' in dataSource || !dataSource.context) {\n return context;\n }\n return context.merge(dataSource.context);\n}\nexports.getDataSourceContext = getDataSourceContext;\n/**\n * Get the sources from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataSource[]} The array of sources or undefined.\n */\nfunction getContextSources(context) {\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n}\nexports.getContextSources = getContextSources;\n/**\n * Get the source from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataSource} The source or undefined.\n */\nfunction getContextSource(context) {\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.source);\n}\nexports.getContextSource = getContextSource;\n/**\n * Get the single source if the context contains just a single source.\n * This will check both the source and sources context entries.\n * @param {IActionContext} context A context, can be null.\n * @return {IDataSource} The single datasource or undefined.\n */\nfunction getContextSourceFirst(context) {\n if (context.has(context_entries_1.KeysRdfResolveQuadPattern.source)) {\n // If the single source is set\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.source);\n }\n // If multiple sources are set\n const datasources = context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n if (datasources?.length === 1) {\n return datasources[0];\n }\n}\nexports.getContextSourceFirst = getContextSourceFirst;\n/**\n * Get the source's raw URL value from the given context.\n * @param {IDataSource} source A source.\n * @return {string} The URL or null.\n */\nfunction getContextSourceUrl(source) {\n if (source) {\n let fileUrl = getDataSourceValue(source);\n if (typeof fileUrl === 'string') {\n // Remove hashes from source\n const hashPosition = fileUrl.indexOf('#');\n if (hashPosition >= 0) {\n fileUrl = fileUrl.slice(0, hashPosition);\n }\n return fileUrl;\n }\n }\n}\nexports.getContextSourceUrl = getContextSourceUrl;\n/**\n * Check if the given context has a single source.\n * @param {ActionContext} context An optional context.\n * @return {boolean} If the given context has a single source of the given type.\n */\nfunction hasContextSingleSource(context) {\n const source = getContextSource(context);\n return Boolean(source && (isDataSourceRawType(source) || source.value));\n}\nexports.hasContextSingleSource = hasContextSingleSource;\n/**\n * Check if the given context has a single source of the given type.\n * @param {string} requiredType The required source type name.\n * @param {ActionContext} context An optional context.\n * @return {boolean} If the given context has a single source of the given type.\n */\nfunction hasContextSingleSourceOfType(requiredType, context) {\n const source = getContextSource(context);\n return Boolean(source && getDataSourceType(source) === requiredType && getDataSourceValue(source));\n}\nexports.hasContextSingleSourceOfType = hasContextSingleSourceOfType;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerialize = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A comunica actor for RDF parse events.\n *\n * Actor types:\n * * Input: IActionRdfSerialize: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutput: The serialized quads.\n *\n * @see IActionRdfSerialize\n * @see IActorRdfSerializeOutput\n */\nclass ActorRdfSerialize extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfSerialize = ActorRdfSerialize;\n//# sourceMappingURL=ActorRdfSerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRdfSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nclass ActorRdfSerializeFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action) {\n return true;\n }\n}\nexports.ActorRdfSerializeFixedMediaTypes = ActorRdfSerializeFixedMediaTypes;\n//# sourceMappingURL=ActorRdfSerializeFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerialize\"), exports);\n__exportStar(require(\"./ActorRdfSerializeFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermedia = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-update-hypermedia events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateHypermedia: The metadata in the document.\n * * Test: \n * * Output: IActorRdfUpdateHypermediaOutput: An RDF destination.\n *\n * @see IActionRdfUpdateHypermedia\n * @see IActorRdfUpdateHypermediaOutput\n */\nclass ActorRdfUpdateHypermedia extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param destinationType - The destination type.\n */\n constructor(args, destinationType) {\n super(args);\n this.destinationType = destinationType;\n }\n async test(action) {\n if (action.forceDestinationType && this.destinationType !== action.forceDestinationType) {\n throw new Error(`Actor ${this.name} is not able to handle destination type ${action.forceDestinationType}.`);\n }\n return this.testMetadata(action);\n }\n}\nexports.ActorRdfUpdateHypermedia = ActorRdfUpdateHypermedia;\n//# sourceMappingURL=ActorRdfUpdateHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuads = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-update-quads events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateQuads: Quad insertion and deletion streams.\n * * Test: \n * * Output: IActorRdfUpdateQuadsOutput: A promise resolving when the update operation is done.\n *\n * @see IActionRdfUpdateQuads\n * @see IActorRdfUpdateQuadsOutput\n */\nclass ActorRdfUpdateQuads extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfUpdateQuads = ActorRdfUpdateQuads;\n//# sourceMappingURL=ActorRdfUpdateQuads.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsDestination = void 0;\nconst actor_rdf_resolve_quad_pattern_federated_1 = require(\"@comunica/actor-rdf-resolve-quad-pattern-federated\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst ActorRdfUpdateQuads_1 = require(\"./ActorRdfUpdateQuads\");\nfunction deskolemizeStream(stream, id) {\n return stream?.map(quad => actor_rdf_resolve_quad_pattern_federated_1.FederatedQuadSource.deskolemizeQuad(quad, id));\n}\nfunction deskolemize(action) {\n const destination = action.context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n const id = action.context.get(context_entries_1.KeysRdfResolveQuadPattern.sourceIds)?.get(destination);\n if (!id) {\n return action;\n }\n return {\n ...action,\n quadStreamInsert: deskolemizeStream(action.quadStreamInsert, id),\n quadStreamDelete: deskolemizeStream(action.quadStreamDelete, id),\n };\n}\n/**\n * A base implementation for rdf-update-quads events\n * that wraps around an {@link IQuadDestination}.\n *\n * @see IQuadDestination\n */\nclass ActorRdfUpdateQuadsDestination extends ActorRdfUpdateQuads_1.ActorRdfUpdateQuads {\n async test(action) {\n return true;\n }\n async run(action) {\n const destination = await this.getDestination(action.context);\n return await this.getOutput(destination, deskolemize(action), action.context);\n }\n /**\n * Get the output of the given action on a destination.\n * @param {IQuadDestination} destination A quad destination, possibly lazy.\n * @param {IActionRdfUpdateQuads} action The action.\n * @param {ActionContext} context Optional context data.\n */\n async getOutput(destination, action, context) {\n const execute = () => Promise.all([\n action.quadStreamInsert ? destination.insert(action.quadStreamInsert) : Promise.resolve(),\n action.quadStreamDelete ? destination.delete(action.quadStreamDelete) : Promise.resolve(),\n action.deleteGraphs ?\n destination.deleteGraphs(action.deleteGraphs.graphs, action.deleteGraphs.requireExistence, action.deleteGraphs.dropGraphs) :\n Promise.resolve(),\n action.createGraphs ?\n destination.createGraphs(action.createGraphs.graphs, action.createGraphs.requireNonExistence) :\n Promise.resolve(),\n ]).then(() => {\n // Return void\n });\n return { execute };\n }\n}\nexports.ActorRdfUpdateQuadsDestination = ActorRdfUpdateQuadsDestination;\n//# sourceMappingURL=ActorRdfUpdateQuadsDestination.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateHttpResponse = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst stringifyStream = require(\"stream-to-string\");\n/**\n * Check if the http response is valid, and throw an error if not.\n * @param url The original URL that was to be updated.\n * @param httpResponse The update response.\n */\nasync function validateHttpResponse(url, httpResponse) {\n // Check if update was successful\n if (httpResponse.status >= 400) {\n // Consume the body, to avoid process to hang\n let bodyString = 'empty response';\n if (httpResponse.body) {\n const responseStream = bus_http_1.ActorHttp.toNodeReadable(httpResponse.body);\n bodyString = await stringifyStream(responseStream);\n }\n throw new Error(`Could not update ${url} (HTTP status ${httpResponse.status}):\\n${bodyString}`);\n }\n // Close response body, as we don't need it\n await httpResponse.body?.cancel();\n}\nexports.validateHttpResponse = validateHttpResponse;\n//# sourceMappingURL=IQuadDestination.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuads\"), exports);\n__exportStar(require(\"./ActorRdfUpdateQuadsDestination\"), exports);\n__exportStar(require(\"./IQuadDestination\"), exports);\n__exportStar(require(\"./utils\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getContextDestinationUrl = exports.getContextDestinationFirst = exports.getContextDestination = exports.getDataDestinationContext = exports.getDataDestinationValue = exports.getDataDestinationType = exports.isDataDestinationRawType = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * Check if the given data destination is a string or RDF store.\n * @param dataDestination A data destination.\n */\nfunction isDataDestinationRawType(dataDestination) {\n return typeof dataDestination === 'string' || 'remove' in dataDestination;\n}\nexports.isDataDestinationRawType = isDataDestinationRawType;\n/**\n * Get the data destination type.\n * @param dataDestination A data destination.\n */\nfunction getDataDestinationType(dataDestination) {\n if (typeof dataDestination === 'string') {\n return '';\n }\n return 'remove' in dataDestination ? 'rdfjsStore' : dataDestination.type;\n}\nexports.getDataDestinationType = getDataDestinationType;\n/**\n * Get the data destination value.\n * @param dataDestination A data destination.\n */\nfunction getDataDestinationValue(dataDestination) {\n return isDataDestinationRawType(dataDestination) ? dataDestination : dataDestination.value;\n}\nexports.getDataDestinationValue = getDataDestinationValue;\n/**\n * Get the context of the given destination, merged with the given context.\n * @param dataDestination A data destination.\n * @param context A context to merge with.\n */\nfunction getDataDestinationContext(dataDestination, context) {\n if (typeof dataDestination === 'string' || 'remove' in dataDestination || !dataDestination.context) {\n return context;\n }\n return context.merge(dataDestination.context);\n}\nexports.getDataDestinationContext = getDataDestinationContext;\n/**\n * Get the source destination from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataDestination} The destination or undefined.\n */\nfunction getContextDestination(context) {\n return context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n}\nexports.getContextDestination = getContextDestination;\n/**\n * Get the single destination if the context contains just a single destination.\n * @param {ActionContext} context A context, can be null.\n * @return {IDataDestination} The single datadestination or undefined.\n */\nfunction getContextDestinationFirst(context) {\n if (context.has(context_entries_1.KeysRdfUpdateQuads.destination)) {\n // If the single destination is set\n return context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n }\n}\nexports.getContextDestinationFirst = getContextDestinationFirst;\n/**\n * Get the destination's raw URL value from the given context.\n * @param {IDataDestination} destination A destination.\n * @return {string} The URL or undefined.\n */\nfunction getContextDestinationUrl(destination) {\n if (destination) {\n let fileUrl = getDataDestinationValue(destination);\n if (typeof fileUrl === 'string') {\n // Remove hashes from source\n const hashPosition = fileUrl.indexOf('#');\n if (hashPosition >= 0) {\n fileUrl = fileUrl.slice(0, hashPosition);\n }\n return fileUrl;\n }\n }\n}\nexports.getContextDestinationUrl = getContextDestinationUrl;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeysRdfUpdateQuads = exports.KeysRdfResolveQuadPattern = exports.KeysRdfParseHtmlScript = exports.KeysRdfParseJsonLd = exports.KeysQueryOperation = exports.KeysInitQuery = exports.KeysHttpProxy = exports.KeysHttpMemento = exports.KeysHttp = exports.KeysCore = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * When adding entries to this file, also add a shortcut for them in the contextKeyShortcuts TSDoc comment in\n * ActorIniQueryBase in @comunica/actor-init-query if it makes sense to use this entry externally.\n * Also, add this shortcut to IQueryContextCommon in @comunica/types.\n */\nexports.KeysCore = {\n // We create the core context keys in @comunica/core to avoid a cyclic dependency\n /**\n * A logger instance.\n */\n log: core_1.CONTEXT_KEY_LOGGER,\n};\nexports.KeysHttp = {\n /**\n * Include credentials flags.\n */\n includeCredentials: new core_1.ActionContextKey('@comunica/bus-http:include-credentials'),\n /**\n * Authentication for a source as a \"username:password\"-pair.\n */\n auth: new core_1.ActionContextKey('@comunica/bus-http:auth'),\n /**\n * Fetch function implementation.\n */\n fetch: new core_1.ActionContextKey('@comunica/bus-http:fetch'),\n};\nexports.KeysHttpMemento = {\n /**\n * The desired datetime for Memento datetime-negotiation.\n */\n datetime: new core_1.ActionContextKey('@comunica/actor-http-memento:datetime'),\n};\nexports.KeysHttpProxy = {\n /**\n * Interface.\n */\n httpProxyHandler: new core_1.ActionContextKey('@comunica/actor-http-proxy:httpProxyHandler'),\n};\nexports.KeysInitQuery = {\n /**\n * Variables that have to be pre-bound to values in the query.\n */\n initialBindings: new core_1.ActionContextKey('@comunica/actor-init-query:initialBindings'),\n /**\n * The provided query's format.\n * Defaults to { language: 'sparql', version: '1.1' }\n */\n queryFormat: new core_1.ActionContextKey('@comunica/actor-init-query:queryFormat'),\n /**\n * Which GraphQL bindings should be singularized.\n */\n graphqlSingularizeVariables: new core_1.ActionContextKey('@comunica/actor-init-query:singularizeVariables'),\n /**\n * If HTTP and parsing failures are ignored.\n */\n lenient: new core_1.ActionContextKey('@comunica/actor-init-query:lenient'),\n /**\n * The original query string.\n */\n queryString: new core_1.ActionContextKey('@comunica/actor-init-query:queryString'),\n /**\n * The original parsed query.\n */\n query: new core_1.ActionContextKey('@comunica/actor-init-query:query'),\n /**\n * The query's base IRI.\n */\n baseIRI: new core_1.ActionContextKey('@comunica/actor-init-query:baseIRI'),\n /**\n * A timestamp representing the current time.\n * This is required for certain SPARQL operations such as NOW().\n */\n queryTimestamp: new core_1.ActionContextKey('@comunica/actor-init-query:queryTimestamp'),\n /**\n * @range {functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined}\n * Extension function creator for a given function IRI.\n * Returned value should be an async function implementation.\n * Undefined may be returned if no implementation exists for the given function IRI.\n *\n * The dictionary-based extensionFunctions context entry may be used instead, but not simultaneously.\n */\n extensionFunctionCreator: new core_1.ActionContextKey('@comunica/actor-init-query:extensionFunctionCreator'),\n /**\n * Dictionary of extension functions.\n * Key is the IRI of the function, and value is the async function implementation.\n *\n * The callback-based extensionFunctionCreator context entry may be used instead, but not simultaneously.\n */\n extensionFunctions: new core_1.ActionContextKey('@comunica/actor-init-query:extensionFunctions'),\n /**\n * Enables manipulation of the CLI arguments and their processing.\n */\n cliArgsHandlers: new core_1.ActionContextKey('@comunica/actor-init-query:cliArgsHandlers'),\n /**\n * Explain mode of the query. Can be 'parsed', 'logical', or 'physical'.\n */\n explain: new core_1.ActionContextKey('@comunica/actor-init-query:explain'),\n /**\n * Logs the used physical operators\n */\n physicalQueryPlanLogger: new core_1.ActionContextKey('@comunica/actor-init-query:physicalQueryPlanLogger'),\n /**\n * The current physical operator within the query plan.\n * This is used to pass parent-child relationships for invoking the query plan logger.\n */\n physicalQueryPlanNode: new core_1.ActionContextKey('@comunica/actor-init-query:physicalQueryPlanNode'),\n /**\n * A JSON-LD context\n */\n jsonLdContext: new core_1.ActionContextKey('@context'),\n};\nexports.KeysQueryOperation = {\n /**\n * Context entry for the current query operation.\n */\n operation: new core_1.ActionContextKey('@comunica/bus-query-operation:operation'),\n /**\n * @type {any} The metadata from the left streams within a join operation.\n */\n joinLeftMetadata: new core_1.ActionContextKey('@comunica/bus-query-operation:joinLeftMetadata'),\n /**\n * An array of metadata from the right streams within a join operation.\n */\n joinRightMetadatas: new core_1.ActionContextKey('@comunica/bus-query-operation:joinRightMetadatas'),\n /**\n * Indicates the bindings that were used to bind the operation.\n */\n joinBindings: new core_1.ActionContextKey('@comunica/bus-query-operation:joinBindings'),\n /**\n * Flag for indicating that only read operations are allowed, defaults to false.\n */\n readOnly: new core_1.ActionContextKey('@comunica/bus-query-operation:readOnly'),\n /**\n * An internal context entry to mark that a property path with arbitrary length and a distinct key is being processed.\n */\n isPathArbitraryLengthDistinctKey: new core_1.ActionContextKey('@comunica/bus-query-operation:isPathArbitraryLengthDistinct'),\n /**\n * An indicator that the stream will be limited to the given number of elements afterwards.\n */\n limitIndicator: new core_1.ActionContextKey('@comunica/bus-query-operation:limitIndicator'),\n};\nexports.KeysRdfParseJsonLd = {\n /**\n * @range {IDocumentLoader}\n */\n documentLoader: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:documentLoader'),\n /**\n * @range {boolean}\n */\n strictValues: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:strictValues'),\n /**\n * @range {Record}\n */\n parserOptions: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:parserOptions'),\n};\nexports.KeysRdfParseHtmlScript = {\n /**\n * An internal context flag to determine if the engine is already processing an HTML script tag.\n */\n processingHtmlScript: new core_1.ActionContextKey('@comunica/actor-rdf-parse-html-script:processingHtmlScript'),\n /**\n * If all HTML script tags must be considered.\n */\n extractAllScripts: new core_1.ActionContextKey('extractAllScripts'),\n};\nexports.KeysRdfResolveQuadPattern = {\n /**\n * Data sources.\n */\n sources: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:sources'),\n /**\n * A data source.\n */\n source: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:source'),\n /**\n * A map containing unique IDs for each source\n */\n sourceIds: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:sourceIds'),\n};\nexports.KeysRdfUpdateQuads = {\n /**\n * A data destination.\n */\n destination: new core_1.ActionContextKey('@comunica/bus-rdf-update-quads:destination'),\n};\n//# sourceMappingURL=Keys.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Keys\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionContextKey = exports.ActionContext = void 0;\nconst immutable_1 = require(\"immutable\");\n/**\n * Implementation of {@link IActionContext} using Immutable.js.\n */\nclass ActionContext {\n constructor(data = {}) {\n this.map = (0, immutable_1.Map)(data);\n }\n /**\n * Will only set the value if the key is not already set.\n */\n setDefault(key, value) {\n return this.has(key) ? this : this.set(key, value);\n }\n set(key, value) {\n return this.setRaw(key.name, value);\n }\n setRaw(key, value) {\n return new ActionContext(this.map.set(key, value));\n }\n delete(key) {\n return new ActionContext(this.map.delete(key.name));\n }\n get(key) {\n return this.getRaw(key.name);\n }\n getRaw(key) {\n return this.map.get(key);\n }\n has(key) {\n return this.hasRaw(key.name);\n }\n hasRaw(key) {\n return this.map.has(key);\n }\n merge(...contexts) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n let context = this;\n for (const source of contexts) {\n for (const key of source.keys()) {\n context = context.set(key, source.get(key));\n }\n }\n return context;\n }\n keys() {\n return [...this.map.keys()]\n .map(keyName => new ActionContextKey(keyName));\n }\n toJS() {\n return this.map.toJS();\n }\n toString() {\n return `ActionContext(${JSON.stringify(this.map.toJS())})`;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `ActionContext(${JSON.stringify(this.map.toJS(), null, ' ')})`;\n }\n /**\n * Convert the given object to an action context object if it is not an action context object yet.\n * If it already is an action context object, return the object as-is.\n * @param maybeActionContext An action context or record.\n * @return {ActionContext} An action context object.\n */\n static ensureActionContext(maybeActionContext) {\n return maybeActionContext instanceof ActionContext ?\n maybeActionContext :\n new ActionContext((0, immutable_1.Map)(maybeActionContext || {}));\n }\n}\nexports.ActionContext = ActionContext;\n/**\n * Simple implementation of {@link IActionContextKey}.\n */\nclass ActionContextKey {\n constructor(name) {\n this.name = name;\n }\n}\nexports.ActionContextKey = ActionContextKey;\n//# sourceMappingURL=ActionContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionObserver = void 0;\n/**\n * An ActionObserver can passively listen to {@link Actor#run} inputs and outputs for all actors on a certain bus.\n *\n * ActionObserver should not edit inputs and outputs,\n * they should be considered immutable.\n *\n * @see Actor\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template O The output type of an actor.\n */\nclass ActionObserver {\n /**\n * All enumerable properties from the `args` object are inherited to this observer.\n *\n * The observer will NOT automatically subscribe to the given bus when this constructor is called.\n *\n * @param {IActionObserverArgs} args Arguments object\n * @throws When required arguments are missing.\n */\n constructor(args) {\n Object.assign(this, args);\n }\n}\nexports.ActionObserver = ActionObserver;\n//# sourceMappingURL=ActionObserver.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Actor = void 0;\nconst ContextEntries_1 = require(\"./ContextEntries\");\n/**\n * An actor can act on messages of certain types and provide output of a certain type.\n *\n * The flow of an actor is as follows:\n * 1. Send a message to {@link Actor#test} to test if an actor can run that action.\n * 2. If the actor can reply to the message, let the actor run the action using {@link Actor#run}.\n *\n * An actor is typically subscribed to a bus,\n * using which the applicability to an action can be tested.\n *\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Actor {\n /**\n * All enumerable properties from the `args` object are inherited to this actor.\n *\n * The actor will subscribe to the given bus when this constructor is called.\n *\n * @param {IActorArgs} args Arguments object\n * @param {string} args.name The name for this actor.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this actor subscribes to.\n * @throws When required arguments are missing.\n */\n constructor(args) {\n this.beforeActors = [];\n Object.assign(this, args);\n this.bus.subscribe(this);\n if (this.beforeActors.length > 0) {\n this.bus.addDependencies(this, this.beforeActors);\n }\n }\n /**\n * Get the logger from the given context.\n * @param {ActionContext} context An optional context.\n * @return {Logger} The logger or undefined.\n */\n static getContextLogger(context) {\n return context.get(ContextEntries_1.CONTEXT_KEY_LOGGER);\n }\n /**\n * Run the given action on this actor\n * AND invokes the {@link Bus#onRun} method.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n runObservable(action) {\n const output = this.run(action);\n this.bus.onRun(this, action, output);\n return output;\n }\n /**\n * Initialize this actor.\n * This should be used for doing things that take a while,\n * such as opening files.\n *\n * @return {Promise} A promise that resolves when the actor has been initialized.\n */\n async initialize() {\n return true;\n }\n /**\n * Deinitialize this actor.\n * This should be used for cleaning up things when the application is shut down,\n * such as closing files and removing temporary files.\n *\n * @return {Promise} A promise that resolves when the actor has been deinitialized.\n */\n async deinitialize() {\n return true;\n }\n /* Proxy methods for the (optional) logger that is defined in the context */\n getDefaultLogData(context, data) {\n const dataActual = data ? data() : {};\n dataActual.actor = this.name;\n return dataActual;\n }\n logTrace(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.trace(message, this.getDefaultLogData(context, data));\n }\n }\n logDebug(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.debug(message, this.getDefaultLogData(context, data));\n }\n }\n logInfo(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.info(message, this.getDefaultLogData(context, data));\n }\n }\n logWarn(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.warn(message, this.getDefaultLogData(context, data));\n }\n }\n logError(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.error(message, this.getDefaultLogData(context, data));\n }\n }\n logFatal(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.fatal(message, this.getDefaultLogData(context, data));\n }\n }\n}\nexports.Actor = Actor;\n//# sourceMappingURL=Actor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bus = void 0;\n/**\n * A publish-subscribe bus for sending actions to actors\n * to test whether or not they can run an action.\n *\n * This bus does not run the action itself,\n * for that a {@link Mediator} can be used.\n *\n * @see Actor\n * @see Mediator\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Bus {\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n constructor(args) {\n this.actors = [];\n this.observers = [];\n // Mapping from dependency (after) to dependents (before)\n this.dependencyLinks = new Map();\n Object.assign(this, args);\n }\n /**\n * Subscribe the given actor to the bus.\n * After this, the given actor can be unsubscribed from the bus by calling {@link Bus#unsubscribe}.\n *\n * An actor that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {A} actor The actor to subscribe.\n */\n subscribe(actor) {\n this.actors.push(actor);\n this.reorderForDependencies();\n }\n /**\n * Subscribe the given observer to the bus.\n * After this, the given observer can be unsubscribed from the bus by calling {@link Bus#unsubscribeObserver}.\n *\n * An observer that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {ActionObserver} observer The observer to subscribe.\n */\n subscribeObserver(observer) {\n this.observers.push(observer);\n }\n /**\n * Unsubscribe the given actor from the bus.\n *\n * An actor that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {A} actor The actor to unsubscribe\n * @return {boolean} If the given actor was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n unsubscribe(actor) {\n const index = this.actors.indexOf(actor);\n if (index >= 0) {\n this.actors.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n * Unsubscribe the given observer from the bus.\n *\n * An observer that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {ActionObserver} observer The observer to unsubscribe.\n * @return {boolean} If the given observer was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n unsubscribeObserver(observer) {\n const index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n * Publish an action to all actors in the bus to test if they can run the action.\n *\n * @param {I} action An action to publish\n * @return {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]}\n * An array of reply objects. Each object contains a reference to the actor,\n * and a promise to its {@link Actor#test} result.\n */\n publish(action) {\n return this.actors.map((actor) => ({ actor, reply: actor.test(action) }));\n }\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n onRun(actor, action, output) {\n for (const observer of this.observers) {\n observer.onRun(actor, action, output);\n }\n }\n /**\n * Indicate that the given actor has the given actor dependencies.\n *\n * This will ensure that the given actor will be present in the bus *before* the given dependencies.\n *\n * @param {A} dependent A dependent actor that will be placed before the given actors.\n * @param {A[]} dependencies Actor dependencies that will be placed after the given actor.\n */\n addDependencies(dependent, dependencies) {\n for (const dependency of dependencies) {\n let existingDependencies = this.dependencyLinks.get(dependency);\n if (!existingDependencies) {\n existingDependencies = [];\n this.dependencyLinks.set(dependency, existingDependencies);\n }\n existingDependencies.push(dependent);\n }\n this.reorderForDependencies();\n }\n /**\n * Reorder the bus based on all present dependencies.\n */\n reorderForDependencies() {\n if (this.dependencyLinks.size > 0) {\n const actorsAfter = [];\n // Temporarily remove all actors that have dependencies\n for (const actorAfter of this.dependencyLinks.keys()) {\n const dependentPos = this.actors.indexOf(actorAfter);\n if (dependentPos >= 0) {\n this.actors.splice(dependentPos, 1);\n actorsAfter.push(actorAfter);\n }\n }\n // Iteratively append actors based on the first dependency link\n // that has all of its dependencies available in the array\n while (actorsAfter.length > 0) {\n // Find the first actor that has all of its dependencies available.\n let activeActorAfterId = -1;\n for (let i = 0; i < actorsAfter.length; i++) {\n let validLink = true;\n for (const dependency of this.dependencyLinks.get(actorsAfter[i])) {\n if (!this.actors.includes(dependency) && actorsAfter.includes(dependency)) {\n validLink = false;\n break;\n }\n }\n if (validLink) {\n activeActorAfterId = i;\n break;\n }\n }\n // If none of the pending links are possible, there must be a cyclic dependency\n if (activeActorAfterId < 0) {\n throw new Error(`Cyclic dependency links detected in bus ${this.name}`);\n }\n // The dependent may not be available (yet), so we don't add it to the array (yet).\n const activeActorAfter = actorsAfter.splice(activeActorAfterId, 1)[0];\n this.actors.push(activeActorAfter);\n }\n }\n }\n}\nexports.Bus = Bus;\n//# sourceMappingURL=Bus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BusIndexed = void 0;\nconst Bus_1 = require(\"./Bus\");\n/**\n * A bus that indexes identified actors,\n * so that actions with a corresponding identifier can be published more efficiently.\n *\n * Multiple actors with the same identifier can be subscribed.\n *\n * If actors or actions do not have a valid identifier,\n * then this will fallback to the normal bus behaviour.\n *\n * @see Bus\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass BusIndexed extends Bus_1.Bus {\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusIndexedArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n constructor(args) {\n super(args);\n this.actorsIndex = {};\n }\n subscribe(actor) {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n let actors = this.actorsIndex[actorId];\n if (!actors) {\n actors = this.actorsIndex[actorId] = [];\n }\n actors.push(actor);\n super.subscribe(actor);\n }\n unsubscribe(actor) {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n const actors = this.actorsIndex[actorId];\n if (actors) {\n const i = actors.indexOf(actor);\n if (i >= 0) {\n actors.splice(i, 1);\n }\n if (actors.length === 0) {\n delete this.actorsIndex[actorId];\n }\n }\n return super.unsubscribe(actor);\n }\n publish(action) {\n const actionId = this.getActionIdentifier(action);\n if (actionId) {\n const actors = [...this.actorsIndex[actionId] || [], ...this.actorsIndex._undefined_ || []];\n return actors.map((actor) => ({ actor, reply: actor.test(action) }));\n }\n return super.publish(action);\n }\n getActorIdentifier(actor) {\n return this.actorIdentifierFields.reduce((object, field) => object[field], actor);\n }\n getActionIdentifier(action) {\n return this.actionIdentifierFields.reduce((object, field) => object[field], action);\n }\n}\nexports.BusIndexed = BusIndexed;\n//# sourceMappingURL=BusIndexed.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONTEXT_KEY_LOGGER = void 0;\nconst ActionContext_1 = require(\"./ActionContext\");\nexports.CONTEXT_KEY_LOGGER = new ActionContext_1.ActionContextKey('@comunica/core:log');\n//# sourceMappingURL=ContextEntries.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logger = void 0;\n/**\n * A logger accepts messages from different levels\n * and emits them in a certain way.\n */\nclass Logger {\n /**\n * Convert a string-based logging level to a numerical logging level.\n * @param level A string-based logging level\n * @return The numerical logging level, or undefined.\n */\n static getLevelOrdinal(level) {\n return Logger.LEVELS[level];\n }\n}\nexports.Logger = Logger;\n/**\n * All available logging levels.\n * @type {{trace: number; debug: number; info: number; warn: number; error: number; fatal: number}}\n */\nLogger.LEVELS = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n};\n//# sourceMappingURL=Logger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mediator = void 0;\n/**\n * A mediator can mediate an action over a bus of actors.\n *\n * It does the following:\n * 1. Accepts an action in {@link Mediator#mediate}.\n * 2. Sends the action to the bus to test its applicability on all actors.\n * 3. It _mediates_ over these test results.\n * 4. It selects the _best_ actor.\n * 5. The action is run by the _best_ actor, and the result if returned.\n *\n * The _mediates_ and _best_ parts are filled in by subclasses of this abstract Mediator class.\n *\n * @template A The type of actor to mediator over.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Mediator {\n /**\n * All enumerable properties from the `args` object are inherited to this mediator.\n *\n * @param {IMediatorArgs, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>} args Arguments object\n * @param {string} args.name The name for this mediator.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this mediator will mediate over.\n * @throws When required arguments are missing.\n */\n constructor(args) {\n Object.assign(this, args);\n }\n /**\n * Publish the given action in the bus.\n *\n * This will send the test action on all actors in the bus.\n * All actor replies will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {IActorReply, I extends IAction, T extends IActorTest, O extends IActorOutput>[]}\n * The list of actor replies.\n */\n publish(action) {\n // Test all actors in the bus\n const actors = this.bus.publish(action);\n if (actors.length === 0) {\n throw new Error(`No actors are able to reply to a message in the bus ${this.bus.name}`);\n }\n return actors;\n }\n /**\n * Mediate for the given action to get an actor.\n *\n * This will send the test action on all actors in the bus.\n * The actor that tests _best_ will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the _best_ actor.\n */\n async mediateActor(action) {\n // Mediate to one actor and run that actor.\n return await this.mediateWith(action, this.publish(action));\n }\n /**\n * Mediate for the given action.\n *\n * This will send the test action on all actors in the bus.\n * The action will be run on the actor that tests _best_,\n * of which the result will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the mediation result.\n */\n async mediate(action) {\n // Mediate to one actor and run the action on it\n const actor = await this.mediateActor(action);\n return actor.runObservable(action);\n }\n}\nexports.Mediator = Mediator;\n//# sourceMappingURL=Mediator.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActionContext\"), exports);\n__exportStar(require(\"./Bus\"), exports);\n__exportStar(require(\"./BusIndexed\"), exports);\n__exportStar(require(\"./ContextEntries\"), exports);\n__exportStar(require(\"./ActionObserver\"), exports);\n__exportStar(require(\"./Actor\"), exports);\n__exportStar(require(\"./Logger\"), exports);\n__exportStar(require(\"./Mediator\"), exports);\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNodeBindingsScoped = void 0;\n/**\n * A blank node that is scoped to a set of bindings.\n */\nclass BlankNodeBindingsScoped {\n constructor(value) {\n this.termType = 'BlankNode';\n this.singleBindingsScope = true;\n this.value = value;\n }\n equals(other) {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNodeBindingsScoped = BlankNodeBindingsScoped;\n//# sourceMappingURL=BlankNodeBindingsScoped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNodeScoped = void 0;\n/**\n * A blank node that is scoped to a certain source.\n */\nclass BlankNodeScoped {\n constructor(value, skolemized) {\n this.termType = 'BlankNode';\n this.value = value;\n this.skolemized = skolemized;\n }\n equals(other) {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNodeScoped = BlankNodeScoped;\n//# sourceMappingURL=BlankNodeScoped.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./BlankNodeScoped\"), exports);\n__exportStar(require(\"./BlankNodeBindingsScoped\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoggerVoid = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A logger that voids everything.\n */\nclass LoggerVoid extends core_1.Logger {\n debug() {\n // Void\n }\n error() {\n // Void\n }\n fatal() {\n // Void\n }\n info() {\n // Void\n }\n trace() {\n // Void\n }\n warn() {\n // Void\n }\n}\nexports.LoggerVoid = LoggerVoid;\n//# sourceMappingURL=LoggerVoid.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LoggerVoid\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorAll = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that runs all actors that resolve their test.\n * This mediator will always resolve to the first actor's output.\n */\nclass MediatorAll extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediate(action) {\n // Collect all actors that resolve their test\n const validActors = [];\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n testResults = [];\n }\n for (const testResult of testResults) {\n try {\n await testResult.reply;\n validActors.push(testResult.actor);\n }\n catch {\n // Ignore errors\n }\n }\n // Send action to all valid actors\n const outputs = await Promise.all(validActors.map(actor => actor.runObservable(action)));\n return outputs[0];\n }\n async mediateWith() {\n throw new Error('Unsupported operation: MediatorAll#mediateWith');\n }\n}\nexports.MediatorAll = MediatorAll;\n//# sourceMappingURL=MediatorAll.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorAll\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorCombinePipeline = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that goes over all actors in sequence and forwards I/O.\n * This required the action input and the actor output to be of the same type.\n */\nclass MediatorCombinePipeline extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediate(action) {\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n // If no actors are available, just return the input as output\n return action;\n }\n if (this.filterErrors) {\n const _testResults = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n }\n catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n // Delegate test errors.\n testResults = await Promise.all(testResults.map(async ({ actor, reply }) => ({ actor, reply: await reply })));\n // Order the test results if ordering is enabled\n if (this.order) {\n // A function used to extract an ordering value from a test result\n const getOrder = (elem) => {\n // If there is a field key use it, otherwise use the input\n // element for ordering\n const value = this.field ? elem[this.field] : elem;\n // Check the ordering value is a number\n if (typeof value !== 'number') {\n throw new Error('Cannot order elements that are not numbers.');\n }\n return value;\n };\n testResults = testResults.sort((actor1, actor2) => (this.order === 'increasing' ? 1 : -1) *\n (getOrder(actor1.reply) - getOrder(actor2.reply)));\n }\n // Pass action to first actor,\n // and each actor output as input to the following actor.\n let handle = action;\n for (const { actor } of testResults) {\n handle = { ...handle, ...await actor.runObservable(handle) };\n }\n // Return the final actor output\n return handle;\n }\n mediateWith() {\n throw new Error('Method not supported.');\n }\n}\nexports.MediatorCombinePipeline = MediatorCombinePipeline;\n//# sourceMappingURL=MediatorCombinePipeline.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorCombinePipeline\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorCombineUnion = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that takes the union of all actor results.\n *\n * The actors that are registered first will have priority on setting overlapping fields.\n */\nclass MediatorCombineUnion extends core_1.Mediator {\n constructor(args) {\n super(args);\n this.combiner = this.createCombiner();\n }\n async mediate(action) {\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n testResults = [];\n }\n // Delegate test errors.\n await Promise.all(testResults.map(({ reply }) => reply));\n // Run action on all actors.\n const results = await Promise.all(testResults.map(result => result.actor.runObservable(action)));\n // Return the combined results.\n return this.combiner(results);\n }\n mediateWith() {\n throw new Error('Method not supported.');\n }\n createCombiner() {\n return (results) => {\n const data = {};\n data[this.field] = {};\n // eslint-disable-next-line unicorn/prefer-spread\n [{}].concat(results.map((result) => result[this.field]))\n .forEach((value, index, arr) => {\n data[this.field] = { ...value, ...data[this.field] };\n });\n return data;\n };\n }\n}\nexports.MediatorCombineUnion = MediatorCombineUnion;\n//# sourceMappingURL=MediatorCombineUnion.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorCombineUnion\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorJoinCoefficientsFixed = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that mediates over actors implementing the Join Coefficients mediator type and assigns fixed weights\n * to calculate an overall score and pick the actor with the lowest score.\n */\nclass MediatorJoinCoefficientsFixed extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediateWith(action, testResults) {\n // Obtain test results\n const errors = [];\n const promises = testResults\n .map(({ reply }) => reply)\n .map(promise => promise.catch(error => {\n errors.push(error);\n }));\n const coefficients = await Promise.all(promises);\n // Check if we had a limit indicator in the context\n const limitIndicator = action.context.get(context_entries_1.KeysQueryOperation.limitIndicator);\n // Calculate costs\n const costs = coefficients\n // eslint-disable-next-line array-callback-return\n .map(coeff => {\n if (coeff &&\n // If we have a limit indicator,\n // disallow entries that have a number of iterations that is higher than the limit AND persist items.\n // In these cases, join operators that produce results early on will be preferred.\n (!limitIndicator || coeff.iterations < limitIndicator || coeff.persistedItems === 0)) {\n return coeff.iterations * this.cpuWeight +\n coeff.persistedItems * this.memoryWeight +\n coeff.blockingItems * this.timeWeight +\n coeff.requestTime * this.ioWeight;\n }\n });\n // Determine index with lowest cost\n let minIndex = -1;\n let minValue = Number.POSITIVE_INFINITY;\n for (const [i, cost] of costs.entries()) {\n if (cost !== undefined && (minIndex === -1 || cost < minValue)) {\n minIndex = i;\n minValue = cost;\n }\n }\n // Reject if all actors rejected\n if (minIndex < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${errors.map(error => error.message).join('\\n')}`);\n }\n // Return actor with lowest cost\n const bestActor = testResults[minIndex].actor;\n // Emit calculations in logger\n if (bestActor.includeInLogs) {\n core_1.Actor.getContextLogger(action.context)?.debug(`Determined physical join operator '${bestActor.logicalType}-${bestActor.physicalName}'`, {\n entries: action.entries.length,\n variables: await Promise.all(action.entries\n .map(async (entry) => (await entry.output.metadata()).variables.map(variable => variable.value))),\n costs: Object.fromEntries(costs.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ])),\n coefficients: Object.fromEntries(coefficients.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ])),\n });\n }\n return bestActor;\n }\n}\nexports.MediatorJoinCoefficientsFixed = MediatorJoinCoefficientsFixed;\n//# sourceMappingURL=MediatorJoinCoefficientsFixed.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorJoinCoefficientsFixed\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorNumber = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that can mediate over a single number field.\n *\n * It takes the required 'field' and 'type' parameters.\n * The 'field' parameter represents the field name of the test result field over which must be mediated.\n * The 'type' parameter\n */\nclass MediatorNumber extends core_1.Mediator {\n constructor(args) {\n super(args);\n this.indexPicker = this.createIndexPicker();\n }\n /**\n * @return {(tests: T[]) => number} A function that returns the index of the test result\n * that has been chosen by this mediator.\n */\n createIndexPicker() {\n switch (this.type) {\n case 'min':\n return (tests) => tests.reduce((prev, curr, i) => {\n const val = this.getOrDefault(curr[this.field], Number.POSITIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] > val) ? [val, i] : prev;\n }, [Number.NaN, -1])[1];\n case 'max':\n return (tests) => tests.reduce((prev, curr, i) => {\n const val = this.getOrDefault(curr[this.field], Number.NEGATIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] < val) ? [val, i] : prev;\n }, [Number.NaN, -1])[1];\n default:\n throw new Error(`No valid \"type\" value was given, must be either 'min' or 'max', but got: ${this.type}`);\n }\n }\n getOrDefault(value, defaultValue) {\n return value === undefined ? defaultValue : value;\n }\n async mediateWith(action, testResults) {\n let promises = testResults.map(({ reply }) => reply);\n const errors = [];\n if (this.ignoreErrors) {\n const dummy = {};\n dummy[this.field] = null;\n promises = promises.map(promise => promise.catch(error => {\n errors.push(error);\n return dummy;\n }));\n }\n const results = await Promise.all(promises);\n const index = this.indexPicker(results);\n if (index < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${errors.map(error => error.message).join('\\n')}`);\n }\n return testResults[index].actor;\n }\n}\nexports.MediatorNumber = MediatorNumber;\n//# sourceMappingURL=MediatorNumber.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorNumber\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorRace = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that picks the first actor that resolves its test.\n */\nclass MediatorRace extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n mediateWith(action, testResults) {\n return new Promise((resolve, reject) => {\n const errors = [];\n for (const testResult of testResults) {\n testResult.reply.then(() => {\n resolve(testResult.actor);\n }).catch(error => {\n // Reject if all replies were rejected\n errors.push(error);\n if (errors.length === testResults.length) {\n reject(new Error(`${this.name} mediated over all rejecting actors:\\n${errors.map(subError => subError.message).join('\\n')}`));\n }\n });\n }\n });\n }\n}\nexports.MediatorRace = MediatorRace;\n//# sourceMappingURL=MediatorRace.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorRace\"), exports);\n//# sourceMappingURL=index.js.map","'use strict'\n\nvar Parser = require('jsonparse')\n , through = require('through')\n\nvar bufferFrom = Buffer.from && Buffer.from !== Uint8Array.from\n\n/*\n\n the value of this.stack that creationix's jsonparse has is weird.\n\n it makes this code ugly, but his problem is way harder that mine,\n so i'll forgive him.\n\n*/\n\nexports.parse = function (path, map) {\n var header, footer\n var parser = new Parser()\n var stream = through(function (chunk) {\n if('string' === typeof chunk)\n chunk = bufferFrom ? Buffer.from(chunk) : new Buffer(chunk)\n parser.write(chunk)\n },\n function (data) {\n if(data)\n stream.write(data)\n if (header)\n stream.emit('header', header)\n if (footer)\n stream.emit('footer', footer)\n stream.queue(null)\n })\n\n if('string' === typeof path)\n path = path.split('.').map(function (e) {\n if (e === '$*')\n return {emitKey: true}\n else if (e === '*')\n return true\n else if (e === '') // '..'.split('.') returns an empty string\n return {recurse: true}\n else\n return e\n })\n\n\n var count = 0, _key\n if(!path || !path.length)\n path = null\n\n parser.onValue = function (value) {\n if (!this.root)\n stream.root = value\n\n if(! path) return\n\n var i = 0 // iterates on path\n var j = 0 // iterates on stack\n var emitKey = false;\n var emitPath = false;\n while (i < path.length) {\n var key = path[i]\n var c\n j++\n\n if (key && !key.recurse) {\n c = (j === this.stack.length) ? this : this.stack[j]\n if (!c) return\n if (! check(key, c.key)) {\n setHeaderFooter(c.key, value)\n return\n }\n emitKey = !!key.emitKey;\n emitPath = !!key.emitPath;\n i++\n } else {\n i++\n var nextKey = path[i]\n if (! nextKey) return\n while (true) {\n c = (j === this.stack.length) ? this : this.stack[j]\n if (!c) return\n if (check(nextKey, c.key)) {\n i++;\n if (!Object.isFrozen(this.stack[j]))\n this.stack[j].value = null\n break\n } else {\n setHeaderFooter(c.key, value)\n }\n j++\n }\n }\n\n }\n\n // emit header\n if (header) {\n stream.emit('header', header);\n header = false;\n }\n if (j !== this.stack.length) return\n\n count ++\n var actualPath = this.stack.slice(1).map(function(element) { return element.key }).concat([this.key])\n var data = value\n if(null != data)\n if(null != (data = map ? map(data, actualPath) : data)) {\n if (emitKey || emitPath) {\n data = { value: data };\n if (emitKey)\n data[\"key\"] = this.key;\n if (emitPath)\n data[\"path\"] = actualPath;\n }\n\n stream.queue(data)\n }\n if (this.value) delete this.value[this.key]\n for(var k in this.stack)\n if (!Object.isFrozen(this.stack[k]))\n this.stack[k].value = null\n }\n parser._onToken = parser.onToken;\n\n parser.onToken = function (token, value) {\n parser._onToken(token, value);\n if (this.stack.length === 0) {\n if (stream.root) {\n if(!path)\n stream.queue(stream.root)\n count = 0;\n stream.root = null;\n }\n }\n }\n\n parser.onError = function (err) {\n if(err.message.indexOf(\"at position\") > -1)\n err.message = \"Invalid JSON (\" + err.message + \")\";\n stream.emit('error', err)\n }\n\n return stream\n\n function setHeaderFooter(key, value) {\n // header has not been emitted yet\n if (header !== false) {\n header = header || {}\n header[key] = value\n }\n\n // footer has not been emitted yet but header has\n if (footer !== false && header === false) {\n footer = footer || {}\n footer[key] = value\n }\n }\n}\n\nfunction check (x, y) {\n if ('string' === typeof x)\n return y == x\n else if (x && 'function' === typeof x.exec)\n return x.exec(y)\n else if ('boolean' === typeof x || 'object' === typeof x)\n return x\n else if ('function' === typeof x)\n return x(y)\n return false\n}\n\nexports.stringify = function (op, sep, cl, indent) {\n indent = indent || 0\n if (op === false){\n op = ''\n sep = '\\n'\n cl = ''\n } else if (op == null) {\n\n op = '[\\n'\n sep = '\\n,\\n'\n cl = '\\n]\\n'\n\n }\n\n //else, what ever you like\n\n var stream\n , first = true\n , anyData = false\n stream = through(function (data) {\n anyData = true\n try {\n var json = JSON.stringify(data, null, indent)\n } catch (err) {\n return stream.emit('error', err)\n }\n if(first) { first = false ; stream.queue(op + json)}\n else stream.queue(sep + json)\n },\n function (data) {\n if(!anyData)\n stream.queue(op)\n stream.queue(cl)\n stream.queue(null)\n })\n\n return stream\n}\n\nexports.stringifyObject = function (op, sep, cl, indent) {\n indent = indent || 0\n if (op === false){\n op = ''\n sep = '\\n'\n cl = ''\n } else if (op == null) {\n\n op = '{\\n'\n sep = '\\n,\\n'\n cl = '\\n}\\n'\n\n }\n\n //else, what ever you like\n\n var first = true\n var anyData = false\n var stream = through(function (data) {\n anyData = true\n var json = JSON.stringify(data[0]) + ':' + JSON.stringify(data[1], null, indent)\n if(first) { first = false ; this.queue(op + json)}\n else this.queue(sep + json)\n },\n function (data) {\n if(!anyData) this.queue(op)\n this.queue(cl)\n\n this.queue(null)\n })\n\n return stream\n}\n\n\n","/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n","\nconst DynamicNestedLoopJoin = require('./join/DynamicNestedLoopJoin');\nconst HashJoin = require('./join/HashJoin');\nconst NestedLoopJoin = require('./join/NestedLoopJoin');\nconst SymmetricHashJoin = require('./join/SymmetricHashJoin');\n\nconst MergeStream = require('./util/MergeIterator');\n\nmodule.exports = {\n DynamicNestedLoopJoin,\n HashJoin,\n NestedLoopJoin,\n SymmetricHashJoin,\n\n MergeStream\n};","\nlet AsyncIterator = require('asynciterator');\nlet MultiTransformIterator = AsyncIterator.MultiTransformIterator;\nlet SimpleTransformIterator = AsyncIterator.SimpleTransformIterator;\n\n// Nested Loop Join, but the values of the inner loop are determined by each value of the outer loop, possibly reducing the number of necessary checks\nclass DynamicNestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, funRight, funJoin, options)\n {\n super(left, options);\n\n this.funRight = funRight;\n this.funJoin = funJoin;\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.funRight(leftItem), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = DynamicNestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Hash_join\nclass HashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.addedDataListener = false;\n this.left = left;\n this.right = right;\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.leftMap = new Map();\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.readable = false;\n\n this.left.on('end', allowJoining.bind(this));\n\n function allowJoining ()\n {\n if (this.leftMap.size <= 0)\n return this.close();\n this.readable = true;\n this.right.on('readable', () => this.readable = true);\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n this.on('newListener', (eventName) =>\n {\n if (eventName === 'data' && !this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n })\n }\n\n hasResults ()\n {\n return !this.right.ended || this.matchIdx < this.matches.length;\n }\n\n close ()\n {\n super.close();\n this.left.close();\n this.right.close();\n }\n\n read ()\n {\n if (!this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n\n if (this.ended || !this.readable)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n this.match = this.right.read();\n\n if (this.match === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(this.match);\n this.matches = this.leftMap.get(hash) || [];\n this.matchIdx = 0;\n\n // array is filled again so recursive call can have results\n return this.read();\n }\n\n _addDataListener()\n {\n this.left.on('data', addItem.bind(this));\n\n function addItem(item)\n {\n let hash = this.funHash(item);\n if (!this.leftMap.has(hash))\n this.leftMap.set(hash, []);\n let arr = this.leftMap.get(hash);\n arr.push(item);\n }\n }\n}\n\nmodule.exports = HashJoin;\n","\nconst { MultiTransformIterator, SimpleTransformIterator, scheduleTask } = require('asynciterator');\n\n// https://en.wikipedia.org/wiki/Nested_loop_join\nclass NestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, right, funJoin, options)\n {\n super(left, options);\n\n this.right = right;\n this.funJoin = funJoin; // function that joins 2 elements or returns null if join is not possible\n this.on('end', () => this.right.close());\n }\n\n close ()\n {\n super.close();\n scheduleTask(() => this.right.close());\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.right.clone(), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = NestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Symmetric_Hash_Join\nclass SymmetricHashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.left = left;\n this.right = right;\n\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.usedLeft = false;\n this.leftMap = new Map();\n this.rightMap = new Map();\n\n this.on('end', () => this._cleanup() );\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n if (this.left.readable || this.right.readable)\n {\n this.readable = true;\n }\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.left.on('readable', () => this.readable = true);\n this.right.on('readable', () => this.readable = true);\n\n // this needs to be here since it's possible the left/right streams only get ended after there are no more results left\n this.left.on ('end', () => { if (!this.hasResults()) this._end(); });\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n hasResults()\n {\n // The \"!!this.match\" condition was added as a workaround to race\n // conditions and/or duplicate \"end\" events that may lead to premature\n // cleanups of the \"this.matches\" array.\n // See https://github.com/joachimvh/asyncjoin/issues/7\n return !this.left.ended || !this.right.ended || (!!this.matches && this.matchIdx < this.matches.length);\n }\n\n _cleanup ()\n {\n // motivate garbage collector to remove these\n this.leftMap = null;\n this.rightMap = null;\n this.matches = null;\n }\n\n close ()\n {\n super.close();\n this.left.close();\n this.right.close();\n }\n\n read ()\n {\n if (this.ended)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.usedLeft ? this.funJoin(this.match, item) : this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n let item = null;\n // try both streams if the first one has no value\n for (let i = 0; i < 2; ++i)\n {\n item = this.usedLeft ? this.right.read() : this.left.read();\n this.usedLeft = !this.usedLeft; // try other stream next time\n\n // found a result, no need to check the other stream this run\n if (item !== null)\n break;\n }\n\n if (item === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(item);\n let map = this.usedLeft ? this.leftMap : this.rightMap;\n if (!map.has(hash))\n map.set(hash, []);\n let arr = map.get(hash);\n arr.push(item);\n\n this.match = item;\n this.matches = (this.usedLeft ? this.rightMap : this.leftMap).get(hash) || [];\n this.matchIdx = 0;\n\n // array is filled again so recursive call can have results\n return this.read();\n }\n}\n\nmodule.exports = SymmetricHashJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// merges the contents of multiple streams\nclass MergeIterator extends AsyncIterator\n{\n constructor (streams)\n {\n super();\n \n if (!Array.isArray(streams))\n streams = Array.prototype.slice.call(arguments);\n \n this.streams = streams;\n \n for (let stream of streams)\n {\n stream.on('readable', () => this.emit('readable'));\n stream.on('end', () => this._removeStream(stream));\n }\n \n if (this.streams.length === 0)\n this.close();\n \n this.idx = this.streams.length-1;\n }\n \n _removeStream (stream)\n {\n let idx = this.streams.indexOf(stream);\n if (idx < 0)\n return;\n \n this.streams.splice(idx, 1);\n if (this.idx >= this.streams.length)\n --this.idx;\n \n if (this.streams.length === 0)\n this._end();\n }\n \n close ()\n {\n super.close();\n for (let stream of this.streams)\n stream.close();\n }\n \n read ()\n {\n for (let attempts = 0; attempts < this.streams.length; ++attempts)\n {\n this.idx = (this.idx + 1) % this.streams.length;\n let item = this.streams[this.idx].read();\n if (item !== null)\n return item;\n }\n \n return null;\n }\n}\n\nmodule.exports = MergeIterator;","const df_397_1 = new (require('@comunica/logger-void').LoggerVoid)();\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-init/^2.0.0/components/ActorInit.jsonld#ActorInit_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-context-preprocess/^2.0.0/components/ActorContextPreprocess.jsonld#ActorContextPreprocess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-bindings/^2.0.0/components/ActorHashBindings.jsonld#ActorHashBindings_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-query-operation/^2.0.0/components/ActorOptimizeQueryOperation.jsonld#ActorOptimizeQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus = new (require('@comunica/bus-query-operation').BusQueryOperation)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^2.0.0/components/ActorQueryOperation.jsonld#ActorQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-parse/^2.0.0/components/ActorQueryParse.jsonld#ActorQueryParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-result-serialize/^2.0.0/components/ActorQueryResultSerialize.jsonld#ActorQueryResultSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http-invalidate/^2.0.0/components/ActorHttpInvalidate.jsonld#ActorHttpInvalidate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-serialize/^2.0.0/components/ActorRdfSerialize.jsonld#ActorRdfSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^2.0.0/components/ActorHttp.jsonld#ActorHttp_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference/^2.0.0/components/ActorDereference.jsonld#ActorDereference_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse/^2.0.0/components/ActorRdfParse.jsonld#ActorRdfParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference-rdf/^2.0.0/components/ActorDereferenceRdf.jsonld#ActorDereferenceRdf_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-entries-sort/^2.0.0/components/ActorRdfJoinEntriesSort.jsonld#ActorRdfJoinEntriesSort_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-selectivity/^2.0.0/components/ActorRdfJoinSelectivity.jsonld#ActorRdfJoinSelectivity_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata/^2.0.0/components/ActorRdfMetadata.jsonld#ActorRdfMetadata_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-extract/^2.0.0/components/ActorRdfMetadataExtract.jsonld#ActorRdfMetadataExtract_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse-html/^2.0.0/components/ActorRdfParseHtml.jsonld#ActorRdfParseHtml_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia/^2.0.0/components/ActorRdfResolveHypermedia.jsonld#ActorRdfResolveHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links/^2.0.0/components/ActorRdfResolveHypermediaLinks.jsonld#ActorRdfResolveHypermediaLinks_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links-queue/^2.0.0/components/ActorRdfResolveHypermediaLinksQueue.jsonld#ActorRdfResolveHypermediaLinksQueue_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-hypermedia/^2.0.0/components/ActorRdfUpdateHypermedia.jsonld#ActorRdfUpdateHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads/^2.0.0/components/ActorRdfUpdateQuads.jsonld#ActorRdfUpdateQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^2.0.0/components/ActorRdfJoin.jsonld#ActorRdfJoin_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern_intercept__0_0_0_components_ActorRdfResolveQuadPatternIntercept_jsonld_ActorRdfResolveQuadPatternIntercept_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-quad-pattern-intercept/^0.0.0/components/ActorRdfResolveQuadPatternIntercept.jsonld#ActorRdfResolveQuadPatternIntercept_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-quad-pattern/^2.0.0/components/ActorRdfResolveQuadPattern.jsonld#ActorRdfResolveQuadPattern_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_rule__0_0_0_components_ActorOptimizeRule_jsonld_ActorOptimizeRule_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-rule/^0.0.0/components/ActorOptimizeRule.jsonld#ActorOptimizeRule_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_parse__0_0_0_components_ActorRuleParse_jsonld_ActorRuleParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rule-parse/^0.0.0/components/ActorRuleParse.jsonld#ActorRuleParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rule__0_0_0_components_ActorDereferenceRule_jsonld_ActorDereferenceRule_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference-rule/^0.0.0/components/ActorDereferenceRule.jsonld#ActorDereferenceRule_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_resolve__0_0_0_components_ActorRuleResolve_jsonld_ActorRuleResolve_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rule-resolve/^0.0.0/components/ActorRuleResolve.jsonld#ActorRuleResolve_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_reason__0_0_0_components_ActorRdfReason_jsonld_ActorRdfReason_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-reason/^0.0.0/components/ActorRdfReason.jsonld#ActorRdfReason_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads_intercept__0_0_0_components_ActorRdfUpdateQuadsIntercept_jsonld_ActorRdfUpdateQuadsIntercept_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads-intercept/^0.0.0/components/ActorRdfUpdateQuadsIntercept.jsonld#ActorRdfUpdateQuadsIntercept_default_bus'\n});\nconst urn_comunica_default_context_preprocess_actors_source_to_destination = new (require('@comunica/actor-context-preprocess-source-to-destination').ActorContextPreprocessSourceToDestination)({\n 'name': 'urn:comunica:default:context-preprocess/actors#source-to-destination',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:context-preprocess/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_hash_bindings_actors_sha1 = new (require('@comunica/actor-hash-bindings-sha1').ActorHashBindingsSha1)({\n 'name': 'urn:comunica:default:hash-bindings/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_bindings_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-bindings/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:optimize-query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_bgp = new (require('@comunica/actor-optimize-query-operation-join-bgp').ActorOptimizeQueryOperationJoinBgp)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_bgp_to_join = new (require('@comunica/actor-optimize-query-operation-bgp-to-join').ActorOptimizeQueryOperationBgpToJoin)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#bgp-to-join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_connected = new (require('@comunica/actor-optimize-query-operation-join-connected').ActorOptimizeQueryOperationJoinConnected)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-connected',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'httpRequests',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_values = new (require('@comunica/actor-query-operation-values').ActorQueryOperationValues)({\n 'name': 'urn:comunica:default:query-operation/actors#values',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_parse_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-parse/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_actors_sparql = new (require('@comunica/actor-query-parse-sparql').ActorQueryParseSparql)({\n 'prefixes': {\"dbpedia\":\"http://dbpedia.org/resource/\",\"dbpedia-owl\":\"http://dbpedia.org/ontology/\",\"dbpprop\":\"http://dbpedia.org/property/\",\"dc\":\"http://purl.org/dc/terms/\",\"dc11\":\"http://purl.org/dc/elements/1.1/\",\"dcterms\":\"http://purl.org/dc/terms/\",\"foaf\":\"http://xmlns.com/foaf/0.1/\",\"geo\":\"http://www.w3.org/2003/01/geo/wgs84_pos#\",\"owl\":\"http://www.w3.org/2002/07/owl#\",\"rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"rdfs\":\"http://www.w3.org/2000/01/rdf-schema#\",\"schema\":\"http://schema.org/\",\"skos\":\"http://www.w3.org/2008/05/skos#\",\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"},\n 'name': 'urn:comunica:default:query-parse/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_actors_graphql = new (require('@comunica/actor-query-parse-graphql').ActorQueryParseGraphql)({\n 'name': 'urn:comunica:default:query-parse/actors#graphql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-result-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_json = new (require('@comunica/actor-query-result-serialize-json').ActorQueryResultSerializeJson)({\n 'mediaTypePriorities': {\"application/json\":1},\n 'mediaTypeFormats': {\"application/json\":\"https://comunica.linkeddatafragments.org/#results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_simple = new (require('@comunica/actor-query-result-serialize-simple').ActorQueryResultSerializeSimple)({\n 'mediaTypePriorities': {\"simple\":0.9},\n 'mediaTypeFormats': {\"simple\":\"https://comunica.linkeddatafragments.org/#results_simple\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#simple',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_csv = new (require('@comunica/actor-query-result-serialize-sparql-csv').ActorQueryResultSerializeSparqlCsv)({\n 'mediaTypePriorities': {\"text/csv\":0.75},\n 'mediaTypeFormats': {\"text/csv\":\"http://www.w3.org/ns/formats/SPARQL_Results_CSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#csv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_json = new (require('@comunica/actor-query-result-serialize-sparql-json').ActorQueryResultSerializeSparqlJson)({\n 'mediaTypePriorities': {\"application/sparql-results+json\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+json\":\"http://www.w3.org/ns/formats/SPARQL_Results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_tsv = new (require('@comunica/actor-query-result-serialize-sparql-tsv').ActorQueryResultSerializeSparqlTsv)({\n 'mediaTypePriorities': {\"text/tab-separated-values\":0.75},\n 'mediaTypeFormats': {\"text/tab-separated-values\":\"http://www.w3.org/ns/formats/SPARQL_Results_TSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-tsv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_xml = new (require('@comunica/actor-query-result-serialize-sparql-xml').ActorQueryResultSerializeSparqlXml)({\n 'mediaTypePriorities': {\"application/sparql-results+xml\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+xml\":\"http://www.w3.org/ns/formats/SPARQL_Results_XML\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-xml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_table = new (require('@comunica/actor-query-result-serialize-table').ActorQueryResultSerializeTable)({\n 'columnWidth': 50,\n 'mediaTypePriorities': {\"table\":0.6},\n 'mediaTypeFormats': {\"table\":\"https://comunica.linkeddatafragments.org/#results_table\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#table',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_tree = new (require('@comunica/actor-query-result-serialize-tree').ActorQueryResultSerializeTree)({\n 'mediaTypePriorities': {\"tree\":0.5},\n 'mediaTypeFormats': {\"tree\":\"https://comunica.linkeddatafragments.org/#results_tree\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#tree',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_http_invalidate_mediators_main = new (require('@comunica/mediator-all').MediatorAll)({\n 'name': 'urn:comunica:default:http-invalidate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_update_quads_hypermedia__2_0_0_components_ActorRdfUpdateQuadsHypermedia_jsonld_IActorRdfUpdateQuadsHypermediaArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-update-quads-hypermedia/^2.0.0/components/ActorRdfUpdateQuadsHypermedia.jsonld#IActorRdfUpdateQuadsHypermediaArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_resolve_quad_pattern_hypermedia__2_0_0_components_ActorRdfResolveQuadPatternHypermedia_jsonld_IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-resolve-quad-pattern-hypermedia/^2.0.0/components/ActorRdfResolveQuadPatternHypermedia.jsonld#IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rule_resolve_hypermedia__0_0_0_components_ActorRuleResolveHypermedia_jsonld_IActorRuleResolveHypermediaArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rule-resolve-hypermedia/^0.0.0/components/ActorRuleResolveHypermedia.jsonld#IActorRuleResolveHypermediaArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_n3 = new (require('@comunica/actor-rdf-serialize-n3').ActorRdfSerializeN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'name': 'urn:comunica:default:rdf-serialize/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_jsonld = new (require('@comunica/actor-rdf-serialize-jsonld').ActorRdfSerializeJsonLd)({\n 'jsonStringifyIndentSpaces': 2,\n 'mediaTypePriorities': {\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-serialize/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__2_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer = new (require('@comunica/actor-query-result-serialize-stats').ActionObserverHttp)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^2.0.0/components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats_default_observer',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_http_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'time',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:http/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_http_actors_fetch = new (require('@comunica/actor-http-fetch').ActorHttpFetch)({\n 'agentOptions': {\"keepAlive\":true,\"maxSockets\":5},\n 'name': 'urn:comunica:default:http/actors#fetch',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_dereference_actors_fallback = new (require('@comunica/actor-dereference-fallback').ActorDereferenceFallback)({\n 'name': 'urn:comunica:default:dereference/actors#fallback',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_dereference_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_dereference_actors_constant_hylar_rdfs = new (require('@comunica/actor-dereference-constant-hylar-rdfs').ActorDereferenceConstantHylarRdfs)({\n 'name': 'urn:comunica:default:dereference/actors#constant-hylar-rdfs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_dereference_actors_constant_hylar_owl2rl = new (require('@comunica/actor-dereference-constant-hylar-owl2rl').ActorDereferenceConstantHylarOwl2rl)({\n 'name': 'urn:comunica:default:dereference/actors#constant-hylar-owl2rl',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_rdf_parse_mediators_parse = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-parse/mediators#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-parse/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_n3 = new (require('@comunica/actor-rdf-parse-n3').ActorRdfParseN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'priorityScale': 1,\n 'name': 'urn:comunica:default:rdf-parse/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_rdfxml = new (require('@comunica/actor-rdf-parse-rdfxml').ActorRdfParseRdfXml)({\n 'mediaTypePriorities': {\"application/rdf+xml\":1},\n 'mediaTypeFormats': {\"application/rdf+xml\":\"http://www.w3.org/ns/formats/RDF_XML\"},\n 'priorityScale': 0.5,\n 'name': 'urn:comunica:default:rdf-parse/actors#rdfxml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_xmlrdfa = new (require('@comunica/actor-rdf-parse-xml-rdfa').ActorRdfParseXmlRdfa)({\n 'mediaTypePriorities': {\"application/xml\":1,\"image/svg+xml\":1,\"text/xml\":1},\n 'mediaTypeFormats': {\"application/xml\":\"http://www.w3.org/ns/formats/RDFa\",\"image/svg+xml\":\"http://www.w3.org/ns/formats/RDFa\",\"text/xml\":\"http://www.w3.org/ns/formats/RDFa\"},\n 'priorityScale': 0.3,\n 'name': 'urn:comunica:default:rdf-parse/actors#xmlrdfa',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_dereference_rdf_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference-rdf/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_actors_cardinality = new (require('@comunica/actor-rdf-join-entries-sort-cardinality').ActorRdfJoinEntriesSortCardinality)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_actors_variable_counting = new (require('@comunica/actor-rdf-join-selectivity-variable-counting').ActorRdfJoinSelectivityVariableCounting)({\n 'name': 'urn:comunica:default:rdf-join-selectivity/actors#variable-counting',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'accuracy',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-join-selectivity/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_metadata_actors_primary_topic = new (require('@comunica/actor-rdf-metadata-primary-topic').ActorRdfMetadataPrimaryTopic)({\n 'metadataToData': false,\n 'dataToMetadataOnInvalidMetadataGraph': true,\n 'name': 'urn:comunica:default:rdf-metadata/actors#primary-topic',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_actors_all = new (require('@comunica/actor-rdf-metadata-all').ActorRdfMetadataAll)({\n 'name': 'urn:comunica:default:rdf-metadata/actors#all',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-metadata/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_controls = new (require('@comunica/actor-rdf-metadata-extract-hydra-controls').ActorRdfMetadataExtractHydraControls)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-controls',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_count = new (require('@comunica/actor-rdf-metadata-extract-hydra-count').ActorRdfMetadataExtractHydraCount)({\n 'predicates': [\n 'http://www.w3.org/ns/hydra/core#totalItems',\n 'http://rdfs.org/ns/void#triples'\n],\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-count',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_pagesize = new (require('@comunica/actor-rdf-metadata-extract-hydra-pagesize').ActorRdfMetadataExtractHydraPagesize)({\n 'predicates': [\n 'http://www.w3.org/ns/hydra/core#itemsPerPage'\n],\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-pagesize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_request_time = new (require('@comunica/actor-rdf-metadata-extract-request-time').ActorRdfMetadataExtractRequestTime)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#request-time',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_allow_http_methods = new (require('@comunica/actor-rdf-metadata-extract-allow-http-methods').ActorRdfMetadataExtractAllowHttpMethods)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#allow-http-methods',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_put_accepted = new (require('@comunica/actor-rdf-metadata-extract-put-accepted').ActorRdfMetadataExtractPutAccepted)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#put-accepted',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_patch_sparql_update = new (require('@comunica/actor-rdf-metadata-extract-patch-sparql-update').ActorRdfMetadataExtractPatchSparqlUpdate)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#patch-sparql-update',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_sparql_service = new (require('@comunica/actor-rdf-metadata-extract-sparql-service').ActorRdfMetadataExtractSparqlService)({\n 'inferHttpsEndpoint': true,\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#sparql-service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-extract/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_html = new (require('@comunica/actor-rdf-parse-html').ActorRdfParseHtml)({\n 'busRdfParseHtml': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus,\n 'mediaTypePriorities': {\"application/xhtml+xml\":0.9,\"text/html\":1},\n 'mediaTypeFormats': {\"application/xhtml+xml\":\"http://www.w3.org/ns/formats/HTML\",\"text/html\":\"http://www.w3.org/ns/formats/HTML\"},\n 'priorityScale': 0.2,\n 'name': 'urn:comunica:default:rdf-parse/actors#html',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_microdata = new (require('@comunica/actor-rdf-parse-html-microdata').ActorRdfParseHtmlMicrodata)({\n 'name': 'urn:comunica:default:rdf-parse-html/actors#microdata',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_rdfa = new (require('@comunica/actor-rdf-parse-html-rdfa').ActorRdfParseHtmlRdfa)({\n 'name': 'urn:comunica:default:rdf-parse-html/actors#rdfa',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_actors_none = new (require('@comunica/actor-rdf-resolve-hypermedia-none').ActorRdfResolveHypermediaNone)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/actors#none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'filterFactor',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_actors_next = new (require('@comunica/actor-rdf-resolve-hypermedia-links-next').ActorRdfResolveHypermediaLinksNext)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/actors#next',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_actors_fifo = new (require('@comunica/actor-rdf-resolve-hypermedia-links-queue-fifo').ActorRdfResolveHypermediaLinksQueueFifo)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/actors#fifo',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_rdfjs_store = new (require('@comunica/actor-rdf-update-quads-rdfjs-store').ActorRdfUpdateQuadsRdfJsStore)({\n 'name': 'urn:comunica:default:rdf-update-quads/actors#rdfjs-store',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_join_mediators_main = new (require('@comunica/mediator-join-coefficients-fixed').MediatorJoinCoefficientsFixed)({\n 'cpuWeight': 1,\n 'memoryWeight': 1,\n 'timeWeight': 10,\n 'ioWeight': 100,\n 'name': 'urn:comunica:default:rdf-join/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_intercept_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern-intercept/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern_intercept__0_0_0_components_ActorRdfResolveQuadPatternIntercept_jsonld_ActorRdfResolveQuadPatternIntercept_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_rdfjs_source = new (require('@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source').ActorRdfResolveQuadPatternRdfJsSource)({\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#rdfjs-source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_optimize_rule_actors_remove_false_conclusion = new (require('@comunica/actor-optimize-rule-remove-false-conclusion').ActorOptimizeRuleRemoveFalseConclusion)({\n 'name': 'urn:comunica:default:optimize-rule/actors#remove-false-conclusion',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_rule__0_0_0_components_ActorOptimizeRule_jsonld_ActorOptimizeRule_default_bus\n});\nconst urn_comunica_default_optimize_rule_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:optimize-rule/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_rule__0_0_0_components_ActorOptimizeRule_jsonld_ActorOptimizeRule_default_bus\n});\nconst urn_comunica_default_rule_parse_actors_hylar = new (require('@comunica/actor-rule-parse-hylar').ActorRuleParseHylar)({\n 'mediaTypePriorities': {\"application/hylar\":1,\"text/hylar\":0.9},\n 'mediaTypeFormats': {\"application/hylar\":\"http://www.w3.org/ns/formats/Hylar\",\"text/hylar\":\"http://www.w3.org/ns/formats/Hylar\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rule-parse/actors#hylar',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_parse__0_0_0_components_ActorRuleParse_jsonld_ActorRuleParse_default_bus\n});\nconst urn_comunica_default_rule_parse_mediators_parse = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rule-parse/mediators#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_parse__0_0_0_components_ActorRuleParse_jsonld_ActorRuleParse_default_bus\n});\nconst urn_comunica_default_rule_parse_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rule-parse/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_parse__0_0_0_components_ActorRuleParse_jsonld_ActorRuleParse_default_bus\n});\nconst urn_comunica_default_dereference_rule_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference-rule/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rule__0_0_0_components_ActorDereferenceRule_jsonld_ActorDereferenceRule_default_bus\n});\nconst urn_comunica_default_rule_resolve_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rule-resolve/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_resolve__0_0_0_components_ActorRuleResolve_jsonld_ActorRuleResolve_default_bus\n});\nconst urn_comunica_default_rdf_reason_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-reason/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_reason__0_0_0_components_ActorRdfReason_jsonld_ActorRdfReason_default_bus\n});\nconst urn_comunica_default_query_operation_actors_ask = new (require('@comunica/actor-query-operation-ask').ActorQueryOperationAsk)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#ask',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_bgp = new (require('@comunica/actor-query-operation-bgp-join').ActorQueryOperationBgpJoin)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_construct = new (require('@comunica/actor-query-operation-construct').ActorQueryOperationConstruct)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#construct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_describe = new (require('@comunica/actor-query-operation-describe-subject').ActorQueryOperationDescribeSubject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#describe',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_distinct = new (require('@comunica/actor-query-operation-distinct-hash').ActorQueryOperationDistinctHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_extend = new (require('@comunica/actor-query-operation-extend').ActorQueryOperationExtend)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#extend',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_filter = new (require('@comunica/actor-query-operation-filter-sparqlee').ActorQueryOperationFilterSparqlee)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#filter',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_from = new (require('@comunica/actor-query-operation-from-quad').ActorQueryOperationFromQuad)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#from',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_group = new (require('@comunica/actor-query-operation-group').ActorQueryOperationGroup)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#group',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_nop = new (require('@comunica/actor-query-operation-nop').ActorQueryOperationNop)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#nop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_orderby = new (require('@comunica/actor-query-operation-orderby-sparqlee').ActorQueryOperationOrderBySparqlee)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#orderby',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_project = new (require('@comunica/actor-query-operation-project').ActorQueryOperationProject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#project',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_reduced = new (require('@comunica/actor-query-operation-reduced-hash').ActorQueryOperationReducedHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'cacheSize': 100,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#reduced',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_service = new (require('@comunica/actor-query-operation-service').ActorQueryOperationService)({\n 'forceSparqlEndpoint': false,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_slice = new (require('@comunica/actor-query-operation-slice').ActorQueryOperationSlice)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#slice',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_union = new (require('@comunica/actor-query-operation-union').ActorQueryOperationUnion)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#union',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_alt = new (require('@comunica/actor-query-operation-path-alt').ActorQueryOperationPathAlt)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-alt',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_inv = new (require('@comunica/actor-query-operation-path-inv').ActorQueryOperationPathInv)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-inv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_link = new (require('@comunica/actor-query-operation-path-link').ActorQueryOperationPathLink)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-link',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_nps = new (require('@comunica/actor-query-operation-path-nps').ActorQueryOperationPathNps)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-nps',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_one_or_more = new (require('@comunica/actor-query-operation-path-one-or-more').ActorQueryOperationPathOneOrMore)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-one-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_more = new (require('@comunica/actor-query-operation-path-zero-or-more').ActorQueryOperationPathZeroOrMore)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_one = new (require('@comunica/actor-query-operation-path-zero-or-one').ActorQueryOperationPathZeroOrOne)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-one',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_add = new (require('@comunica/actor-query-operation-update-add-rewrite').ActorQueryOperationAddRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-add',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_composite = new (require('@comunica/actor-query-operation-update-compositeupdate').ActorQueryOperationUpdateCompositeUpdate)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-composite',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_copy = new (require('@comunica/actor-query-operation-update-copy-rewrite').ActorQueryOperationCopyRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-copy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_move = new (require('@comunica/actor-query-operation-update-move-rewrite').ActorQueryOperationMoveRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-move',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_init_actors_query = new (require('@comunica/actor-init-query').ActorInitQuery)({\n 'mediatorOptimizeQueryOperation': urn_comunica_default_optimize_query_operation_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorQueryParse': urn_comunica_default_query_parse_mediators_main,\n 'mediatorQueryResultSerialize': urn_comunica_default_query_result_serialize_mediators_serialize,\n 'mediatorQueryResultSerializeMediaTypeCombiner': urn_comunica_default_query_result_serialize_mediators_mediaType,\n 'mediatorQueryResultSerializeMediaTypeFormatCombiner': urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat,\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'mediatorHttpInvalidate': urn_comunica_default_http_invalidate_mediators_main,\n 'logger': df_397_1,\n 'defaultQueryInputFormat': 'sparql',\n 'contextKeyShortcuts': {\"baseIRI\":\"@comunica/actor-init-query:baseIRI\",\"datetime\":\"@comunica/actor-http-memento:datetime\",\"destination\":\"@comunica/bus-rdf-update-quads:destination\",\"explain\":\"@comunica/actor-init-query:explain\",\"extensionFunctionCreator\":\"@comunica/actor-init-query:extensionFunctionCreator\",\"extensionFunctions\":\"@comunica/actor-init-query:extensionFunctions\",\"fetch\":\"@comunica/bus-http:fetch\",\"httpAuth\":\"@comunica/bus-http:auth\",\"httpIncludeCredentials\":\"@comunica/bus-http:include-credentials\",\"httpProxyHandler\":\"@comunica/actor-http-proxy:httpProxyHandler\",\"initialBindings\":\"@comunica/actor-init-query:initialBindings\",\"lenient\":\"@comunica/actor-init-query:lenient\",\"log\":\"@comunica/core:log\",\"queryFormat\":\"@comunica/actor-init-query:queryFormat\",\"queryTimestamp\":\"@comunica/actor-init-query:queryTimestamp\",\"readOnly\":\"@comunica/bus-query-operation:readOnly\",\"source\":\"@comunica/bus-rdf-resolve-quad-pattern:source\",\"sources\":\"@comunica/bus-rdf-resolve-quad-pattern:sources\"},\n 'name': 'urn:comunica:default:init/actors#query',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_rdf = new (require('@comunica/actor-query-result-serialize-rdf').ActorQueryResultSerializeRdf)({\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'mediatorMediaTypeCombiner': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorMediaTypeFormatCombiner': urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat,\n 'name': 'urn:comunica:default:query-result-serialize/actors#rdf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_stats = new (require('@comunica/actor-query-result-serialize-stats').ActorQueryResultSerializeStats)({\n 'httpObserver': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__2_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer,\n 'mediaTypePriorities': {\"stats\":0.5},\n 'mediaTypeFormats': {\"stats\":\"https://comunica.linkeddatafragments.org/#results_stats\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#stats',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_jsonld = new (require('@comunica/actor-rdf-parse-jsonld').ActorRdfParseJsonLd)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediaTypePriorities': {\"application/json\":0.5,\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/json\":\"http://www.w3.org/ns/formats/JSON-LD\",\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-parse/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql = new (require('@comunica/actor-rdf-resolve-hypermedia-sparql').ActorRdfResolveHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffix': true,\n 'forceHttpGet': false,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_patch_sparql_update = new (require('@comunica/actor-rdf-update-hypermedia-patch-sparql-update').ActorRdfUpdateHypermediaPatchSparqlUpdate)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#patch-sparql-update',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_put_ldp = new (require('@comunica/actor-rdf-update-hypermedia-put-ldp').ActorRdfUpdateHypermediaPutLdp)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediatorRdfSerializeMediatypes': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#put-ldp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_sparql = new (require('@comunica/actor-rdf-update-hypermedia-sparql').ActorRdfUpdateHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffixSparql': true,\n 'checkUrlSuffixUpdate': true,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_query_operation_actors_sparql_endpoint = new (require('@comunica/actor-query-operation-sparql-endpoint').ActorQueryOperationSparqlEndpoint)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffixSparql': true,\n 'checkUrlSuffixUpdate': true,\n 'forceHttpGet': false,\n 'name': 'urn:comunica:default:query-operation/actors#sparql-endpoint',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_dereference_rdf_actors_parse = new (require('@comunica/actor-dereference-rdf-parse').ActorDereferenceRdfParse)({\n 'mediatorDereference': urn_comunica_default_dereference_mediators_main,\n 'mediatorParse': urn_comunica_default_rdf_parse_mediators_parse,\n 'mediatorParseMediatypes': urn_comunica_default_rdf_parse_mediators_mediaType,\n 'mediaMappings': {\"htm\":\"text/html\",\"html\":\"text/html\",\"json\":\"application/json\",\"jsonld\":\"application/ld+json\",\"n3\":\"text/n3\",\"nq\":\"application/n-quads\",\"nquads\":\"application/n-quads\",\"nt\":\"application/n-triples\",\"ntriples\":\"application/n-triples\",\"owl\":\"application/rdf+xml\",\"rdf\":\"application/rdf+xml\",\"rdfxml\":\"application/rdf+xml\",\"svg\":\"image/svg+xml\",\"svgz\":\"image/svg+xml\",\"trig\":\"application/trig\",\"ttl\":\"text/turtle\",\"turtle\":\"text/turtle\",\"xht\":\"application/xhtml+xml\",\"xhtml\":\"application/xhtml+xml\",\"xml\":\"application/xml\"},\n 'name': 'urn:comunica:default:dereference-rdf/actors#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_script = new (require('@comunica/actor-rdf-parse-html-script').ActorRdfParseHtmlScript)({\n 'mediatorRdfParseMediatypes': urn_comunica_default_rdf_parse_mediators_mediaType,\n 'mediatorRdfParseHandle': urn_comunica_default_rdf_parse_mediators_parse,\n 'name': 'urn:comunica:default:rdf-parse-html/actors#script',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_none = new (require('@comunica/actor-rdf-join-inner-none').ActorRdfJoinNone)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_single = new (require('@comunica/actor-rdf-join-inner-single').ActorRdfJoinSingle)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-single',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_empty = new (require('@comunica/actor-rdf-join-inner-multi-empty').ActorRdfJoinMultiEmpty)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-empty',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind = new (require('@comunica/actor-rdf-join-inner-multi-bind').ActorRdfJoinMultiBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_hash = new (require('@comunica/actor-rdf-join-inner-hash').ActorRdfJoinHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_symmetric_hash = new (require('@comunica/actor-rdf-join-inner-symmetrichash').ActorRdfJoinSymmetricHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-symmetric-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_nested_loop = new (require('@comunica/actor-rdf-join-inner-nestedloop').ActorRdfJoinNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash = new (require('@comunica/actor-rdf-join-minus-hash').ActorRdfJoinMinusHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash_undef = new (require('@comunica/actor-rdf-join-minus-hash-undef').ActorRdfJoinMinusHashUndef)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash-undef',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_bind = new (require('@comunica/actor-rdf-join-optional-bind').ActorRdfJoinOptionalBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_nested_loop = new (require('@comunica/actor-rdf-join-optional-nestedloop').ActorRdfJoinOptionalNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_actors_qpf = new (require('@comunica/actor-rdf-resolve-hypermedia-qpf').ActorRdfResolveHypermediaQpf)({\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'subjectUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#subject',\n 'predicateUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate',\n 'objectUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#object',\n 'graphUri': 'http://www.w3.org/ns/sparql-service-description#graph',\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/actors#qpf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_hypermedia = new (require('@comunica/actor-rdf-resolve-quad-pattern-hypermedia').ActorRdfResolveQuadPatternHypermedia)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_resolve_quad_pattern_hypermedia__2_0_0_components_ActorRdfResolveQuadPatternHypermedia_jsonld_IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator,\n 'maxIterators': 64,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorRdfResolveHypermedia': urn_comunica_default_rdf_resolve_hypermedia_mediators_main,\n 'mediatorRdfResolveHypermediaLinks': urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main,\n 'mediatorRdfResolveHypermediaLinksQueue': urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_hypermedia = new (require('@comunica/actor-rdf-update-quads-hypermedia').ActorRdfUpdateQuadsHypermedia)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_update_quads_hypermedia__2_0_0_components_ActorRdfUpdateQuadsHypermedia_jsonld_IActorRdfUpdateQuadsHypermediaArgs_default_invalidator,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorRdfUpdateHypermedia': urn_comunica_default_rdf_update_hypermedia_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-quads/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_clear = new (require('@comunica/actor-query-operation-update-clear').ActorQueryOperationClear)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-clear',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_create = new (require('@comunica/actor-query-operation-update-create').ActorQueryOperationCreate)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-create',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_delete_insert = new (require('@comunica/actor-query-operation-update-deleteinsert').ActorQueryOperationUpdateDeleteInsert)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-delete-insert',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_drop = new (require('@comunica/actor-query-operation-update-drop').ActorQueryOperationDrop)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-drop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_load = new (require('@comunica/actor-query-operation-update-load').ActorQueryOperationLoad)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-load',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_join = new (require('@comunica/actor-query-operation-join').ActorQueryOperationJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_leftjoin = new (require('@comunica/actor-query-operation-leftjoin').ActorQueryOperationLeftJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#leftjoin',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_minus = new (require('@comunica/actor-query-operation-minus').ActorQueryOperationMinus)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#minus',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_seq = new (require('@comunica/actor-query-operation-path-seq').ActorQueryOperationPathSeq)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-seq',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest = new (require('@comunica/actor-rdf-join-inner-multi-smallest').ActorRdfJoinMultiSmallest)({\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_query_operation_actors_quadpattern = new (require('@comunica/actor-query-operation-quadpattern').ActorQueryOperationQuadpattern)({\n 'mediatorResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_intercept_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#quadpattern',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_federated = new (require('@comunica/actor-rdf-resolve-quad-pattern-federated').ActorRdfResolveQuadPatternFederated)({\n 'mediatorResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'skipEmptyPatterns': false,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#federated',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_dereference_rule_actors_parse = new (require('@comunica/actor-dereference-rule-parse').ActorDereferenceRuleParse)({\n 'mediatorDereference': urn_comunica_default_dereference_mediators_main,\n 'mediatorParse': urn_comunica_default_rule_parse_mediators_parse,\n 'mediatorParseMediatypes': urn_comunica_default_rule_parse_mediators_mediaType,\n 'mediaMappings': {\"htm\":\"text/html\",\"html\":\"text/html\",\"hylar\":\"text/hylar\",\"json\":\"application/json\",\"jsonld\":\"application/ld+json\",\"n3\":\"text/n3\",\"nq\":\"application/n-quads\",\"nquads\":\"application/n-quads\",\"nt\":\"application/n-triples\",\"ntriples\":\"application/n-triples\",\"owl\":\"application/rdf+xml\",\"rdf\":\"application/rdf+xml\",\"rdfxml\":\"application/rdf+xml\",\"svg\":\"image/svg+xml\",\"svgz\":\"image/svg+xml\",\"trig\":\"application/trig\",\"ttl\":\"text/turtle\",\"turtle\":\"text/turtle\",\"xht\":\"application/xhtml+xml\",\"xhtml\":\"application/xhtml+xml\",\"xml\":\"application/xml\"},\n 'name': 'urn:comunica:default:dereference-rule/actors#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rule__0_0_0_components_ActorDereferenceRule_jsonld_ActorDereferenceRule_default_bus\n});\nconst urn_comunica_default_rule_resolve_actors_hypermedia = new (require('@comunica/actor-rule-resolve-hypermedia').ActorRuleResolveHypermedia)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rule_resolve_hypermedia__0_0_0_components_ActorRuleResolveHypermedia_jsonld_IActorRuleResolveHypermediaArgs_default_invalidator,\n 'mediatorDereferenceRule': urn_comunica_default_dereference_rule_mediators_main,\n 'name': 'urn:comunica:default:rule-resolve/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_resolve__0_0_0_components_ActorRuleResolve_jsonld_ActorRuleResolve_default_bus\n});\nconst urn_comunica_default_rdf_reason_actors_rule_restriction = new (require('@comunica/actor-rdf-reason-rule-restriction').ActorRdfReasonRuleRestriction)({\n 'mediatorRdfUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorRdfResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'mediatorRuleResolve': urn_comunica_default_rule_resolve_mediators_main,\n 'mediatorOptimizeRule': urn_comunica_default_optimize_rule_mediators_main,\n 'name': 'urn:comunica:default:rdf-reason/actors#rule-restriction',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_reason__0_0_0_components_ActorRdfReason_jsonld_ActorRdfReason_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_intercept_actors_reasoned = new (require('@comunica/actor-rdf-resolve-quad-pattern-intercept-reasoned').ActorRdfResolveQuadPatternInterceptReasoned)({\n 'mediatorRdfReason': urn_comunica_default_rdf_reason_mediators_main,\n 'mediatorRdfResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern-intercept/actors#reasoned',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern_intercept__0_0_0_components_ActorRdfResolveQuadPatternIntercept_jsonld_ActorRdfResolveQuadPatternIntercept_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_intercept_actors_reasoned = new (require('@comunica/actor-rdf-update-quads-intercept-reasoned').ActorRdfUpdateQuadsInterceptReasoned)({\n 'mediatorRdfReason': urn_comunica_default_rdf_reason_mediators_main,\n 'mediatorRdfResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'mediatorRdfUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-quads-intercept/actors#reasoned',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads_intercept__0_0_0_components_ActorRdfUpdateQuadsIntercept_jsonld_ActorRdfUpdateQuadsIntercept_default_bus\n});\nconst urn_comunica_default_http_actors_proxy = new (require('@comunica/actor-http-proxy').ActorHttpProxy)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'name': 'urn:comunica:default:http/actors#proxy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus,\n 'beforeActors': [\n urn_comunica_default_http_actors_fetch\n]\n});\nconst urn_comunica_default_dereference_actors_http = new (require('@comunica/actor-dereference-http').ActorDereferenceHttp)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'maxAcceptHeaderLength': 1024,\n 'maxAcceptHeaderLengthBrowser': 128,\n 'name': 'urn:comunica:default:dereference/actors#http',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus,\n 'beforeActors': [\n urn_comunica_default_dereference_actors_fallback\n]\n});\nconst urn_comunica_default_optimize_rule_actors_pattern_restriction = new (require('@comunica/actor-optimize-rule-pattern-restriction').ActorOptimizeRulePatternRestriction)({\n 'name': 'urn:comunica:default:optimize-rule/actors#pattern-restriction',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_rule__0_0_0_components_ActorOptimizeRule_jsonld_ActorOptimizeRule_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_rule_actors_remove_false_conclusion\n]\n});\nconst urn_comunica_default_Runner = (https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus, [\n urn_comunica_default_context_preprocess_actors_source_to_destination,\n urn_comunica_default_hash_bindings_actors_sha1,\n urn_comunica_default_init_actors_query,\n urn_comunica_default_optimize_query_operation_actors_join_bgp,\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join,\n urn_comunica_default_optimize_query_operation_actors_join_connected,\n urn_comunica_default_query_parse_actors_sparql,\n urn_comunica_default_query_parse_actors_graphql,\n urn_comunica_default_query_result_serialize_actors_json,\n urn_comunica_default_query_result_serialize_actors_rdf,\n urn_comunica_default_query_result_serialize_actors_simple,\n urn_comunica_default_query_result_serialize_actors_csv,\n urn_comunica_default_query_result_serialize_actors_sparql_json,\n urn_comunica_default_query_result_serialize_actors_sparql_tsv,\n urn_comunica_default_query_result_serialize_actors_sparql_xml,\n urn_comunica_default_query_result_serialize_actors_stats,\n urn_comunica_default_query_result_serialize_actors_table,\n urn_comunica_default_query_result_serialize_actors_tree,\n urn_comunica_default_dereference_actors_http,\n urn_comunica_default_dereference_actors_fallback,\n urn_comunica_default_dereference_rdf_actors_parse,\n urn_comunica_default_rdf_join_entries_sort_actors_cardinality,\n urn_comunica_default_rdf_join_selectivity_actors_variable_counting,\n urn_comunica_default_rdf_metadata_actors_primary_topic,\n urn_comunica_default_rdf_metadata_actors_all,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_controls,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_count,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_pagesize,\n urn_comunica_default_rdf_metadata_extract_actors_request_time,\n urn_comunica_default_rdf_metadata_extract_actors_allow_http_methods,\n urn_comunica_default_rdf_metadata_extract_actors_put_accepted,\n urn_comunica_default_rdf_metadata_extract_actors_patch_sparql_update,\n urn_comunica_default_rdf_metadata_extract_actors_sparql_service,\n urn_comunica_default_rdf_parse_actors_n3,\n urn_comunica_default_rdf_parse_actors_jsonld,\n urn_comunica_default_rdf_parse_actors_rdfxml,\n urn_comunica_default_rdf_parse_actors_xmlrdfa,\n urn_comunica_default_rdf_parse_actors_html,\n urn_comunica_default_rdf_parse_html_actors_microdata,\n urn_comunica_default_rdf_parse_html_actors_rdfa,\n urn_comunica_default_rdf_parse_html_actors_script,\n urn_comunica_default_rdf_resolve_hypermedia_actors_qpf,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql,\n urn_comunica_default_rdf_resolve_hypermedia_actors_none,\n urn_comunica_default_rdf_resolve_hypermedia_links_actors_next,\n urn_comunica_default_rdf_resolve_hypermedia_links_queue_actors_fifo,\n urn_comunica_default_rdf_serialize_actors_n3,\n urn_comunica_default_rdf_serialize_actors_jsonld,\n urn_comunica_default_rdf_update_hypermedia_actors_patch_sparql_update,\n urn_comunica_default_rdf_update_hypermedia_actors_put_ldp,\n urn_comunica_default_rdf_update_hypermedia_actors_sparql,\n urn_comunica_default_rdf_update_quads_actors_hypermedia,\n urn_comunica_default_rdf_update_quads_actors_rdfjs_store,\n urn_comunica_default_http_actors_proxy,\n urn_comunica_default_http_actors_fetch,\n urn_comunica_default_query_operation_actors_ask,\n urn_comunica_default_query_operation_actors_bgp,\n urn_comunica_default_query_operation_actors_construct,\n urn_comunica_default_query_operation_actors_describe,\n urn_comunica_default_query_operation_actors_distinct,\n urn_comunica_default_query_operation_actors_extend,\n urn_comunica_default_query_operation_actors_filter,\n urn_comunica_default_query_operation_actors_from,\n urn_comunica_default_query_operation_actors_group,\n urn_comunica_default_query_operation_actors_join,\n urn_comunica_default_query_operation_actors_leftjoin,\n urn_comunica_default_query_operation_actors_minus,\n urn_comunica_default_query_operation_actors_nop,\n urn_comunica_default_query_operation_actors_orderby,\n urn_comunica_default_query_operation_actors_project,\n urn_comunica_default_query_operation_actors_quadpattern,\n urn_comunica_default_query_operation_actors_reduced,\n urn_comunica_default_query_operation_actors_service,\n urn_comunica_default_query_operation_actors_slice,\n urn_comunica_default_query_operation_actors_sparql_endpoint,\n urn_comunica_default_query_operation_actors_union,\n urn_comunica_default_query_operation_actors_values,\n urn_comunica_default_query_operation_actors_path_alt,\n urn_comunica_default_query_operation_actors_path_inv,\n urn_comunica_default_query_operation_actors_path_link,\n urn_comunica_default_query_operation_actors_path_nps,\n urn_comunica_default_query_operation_actors_path_one_or_more,\n urn_comunica_default_query_operation_actors_path_seq,\n urn_comunica_default_query_operation_actors_path_zero_or_more,\n urn_comunica_default_query_operation_actors_path_zero_or_one,\n urn_comunica_default_query_operation_actors_update_add,\n urn_comunica_default_query_operation_actors_update_clear,\n urn_comunica_default_query_operation_actors_update_composite,\n urn_comunica_default_query_operation_actors_update_copy,\n urn_comunica_default_query_operation_actors_update_create,\n urn_comunica_default_query_operation_actors_update_delete_insert,\n urn_comunica_default_query_operation_actors_update_drop,\n urn_comunica_default_query_operation_actors_update_load,\n urn_comunica_default_query_operation_actors_update_move,\n urn_comunica_default_rdf_join_actors_inner_none,\n urn_comunica_default_rdf_join_actors_inner_single,\n urn_comunica_default_rdf_join_actors_inner_multi_empty,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_minus_hash,\n urn_comunica_default_rdf_join_actors_minus_hash_undef,\n urn_comunica_default_rdf_join_actors_optional_bind,\n urn_comunica_default_rdf_join_actors_optional_nested_loop,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_federated,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_hypermedia,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_rdfjs_source,\n urn_comunica_default_optimize_rule_actors_remove_false_conclusion,\n urn_comunica_default_optimize_rule_actors_pattern_restriction,\n urn_comunica_default_rule_parse_actors_hylar,\n urn_comunica_default_dereference_rule_actors_parse,\n urn_comunica_default_rule_resolve_actors_hypermedia,\n urn_comunica_default_rdf_reason_actors_rule_restriction,\n urn_comunica_default_rdf_resolve_quad_pattern_intercept_actors_reasoned,\n urn_comunica_default_rdf_update_quads_intercept_actors_reasoned,\n urn_comunica_default_dereference_actors_constant_hylar_rdfs,\n urn_comunica_default_dereference_actors_constant_hylar_owl2rl\n]);\nmodule.exports = urn_comunica_default_init_actors_query;\n\n","import type { IActionDereference, IActorDereferenceOutput, IActorDereferenceArgs } from '@comunica/bus-dereference';\nimport { ActorDereference } from '@comunica/bus-dereference';\nimport type { IActorTest } from '@comunica/core';\nimport { KeysRdfDereferenceConstantHylar } from '@comunica/reasoning-context-entries';\n\nconst Streamify = require('streamify-string');\n\n/**\n * A comunica Constant Hylar Owl2rl Dereference Actor.\n */\nexport class ActorDereferenceConstantHylarOwl2rl extends ActorDereference {\n public constructor(args: IActorDereferenceArgs) {\n super(args);\n }\n\n public async test(action: IActionDereference): Promise {\n if (action.url === KeysRdfDereferenceConstantHylar.owl2rl) {\n return true;\n }\n throw new Error(`This actor requires the url to be set to the constant ${KeysRdfDereferenceConstantHylar.owl2rl}`);\n }\n\n public async run(action: IActionDereference): Promise {\n return {\n data: Streamify(data),\n url: 'owl2rl.hylar',\n requestTime: 0,\n exists: true,\n };\n }\n}\n\nconst data = `\n(?p http://www.w3.org/2000/01/rdf-schema#domain ?c) ^ (?x ?p ?y) -> (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c)\n(?p http://www.w3.org/2000/01/rdf-schema#range ?c) ^ (?x ?p ?y) -> (?y http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#FunctionalProperty) ^ (?x ?p ?y1) ^ (?x ?p ?y2) -> (?y1 http://www.w3.org/2002/07/owl#sameAs ?y2)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#InverseFunctionalProperty) ^ (?x1 ?p ?y) ^ (?x2 ?p ?y) -> (?x1 http://www.w3.org/2002/07/owl#sameAs ?x2)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#IrreflexiveProperty) ^ (?x ?p ?x) -> false\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#SymmetricProperty) ^ (?x ?p ?y) -> (?y ?p ?x)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#AsymmetricProperty) ^ (?x ?p ?y) ^ (?y ?p ?x) -> false\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#TransitiveProperty) ^ (?x ?p ?y) ^ (?y ?p ?z) -> (?x ?p ?z)\n(?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) ^ (?x ?p1 ?y) -> (?x ?p2 ?y)\n(?x ?p1 ?y) ^ (?p2 http://www.w3.org/2002/07/owl#propertyChainAxiom ?n) ^ (?n http://www.w3.org/1999/02/22-rdf-syntax-ns#first ?p1) ^ (?n http://www.w3.org/1999/02/22-rdf-syntax-ns#rest ?n2) ^ (?n2 http://www.w3.org/1999/02/22-rdf-syntax-ns#first ?p2) ^ (?y ?p2 ?z) -> (?x ?p2 ?z)\n(?p1 http://www.w3.org/2002/07/owl#equivalentProperty ?p2) ^ (?x ?p1 ?y) -> (?x ?p2 ?y)\n(?p1 http://www.w3.org/2002/07/owl#equivalentProperty ?p2) ^ (?x ?p2 ?y) -> (?x ?p1 ?y)\n(?p1 http://www.w3.org/2002/07/owl#propertyDisjointWith ?p2) ^ (?x ?p1 ?y) ^ (?x ?p2 ?y) -> false\n(?p1 http://www.w3.org/2002/07/owl#inverseOf ?p2) ^ (?x ?p1 ?y) -> (?y ?p2 ?x)\n(?p1 http://www.w3.org/2002/07/owl#inverseOf ?p2) ^ (?x ?p2 ?y) -> (?y ?p1 ?x)\n(?x http://www.w3.org/2002/07/owl#sourceIndividual ?i1) ^ (?x http://www.w3.org/2002/07/owl#assertionProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#targetIndividual ?i2) ^ (?i1 ?p ?i2) -> false\n(?x http://www.w3.org/2002/07/owl#sourceIndividual ?i) ^ (?x http://www.w3.org/2002/07/owl#assertionProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#targetValue ?lt) ^ (?i ?p ?lt) -> false\n(?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#Nothing) -> false\n(?c1 http://www.w3.org/2002/07/owl#complementOf ?c2) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c1) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c2) -> false\n(?x http://www.w3.org/2002/07/owl#someValuesFrom ?y) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u ?p ?v) ^ (?v http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?y) -> (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x)\n(?x http://www.w3.org/2002/07/owl#someValuesFrom http://www.w3.org/2002/07/owl#Thing) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u ?p ?v) -> (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x)\n(?x http://www.w3.org/2002/07/owl#allValuesFrom ?y) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?v) -> (?v http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?y)\n(?x http://www.w3.org/2002/07/owl#hasValue ?y) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) -> (?u ?p ?y)\n(?x http://www.w3.org/2002/07/owl#hasValue ?y) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u ?p ?y) -> (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x)\n(?x http://www.w3.org/2002/07/owl#maxCardinality \"0\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y) -> false\n(?x http://www.w3.org/2002/07/owl#maxCardinality \"1\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y1) ^ (?u ?p ?y2) -> (?y1 http://www.w3.org/2002/07/owl#sameAs ?y2)\n(?x http://www.w3.org/2002/07/owl#maxQualifiedCardinality \"0\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#onClass ?c) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y) ^ (?y http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c) -> false\n(?x http://www.w3.org/2002/07/owl#maxQualifiedCardinality \"0\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#onClass http://www.w3.org/2002/07/owl#Thing) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y) -> false\n(?x http://www.w3.org/2002/07/owl#maxQualifiedCardinality \"1\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#onClass ?c) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y1) ^ (?y1 http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c) ^ (?u ?p ?y2) ^ (?y2 http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c) -> (?y1 http://www.w3.org/2002/07/owl#sameAs ?y2)\n(?x http://www.w3.org/2002/07/owl#maxQualifiedCardinality \"1\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#onClass http://www.w3.org/2002/07/owl#Thing) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y1) ^ (?u ?p ?y2) -> (?y1 http://www.w3.org/2002/07/owl#sameAs ?y2)\n(?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c1) -> (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c2)\n(?c1 http://www.w3.org/2002/07/owl#equivalentClass ?c2) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c1) -> (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c2)\n(?c1 http://www.w3.org/2002/07/owl#equivalentClass ?c2) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c2) -> (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c1)\n(?c1 http://www.w3.org/2002/07/owl#disjointWith ?c2) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c1) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c2) -> false\n(?c http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#Class) -> (?c http://www.w3.org/2000/01/rdf-schema#subClassOf ?c) ^ (?c http://www.w3.org/2002/07/owl#equivalentClass ?c) ^ (?c http://www.w3.org/2000/01/rdf-schema#subClassOf http://www.w3.org/2002/07/owl#Thing) ^ (http://www.w3.org/2002/07/owl#Nothing http://www.w3.org/2000/01/rdf-schema#subClassOf ?c)\n(?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) ^ (?c2 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c3) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c3)\n(?c1 http://www.w3.org/2002/07/owl#equivalentClass ?c2) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) ^ (?c2 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c1)\n(?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) ^ (?c2 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c1) -> (?c1 http://www.w3.org/2002/07/owl#equivalentClass ?c2)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#ObjectProperty) -> (?p http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p) ^ (?p http://www.w3.org/2002/07/owl#equivalentProperty ?p)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#DatatypeProperty) -> (?p http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p) ^ (?p http://www.w3.org/2002/07/owl#equivalentProperty ?p)\n(?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) ^ (?p2 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p3) -> (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p3)\n(?p1 http://www.w3.org/2002/07/owl#equivalentProperty ?p2) -> (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) ^ (?p2 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p1)\n(?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) ^ (?p2 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p1) -> (?p1 http://www.w3.org/2002/07/owl#equivalentProperty ?p2)\n(?p http://www.w3.org/2000/01/rdf-schema#domain ?c1) ^ (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) -> (?p http://www.w3.org/2000/01/rdf-schema#domain ?c2)\n(?p2 http://www.w3.org/2000/01/rdf-schema#domain ?c) ^ (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) -> (?p1 http://www.w3.org/2000/01/rdf-schema#domain ?c)\n(?p http://www.w3.org/2000/01/rdf-schema#range ?c1) ^ (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) -> (?p http://www.w3.org/2000/01/rdf-schema#range ?c2)\n(?p2 http://www.w3.org/2000/01/rdf-schema#range ?c) ^ (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) -> (?p1 http://www.w3.org/2000/01/rdf-schema#range ?c)\n(?c1 http://www.w3.org/2002/07/owl#hasValue ?i) ^ (?c1 http://www.w3.org/2002/07/owl#onProperty ?p1) ^ (?c2 http://www.w3.org/2002/07/owl#hasValue ?i) ^ (?c2 http://www.w3.org/2002/07/owl#onProperty ?p2) ^ (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2)\n(?c1 http://www.w3.org/2002/07/owl#someValuesFrom ?y1) ^ (?c1 http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?c2 http://www.w3.org/2002/07/owl#someValuesFrom ?y2) ^ (?c2 http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?y1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?y2) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2)\n(?c1 http://www.w3.org/2002/07/owl#someValuesFrom ?y) ^ (?c1 http://www.w3.org/2002/07/owl#onProperty ?p1) ^ (?c2 http://www.w3.org/2002/07/owl#someValuesFrom ?y) ^ (?c2 http://www.w3.org/2002/07/owl#onProperty ?p2) ^ (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2)\n(?c1 http://www.w3.org/2002/07/owl#allValuesFrom ?y1) ^ (?c1 http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?c2 http://www.w3.org/2002/07/owl#allValuesFrom ?y2) ^ (?c2 http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?y1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?y2) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2)\n(?c1 http://www.w3.org/2002/07/owl#allValuesFrom ?y) ^ (?c1 http://www.w3.org/2002/07/owl#onProperty ?p1) ^ (?c2 http://www.w3.org/2002/07/owl#allValuesFrom ?y) ^ (?c2 http://www.w3.org/2002/07/owl#onProperty ?p2) ^ (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) -> (?c2 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c1)\n`;\n","export * from './ActorDereferenceConstantHylarOwl2rl';\n","import type { IActionDereference, IActorDereferenceOutput, IActorDereferenceArgs } from '@comunica/bus-dereference';\nimport { ActorDereference } from '@comunica/bus-dereference';\nimport type { IActorTest } from '@comunica/core';\nimport { KeysRdfDereferenceConstantHylar } from '@comunica/reasoning-context-entries';\n\nconst Streamify = require('streamify-string');\n\n/**\n * A comunica Constant Hylar RDFs Dereference Actor.\n */\nexport class ActorDereferenceConstantHylarRdfs extends ActorDereference {\n public constructor(args: IActorDereferenceArgs) {\n super(args);\n }\n\n public async test(action: IActionDereference): Promise {\n if (action.url === KeysRdfDereferenceConstantHylar.rdfs) {\n return true;\n }\n throw new Error(`This actor requires the url to be set to the constant ${KeysRdfDereferenceConstantHylar.rdfs}`);\n }\n\n public async run(action: IActionDereference): Promise {\n return {\n data: Streamify(data),\n url: 'rdfs.hylar',\n requestTime: 0,\n exists: true,\n };\n }\n}\n\nconst data = `\n(?uuu ?aaa ?yyy) -> (?aaa rdf:type rdf:Property)\n(?aaa rdfs:domain ?xxx) ^ (?uuu ?aaa ?yyy) -> (?uuu rdf:type ?xxx)\n(?aaa rdfs:range ?xxx) ^ (?uuu ?aaa ?vvv) -> (?vvv rdf:type ?xxx)\n(?uuu ?aaa ?xxx) -> (?uuu rdf:type rdfs:Resource)\n(?uuu ?aaa ?vvv) -> (?vvv rdf:type rdfs:Resource)\n(?uuu rdfs:subPropertyOf ?vvv) ^ (?vvv rdfs:subPropertyOf ?xxx) -> (?uuu rdfs:subPropertyOf ?xxx)\n(?uuu rdf:type rdf:Property) -> (?uuu rdfs:subPropertyOf ?uuu)\n(?aaa rdfs:subPropertyOf ?bbb) ^ (?uuu ?aaa ?yyy) -> (?uuu ?bbb ?yyy)\n(?uuu rdf:type rdfs:Class) -> (?uuu rdfs:subClassOf rdfs:Resource)\n(?uuu rdfs:subClassOf ?xxx) ^ (?vvv rdf:type ?uuu) -> (?vvv rdf:type ?xxx)\n(?uuu rdf:type rdfs:Class) -> (?uuu rdfs:subClassOf ?uuu)\n(?uuu rdfs:subClassOf ?vvv) ^ (?vvv rdfs:subClassOf ?xxx) -> (?uuu rdfs:subClassOf ?xxx)\n(?uuu rdf:type rdfs:ContainerMembershipProperty) -> (?uuu rdfs:subPropertyOf rdfs:member)\n(?uuu rdf:type rdfs:Datatype) -> (?uuu rdfs:subClassOf rdfs:Literal)\n`;\n","import type { IActorDereferenceOutput } from '@comunica/bus-dereference';\nimport type { IActorDereferenceRuleArgs } from '@comunica/bus-dereference-rule';\nimport { ActorDereferenceRule } from '@comunica/bus-dereference-rule';\nimport type { IActionRuleParseMetadata } from '@comunica/bus-rule-parse';\n\n/**\n * A comunica Parse Dereference Rule Actor.\n */\nexport class ActorDereferenceRuleParse extends ActorDereferenceRule {\n /**\n * @param args - @defaultNested {{\n * \"hylar\": \"text/hylar\",\n * \"ttl\": \"text/turtle\",\n * \"turtle\": \"text/turtle\",\n * \"nt\": \"application/n-triples\",\n * \"ntriples\": \"application/n-triples\",\n * \"nq\": \"application/n-quads\",\n * \"nquads\": \"application/n-quads\",\n * \"rdf\": \"application/rdf+xml\",\n * \"rdfxml\": \"application/rdf+xml\",\n * \"owl\": \"application/rdf+xml\",\n * \"n3\": \"text/n3\",\n * \"trig\": \"application/trig\",\n * \"jsonld\": \"application/ld+json\",\n * \"json\": \"application/json\",\n * \"html\": \"text/html\",\n * \"htm\": \"text/html\",\n * \"xhtml\": \"application/xhtml+xml\",\n * \"xht\": \"application/xhtml+xml\",\n * \"xml\": \"application/xml\",\n * \"svg\": \"image/svg+xml\",\n * \"svgz\": \"image/svg+xml\"\n * }} mediaMappings\n */\n public constructor(args: IActorDereferenceRuleArgs) {\n super(args);\n }\n\n public async getMetadata(dereference: IActorDereferenceOutput): Promise {\n return { baseIRI: dereference.url };\n }\n}\n\nexport interface IActorDereferenceRuleParseArgs extends IActorDereferenceRuleArgs {\n}\n","import type {\n IActionOptimizeRule, IActorOptimizeRuleArgs, IActorOptimizeRuleOutput,\n} from '@comunica/bus-optimize-rule';\nimport { ActorOptimizeRule } from '@comunica/bus-optimize-rule';\nimport type { IActorTest } from '@comunica/core';\nimport type { IPremiseConclusionRule } from '@comunica/reasoning-types';\nimport type * as RDF from '@rdfjs/types';\nimport { fromArray } from 'asynciterator';\nimport { everyTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor that restricts rules to only those needed to produce data matching a particular pattern\n */\nexport class ActorOptimizeRulePatternRestriction extends ActorOptimizeRule {\n public constructor(args: IActorOptimizeRuleArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeRule): Promise {\n const { pattern } = action;\n\n if (!pattern) {\n throw new Error('A Pattern is required for ActorOptimizeRulePatternRestriction');\n }\n\n // This actor is not useful on the pattern ?s ?p ?o ?g\n const hash: Record = {};\n\n function uniqueVariable(term: RDF.Term): boolean {\n if (term.termType === 'Variable') {\n if (hash[term.value]) {\n return false;\n }\n hash[term.value] = true;\n return true;\n }\n return false;\n }\n\n if (everyTerms(pattern, uniqueVariable)) {\n throw new Error('Cannot optimise a pattern with all distinct variables');\n }\n\n // TODO: ADD THIS BACK IN\n // if (action.rules.some(rule => rule.conclusion === false)) {\n // throw new Error('Cannot restrict rules with a false conclusion');\n // }\n\n return true;\n }\n\n public async run(action: IActionOptimizeRule): Promise {\n // TODO: REMOVE THIS IN FUTURE\n const rules = action.rules.filter(\n (rule): rule is IPremiseConclusionRule => rule.conclusion !== false,\n );\n return { ...action, rules: fromArray(restrictNaive(await rules.toArray(), [ action.pattern! ])) };\n }\n}\n\n/**\n * @param rules The full rule set to be reasoned over\n * @param patterns The patterns that we are to match against in the rule set\n */\nfunction restrictNaive(rules: IPremiseConclusionRule[], patterns: (Algebra.Pattern | RDF.Quad)[]):\nIPremiseConclusionRule[] {\n let allPatterns = [ ...patterns ];\n let unusedRules = [ ...rules ];\n let unusedRulesNew: IPremiseConclusionRule[] = [];\n const allRules: IPremiseConclusionRule[] = [];\n let size = -1;\n while (unusedRules.length > 0 && size < allRules.length) {\n size = allRules.length;\n for (const rule of unusedRules) {\n // Test to see if there is any match\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n if (rule.conclusion.some(quad => allPatterns.some(pattern => matchPatternMappings(pattern, quad)))) {\n allRules.push(rule);\n allPatterns = allPatterns.concat(rule.premise);\n } else {\n unusedRulesNew.push(rule);\n }\n }\n unusedRules = unusedRulesNew;\n unusedRulesNew = [];\n }\n return allRules;\n}\n\n/**\n * Check if the base quad matches against all terms in the pattern.\n *\n * Each term in the quad must satisfy the following:\n * * The pattern term is a variable, and all other variables with the same value - map to the same terms in the quad\n * * Both the quad term and pattern term are quads - and they satisfy the same conditions\n * * The pattern and quad terms are equal and not variables or quads\n *\n * @param pattern A pattern - possibly containing variables\n * @param quad A quad - possibly containing variables\n */\nexport function matchPatternMappings(pattern: RDF.Quad | Algebra.Pattern, quad: Algebra.Pattern | RDF.Quad): boolean {\n const mapping: Record = {};\n return everyTerms(pattern, (term, key) => {\n if (quad[key].termType === 'Variable') {\n return true;\n }\n if (term.termType !== 'Variable') {\n return term.equals(quad[key]);\n }\n // eslint-disable-next-line no-return-assign\n return term.value in mapping ? mapping[term.value].equals(quad[key]) : (mapping[term.value] = quad[key]) && true;\n });\n}\n","import type {\n IActionOptimizeRule, IActorOptimizeRuleArgs, IActorOptimizeRuleOutput,\n} from '@comunica/bus-optimize-rule';\nimport { ActorOptimizeRule } from '@comunica/bus-optimize-rule';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica actor that optimizes rules by filtering out those with false conclusions\n */\nexport class ActorOptimizeRuleRemoveFalseConclusion extends ActorOptimizeRule {\n public constructor(args: IActorOptimizeRuleArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeRule): Promise {\n // Console.log('test false conclusion', action.rules.length)\n return true;\n }\n\n public async run(action: IActionOptimizeRule): Promise {\n const rules = action.rules.filter(rule => rule.conclusion !== false);\n return { ...action, rules };\n }\n}\n","import type { IActionRdfReason, IActionRdfReasonExecute, IActorRdfReasonMediatedArgs } from '@comunica/bus-rdf-reason';\nimport { ActorRdfReasonMediated } from '@comunica/bus-rdf-reason';\nimport type { IActorTest } from '@comunica/core';\nimport { KeysRdfReason } from '@comunica/reasoning-context-entries';\nimport type { INestedPremiseConclusionRule, INestedPremiseConclusionRuleBase } from '@comunica/reasoning-types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { single, UnionIterator } from 'asynciterator';\nimport { promisifyEventEmitter } from 'event-emitter-promisify';\nimport { Store } from 'n3';\nimport { forEachTerms, mapTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor that\n */\nexport class ActorRdfReasonRuleRestriction extends ActorRdfReasonMediated {\n public constructor(args: IActorRdfReasonRuleRestrictionArgs) {\n super(args);\n }\n\n public async test(action: IActionRdfReason): Promise {\n if (!action.context.has(KeysRdfReason.data) || !action.context.has(KeysRdfReason.rules)) {\n throw new Error('Missing dataset or rule context');\n }\n return true;\n }\n\n public async execute(action: IActionRdfReasonExecute): Promise {\n const { context, rules } = action;\n const store = new Store();\n let size = 0;\n do {\n size = store.size;\n // TODO: Handle rule assertions better\n const quadStreamInsert = evaluateRuleSet( rules, this.unionQuadSource(context).match);\n const { execute } = await this.runImplicitUpdate({ quadStreamInsert: quadStreamInsert.clone(), context });\n await Promise.all([ execute(), await promisifyEventEmitter(store.import(quadStreamInsert.clone())) ]);\n } while (store.size > size);\n }\n}\n\ninterface IActorRdfReasonRuleRestrictionArgs extends IActorRdfReasonMediatedArgs {\n}\n\ntype Match = (pattern: Algebra.Pattern | RDF.Quad) => AsyncIterator;\n\ntype Mapping = Record;\n\nexport function evaluateRuleSet(\n rules: AsyncIterator | INestedPremiseConclusionRule[], match: Match,\n): AsyncIterator {\n // Autostart needs to be false to prevent the iterator from ending before being consumed by rdf-update-quads\n // https://github.com/comunica/comunica-feature-reasoning/issues/904\n // https://github.com/RubenVerborgh/AsyncIterator/issues/25\n return new UnionIterator(\n rules.map((rule: INestedPremiseConclusionRule) => evaluateNestedThroughRestriction(rule, match)),\n { autoStart: false },\n );\n}\n\n// We can probably use InitialBindings here to do a lot of optimizations\nexport function evaluateNestedThroughRestriction(nestedRule: INestedPremiseConclusionRule, match: Match):\nAsyncIterator {\n const iterators = single(nestedRule).transform<{ mappings: AsyncIterator; conclusion: RDF.Quad[] }>({\n autoStart: false,\n transform(rule: INestedPremiseConclusionRuleBase | undefined, done, push) {\n let mappings: AsyncIterator = single({});\n while (rule) {\n mappings = rule.premise.reduce(\n (iterator, premise) => new UnionIterator(iterator.map(\n mapping => {\n const cause = substituteQuad(premise, mapping);\n return match(cause).map(quad => {\n let localMapping: Mapping | undefined = {};\n\n forEachTerms(cause, (term, key) => {\n if (term.termType === 'Variable' && localMapping) {\n if (term.value in localMapping && !localMapping[term.value].equals(quad[key])) {\n localMapping = undefined;\n } else {\n localMapping[term.value] = quad[key];\n }\n }\n });\n\n return localMapping && Object.assign(localMapping, mapping);\n }).filter((_mapping): _mapping is Mapping => _mapping !== undefined);\n },\n ), { autoStart: false }),\n mappings,\n );\n push({\n conclusion: rule.conclusion,\n // The only time the mappings shouldn't be cloned is if the rules is\n // not nested at all\n mappings: nestedRule.next ? mappings.clone() : mappings,\n });\n // eslint-disable-next-line no-cond-assign\n if (rule = rule.next) {\n mappings = mappings.clone();\n }\n }\n done();\n },\n }).map(({ mappings, conclusion }) => new UnionIterator(\n conclusion.map(\n quad => (conclusion.length > 1 ? mappings.clone() : mappings).map(mapping => substituteQuad(quad, mapping)),\n ),\n { autoStart: false },\n ));\n return new UnionIterator(iterators, { autoStart: false });\n}\n\nexport function substituteQuad(term: RDF.Quad, mapping: Mapping): RDF.Quad {\n return mapTerms(term, elem => elem.termType === 'Variable' && elem.value in mapping ? mapping[elem.value] : elem);\n}\n","import type { MediatorRdfReason } from '@comunica/bus-rdf-reason';\nimport { getContextWithImplicitDataset, setUnionSource } from '@comunica/bus-rdf-reason';\nimport type {\n IActionRdfResolveQuadPatternIntercept, IActorRdfResolveQuadPatternInterceptArgs,\n} from '@comunica/bus-rdf-resolve-quad-pattern-intercept';\nimport { ActorRdfResolveQuadPatternIntercept } from '@comunica/bus-rdf-resolve-quad-pattern-intercept';\n\n/**\n * A comunica Reasoned RDF Resolve Quad Pattern Intercept Actor.\n */\nexport class ActorRdfResolveQuadPatternInterceptReasoned extends ActorRdfResolveQuadPatternIntercept {\n public readonly mediatorRdfReason: MediatorRdfReason;\n\n public constructor(args: IActorRdfResolveQuadPatternInterceptReasonedArgs) {\n super(args);\n }\n\n public async runIntercept(action: IActionRdfResolveQuadPatternIntercept):\n Promise {\n const context = getContextWithImplicitDataset(action.context);\n // TODO: Work out how to emit results from other sources while still reasoning\n // this will be done by including the\n const { execute } = await this.mediatorRdfReason.mediate({ context, pattern: action.pattern });\n // TODO: Put this in a lock\n await execute();\n return { ...action, context: setUnionSource(context) };\n }\n}\n\ninterface IActorRdfResolveQuadPatternInterceptReasonedArgs extends IActorRdfResolveQuadPatternInterceptArgs {\n mediatorRdfReason: MediatorRdfReason;\n}\n\n","import type { MediatorRdfReason } from '@comunica/bus-rdf-reason';\nimport { getContextWithImplicitDataset } from '@comunica/bus-rdf-reason';\nimport type { MediatorRdfResolveQuadPattern } from '@comunica/bus-rdf-resolve-quad-pattern';\nimport type { IActionRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type {\n IActorRdfUpdateQuadsInterceptArgs, IActorRdfUpdateQuadsInterceptOutput,\n} from '@comunica/bus-rdf-update-quads-intercept';\nimport { ActorRdfUpdateQuadsIntercept } from '@comunica/bus-rdf-update-quads-intercept';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport { DataFactory } from 'n3';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst { defaultGraph, variable } = DataFactory;\n\nconst factory = new Factory();\n\n/**\n * A comunica Reasoned RDF Update Quads Intercept Actor.\n */\nexport class ActorRdfUpdateQuadsInterceptReasoned extends ActorRdfUpdateQuadsIntercept {\n public readonly mediatorRdfReason: MediatorRdfReason;\n public readonly mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n\n public constructor(args: IActorRdfUpdateQuadsInterceptReasonedArgs) {\n super(args);\n }\n\n public async test(action: IActionRdfUpdateQuads): Promise {\n const actor = await this.mediatorRdfUpdateQuads.mediateActor(action);\n return actor.test(action);\n }\n\n public async run(action: IActionRdfUpdateQuads): Promise {\n // TODO: Remove this logic into an actor on top of the update-quads bus that allows you to\n // view quad updates.\n const getQuadsFromGraph = async(graph: RDF.Quad_Graph): Promise> => {\n const { data } = await this.mediatorRdfResolveQuadPattern.mediate({\n context: action.context,\n pattern: factory.createPattern(variable('?s'), variable('?p'), variable('?o'), graph),\n });\n return data;\n };\n\n async function getGraphDeletedQuads(graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[]):\n Promise> {\n switch (graphs) {\n case 'ALL':\n return getQuadsFromGraph(defaultGraph());\n case 'NAMED':\n return (await getQuadsFromGraph(variable('?g'))).filter(quad => !quad.graph.equals(defaultGraph()));\n default:\n if (Array.isArray(graphs)) {\n // Remove Promise.all usage once https://github.com/RubenVerborgh/AsyncIterator/issues/42 is resolved\n const iterators = await Promise.all(graphs.map(graph => getQuadsFromGraph(graph)));\n return new UnionIterator(iterators, { autoStart: false });\n }\n return getQuadsFromGraph(graphs);\n }\n }\n\n return {\n execute: async() => {\n const quadStreamDelete = [\n action.deleteGraphs?.graphs && await getGraphDeletedQuads(action.deleteGraphs.graphs),\n action.quadStreamDelete?.clone(),\n ].filter((x): x is AsyncIterator => x !== undefined);\n\n const { execute: executeReasoning } = await this.mediatorRdfReason.mediate({\n context: getContextWithImplicitDataset(action.context),\n updates: {\n quadStreamDelete: new UnionIterator(quadStreamDelete, { autoStart: false }),\n quadStreamInsert: action.quadStreamInsert?.clone(),\n },\n });\n\n // Long term actor should start a reasoning lock\n await executeReasoning();\n // Long term the actor should disable a reasoning lock here\n\n const { execute } = await this.mediatorRdfUpdateQuads.mediate({\n ...action,\n // We need to clone the quad streams prior to the update\n // so that these streams can be used by the inferencing engine\n quadStreamInsert: action.quadStreamInsert?.clone(),\n quadStreamDelete: action.quadStreamDelete?.clone(),\n });\n\n // We may also need to start/stop an update lock here\n await execute();\n },\n };\n }\n}\n\nexport interface IActorRdfUpdateQuadsInterceptReasonedArgs extends IActorRdfUpdateQuadsInterceptArgs {\n mediatorRdfReason: MediatorRdfReason;\n mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n}\n","import type { Readable } from 'stream';\nimport type {\n IActionRuleParse, IActorRuleParseOutput, IActorRuleParseFixedMediaTypesArgs,\n} from '@comunica/bus-rule-parse';\nimport { ActorRuleParseFixedMediaTypes } from '@comunica/bus-rule-parse';\nimport type { Rule } from '@comunica/reasoning-types';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap } from 'asynciterator';\nimport { termAsQuad } from 'is-quad';\nimport { DataFactory, DefaultGraph } from 'n3';\nimport { stringToTerm } from 'rdf-string';\n\nconst { quad, variable } = DataFactory;\n\n/**\n * A comunica Hylar Rule Parse Actor.\n */\nexport class ActorRuleParseHylar extends ActorRuleParseFixedMediaTypes {\n /**\n * TODO: Check this\n * @param args -\n * \\ @defaultNested {{\n * \"application/hylar\": 1.0,\n * \"text/hylar\": 0.9\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/hylar\": \"http://www.w3.org/ns/formats/Hylar\",\n * \"application/hylar\": \"http://www.w3.org/ns/formats/Hylar\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorRuleParseFixedMediaTypesArgs) {\n super(args);\n }\n\n public async runHandle(action: IActionRuleParse, mediaType: string, context: IActionContext):\n Promise {\n let buffer = '';\n\n // TODO: Make this a module of its own right\n const ruleStrings = wrap(action.data).map(chunk => chunk.toString()).transform({\n transform(data, done, push) {\n for (const char of data) {\n if (char === '\\n') {\n if (buffer !== '') {\n push(buffer);\n buffer = '';\n }\n } else {\n buffer += char;\n }\n }\n // TODO: Fix this - it assumes 'clean' chunks\n // it is here to handle the case where there is\n // no line break at EOF\n if (buffer !== '') {\n push(buffer);\n buffer = '';\n }\n done();\n },\n });\n\n return { data: & Readable> ruleStrings.map(ruleString => parseRule(ruleString)) };\n }\n}\n\nconst TRIPLE = /((?<=\\()\\S+?\\s\\S+?\\s\\S+?(?=\\)))|false/gui;\n\nexport function parseRule(strRule: string): Rule {\n const [ premise, conclusion ] = strRule.split('->');\n const premiseQuads = premise.match(TRIPLE);\n const conclusionQuads = conclusion.match(TRIPLE);\n\n /* istanbul ignore next - remove with closure of https://github.com/comunica/comunica-feature-reasoning/issues/31 */\n if (premiseQuads === null || conclusionQuads === null) {\n throw new Error(`Invalid rule: ${strRule}`);\n }\n\n return {\n ruleType: 'rdfs',\n premise: parseTriples(premiseQuads),\n conclusion: conclusionQuads[0] === 'false' ? false : parseTriples(conclusionQuads),\n };\n}\n\nexport function parseTriples(triples: string[]): RDF.Quad[] {\n return triples.map(triple => parseTriple(triple));\n}\n\nexport function parseTriple(triple: string): RDF.Quad {\n const [ subject, predicate, object ] = triple.split(' ');\n return termAsQuad(\n quad(myStringToTerm(subject), myStringToTerm(predicate), myStringToTerm(object), new DefaultGraph()),\n );\n}\n\nconst prefixes: Record = {\n owl: 'http://www.w3.org/2002/07/owl#',\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n rdfs: 'http://www.w3.org/2000/01/rdf-schema#',\n hax: 'http://ucbl.github.io/HyLAR-Reasoner/axioms/',\n};\n\nfunction myStringToTerm(value: string): RDF.Term {\n const split = value.split(':');\n if (split.length >= 2) {\n const prefix = split[0];\n if (prefix in prefixes) {\n value = prefixes[prefix] + value.slice(prefix.length + 1);\n }\n }\n return stringToTerm(value);\n}\n","import type { MediatorDereferenceRule } from '@comunica/bus-dereference-rule';\nimport type { ActorHttpInvalidateListenable, IActionHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { IActionRuleResolve, IActorRuleResolveArgs, IRuleSource } from '@comunica/bus-rule-resolve';\nimport { ActorRuleResolveSource } from '@comunica/bus-rule-resolve';\nimport type { IActorTest } from '@comunica/core';\nimport { KeysRdfReason } from '@comunica/reasoning-context-entries';\nimport type { IActionContext } from '@comunica/types';\nimport LRUCache = require('lru-cache');\nimport { MediatedRuleSource } from './MediatedRuleSource';\n\n/**\n * A comunica Hypermedia Rule Resolve Actor.\n */\nexport class ActorRuleResolveHypermedia extends ActorRuleResolveSource\n implements IActorRuleResolveHypermediaArgs {\n public readonly mediatorDereferenceRule: MediatorDereferenceRule;\n public readonly httpInvalidator: ActorHttpInvalidateListenable;\n public readonly cacheSize: number;\n public readonly cache?: LRUCache;\n\n public constructor(args: IActorRuleResolveHypermediaArgs) {\n super(args);\n const cache = this.cache = this.cacheSize ?\n new LRUCache({ max: this.cacheSize }) :\n undefined;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(\n ({ url }: IActionHttpInvalidate) => url ? cache.delete(url) : cache.clear(),\n );\n }\n }\n\n public async test(action: IActionRuleResolve): Promise {\n // TODO: Add something like this back in when we have multiple sources\n // const sources = hasContextSingleSource(action.context);\n // if (!sources) {\n // throw new Error(`Actor ${this.name} can only resolve quad pattern queries against a single source.`);\n // }\n return true;\n }\n\n protected getSource(context: IActionContext): IRuleSource {\n const url = context.get(KeysRdfReason.rules);\n\n if (!url) {\n throw new Error('No rule found in context');\n }\n\n let source = this.cache?.get(url);\n\n if (!source) {\n // If not in cache, create a new source\n source = new MediatedRuleSource(context, url, this);\n // Set in cache\n this.cache?.set(url, source);\n }\n\n return source;\n }\n}\n\nexport interface IActorRuleResolveHypermediaArgs extends IActorRuleResolveArgs {\n /**\n * The maximum number of entries in the LRU cache, set to 0 to disable.\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n /* eslint-disable max-len */\n /**\n * An actor that listens to HTTP invalidation events\n * @default { a }\n */\n httpInvalidator: ActorHttpInvalidateListenable;\n /* eslint-enable max-len */\n mediatorDereferenceRule: MediatorDereferenceRule;\n}\n","import type { MediatorDereferenceRule } from '@comunica/bus-dereference-rule';\nimport type { IRuleSource } from '@comunica/bus-rule-resolve';\nimport type { Rule } from '@comunica/reasoning-types';\nimport type { IActionContext } from '@comunica/types';\nimport { fromArray, wrap } from 'asynciterator';\nimport type { AsyncIterator } from 'asynciterator';\n\n/**\n * A lazy rule source\n */\nexport class MediatedRuleSource implements IRuleSource {\n private cache: Rule[] | undefined;\n\n public constructor(\n public readonly context: IActionContext,\n public readonly url: string,\n public readonly mediators: IMediatedRuleSourceArgs,\n ) {\n\n }\n\n public get(): AsyncIterator {\n if (this.cache) {\n return fromArray(this.cache);\n }\n\n const _data = wrap(this.mediators.mediatorDereferenceRule.mediate({\n url: this.url,\n context: this.context,\n }).then(({ data }) => data));\n\n this.cache = [];\n return _data.map(rule => {\n this.cache?.push(rule);\n return rule;\n });\n }\n}\n\nexport interface IMediatedRuleSourceArgs {\n mediatorDereferenceRule: MediatorDereferenceRule;\n}\n","import type {\n IActionDereferenceParse,\n IActorDereferenceParseArgs,\n IActorDereferenceParseOutput,\n} from '@comunica/bus-dereference';\nimport {\n ActorDereferenceParse,\n} from '@comunica/bus-dereference';\nimport type { IActionRuleParseMetadata, IActorRuleParseOutputMetadata } from '@comunica/bus-rule-parse';\nimport type { Mediate } from '@comunica/core';\nimport type { RuleStream } from '@comunica/reasoning-types';\n\n/**\n * A base actor for dereferencing URLs to rule streams.\n *\n * Actor types:\n * * Input: IActionDereferenceRule: A URL.\n * * Test: \n * * Output: IActorDereferenceRuleOutput: A rule stream.\n *\n * @see IActionDereferenceRule\n * @see IActorDereferenceRuleOutput\n */\nexport abstract class ActorDereferenceRule extends\n ActorDereferenceParse {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorDereferenceRuleArgs) {\n super(args);\n }\n}\n\nexport interface IActorDereferenceRuleArgs extends\n IActorDereferenceParseArgs {\n}\n\nexport type IActionDereferenceRule = IActionDereferenceParse;\n\nexport type IActorDereferenceRuleOutput = IActorDereferenceParseOutput;\n\nexport type MediatorDereferenceRule = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { Rule } from '@comunica/reasoning-types';\nimport type { IActionContext } from '@comunica/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for optimizing reasoning rules\n *\n * Actor types:\n * * Input: IActionOptimizeRule: TODO: fill in.\n * * Test: \n * * Output: IActorOptimizeRuleOutput: TODO: fill in.\n *\n * @see IActionOptimizeRule\n * @see IActorOptimizeRuleOutput\n */\nexport abstract class ActorOptimizeRule extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorOptimizeRuleArgs) {\n super(args);\n }\n}\n\nexport interface IActionOptimizeRule extends IAction {\n rules: AsyncIterator;\n /**\n * An optional pattern to to restrict the rules to infer for\n */\n pattern?: Algebra.Pattern;\n}\n\nexport interface IActorOptimizeRuleOutput extends IActorOutput {\n rules: AsyncIterator;\n pattern?: Algebra.Pattern;\n context: IActionContext;\n}\n\nexport type IActorOptimizeRuleArgs = IActorArgs;\n\nexport type MediatorOptimizeRule = Mediate;\n","import { KeysRdfUpdateQuads, KeysRdfResolveQuadPattern } from '@comunica/context-entries';\nimport type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor, ActionContext } from '@comunica/core';\nimport { KeysRdfReason } from '@comunica/reasoning-context-entries';\nimport type { IDatasetFactory, IReasonGroup } from '@comunica/reasoning-types';\nimport type { IActionContext, IDataDestination, IDataSource } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nexport function implicitDatasetFactory(context: IActionContext): IDataSource & IDataDestination {\n const datasetFactory = context.get(KeysRdfReason.implicitDatasetFactory);\n if (!datasetFactory) {\n throw new Error(`Missing context entry for ${KeysRdfReason.implicitDatasetFactory.name}`);\n }\n return datasetFactory();\n}\n\nexport function implicitGroupFactory(context: IActionContext): IReasonGroup {\n return {\n dataset: implicitDatasetFactory(context),\n status: { type: 'full', reasoned: false },\n context: new ActionContext(),\n };\n}\n\n// TODO: Clean up after https://github.com/comunica/comunica-feature-reasoning/issues/945 is closed\nexport function getSafeData(context: IActionContext): IReasonGroup {\n const data: IReasonGroup | undefined = context.get(KeysRdfReason.data);\n if (!data) {\n throw new Error(`Context entry ${KeysRdfReason.data.name} is required but not available`);\n }\n return data;\n}\n\nexport function getImplicitSource(context: IActionContext): IDataSource & IDataDestination {\n return getSafeData(context).dataset;\n}\n\nexport function getExplicitSources(context: IActionContext): IDataSource[] {\n return context.has(KeysRdfResolveQuadPattern.source) ?\n [ context.get(KeysRdfResolveQuadPattern.source)! ] :\n context.get(KeysRdfResolveQuadPattern.sources) ?? [];\n}\n\nexport function getUnionSources(context: IActionContext): IDataSource[] {\n return [ ...getExplicitSources(context), getImplicitSource(context) ];\n}\n\nexport function setImplicitDestination(context: IActionContext): IActionContext {\n return context.set(KeysRdfUpdateQuads.destination, getImplicitSource(context));\n}\n\nexport function setImplicitSource(context: IActionContext): IActionContext {\n return context\n .delete(KeysRdfResolveQuadPattern.sources)\n .set(KeysRdfResolveQuadPattern.source, getImplicitSource(context));\n}\n\nexport function setUnionSource(context: IActionContext): IActionContext {\n return context.delete(KeysRdfResolveQuadPattern.source)\n .set(KeysRdfResolveQuadPattern.sources, getUnionSources(context));\n}\n\nexport function getContextWithImplicitDataset(context: IActionContext): IActionContext {\n // We cannot use 'setDefault' here because implicitGroupFactory will throw an error\n // if there is no implicit dataset factory *even if* we already have a data entry\n return context.has(KeysRdfReason.data) ? context : context.set(KeysRdfReason.data, implicitGroupFactory(context));\n}\n\nexport function setReasoningStatus(context: IActionContext, status: IReasonGroup['status']): IActionContext {\n getSafeData(context).status = status;\n return context;\n}\n\n/**\n * A comunica actor for reasoning over RDF data\n *\n * Actor types:\n * * Input: IActionRdfReason: TODO: fill in.\n * * Test: \n * * Output: IActorRdfReasonOutput: TODO: fill in.\n *\n * @see IActionRdfReason\n * @see IActorRdfReasonOutput\n */\nexport abstract class ActorRdfReason extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfReasonArgs) {\n super(args);\n }\n}\n\nexport interface IQuadUpdates {\n quadStreamInsert?: AsyncIterator;\n quadStreamDelete?: AsyncIterator;\n}\n\nexport interface IActionRdfReason extends IAction {\n /**\n * The patterns for which must have all inferred data\n *\n * If left undefined then all inferences on the data need to be made\n */\n pattern?: Algebra.Pattern;\n /**\n *\n */\n updates?: IQuadUpdates;\n}\n\nexport interface IActorRdfReasonOutput extends IActorOutput {\n /**\n * Async function that resolves when the reasoning is done.\n */\n execute: () => Promise;\n}\n\nexport type MediatorRdfReason = Mediate;\n\nexport type IActorRdfReasonArgs = IActorArgs;\n","import type { MediatorOptimizeRule } from '@comunica/bus-optimize-rule';\nimport type { MediatorRdfResolveQuadPattern } from '@comunica/bus-rdf-resolve-quad-pattern';\nimport type {\n IActionRdfUpdateQuads, IActorRdfUpdateQuadsOutput, MediatorRdfUpdateQuads,\n} from '@comunica/bus-rdf-update-quads';\nimport type { MediatorRuleResolve } from '@comunica/bus-rule-resolve';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\nimport type { Rule, IReasonStatus } from '@comunica/reasoning-types';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap, type AsyncIterator } from 'asynciterator';\nimport { everyTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { IActionRdfReason, IActorRdfReasonOutput } from './ActorRdfReason';\nimport {\n getSafeData, setReasoningStatus, ActorRdfReason, setImplicitDestination, setUnionSource,\n} from './ActorRdfReason';\n\nexport abstract class ActorRdfReasonMediated extends ActorRdfReason {\n public readonly mediatorRdfUpdateQuads: MediatorRdfUpdateQuads;\n\n public readonly mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n\n public readonly mediatorRuleResolve: MediatorRuleResolve;\n\n public readonly mediatorOptimizeRule: MediatorOptimizeRule;\n\n public constructor(args: IActorRdfReasonMediatedArgs) {\n super(args);\n }\n\n protected async runExplicitUpdate(changes: IActionRdfUpdateQuads): Promise {\n return this.mediatorRdfUpdateQuads.mediate(changes);\n }\n\n protected async runImplicitUpdate(action: IActionRdfUpdateQuads): Promise {\n return this.runExplicitUpdate({ ...action, context: setImplicitDestination(action.context) });\n }\n\n protected explicitQuadSource(context: IActionContext): {\n match: (pattern: Algebra.Pattern) => AsyncIterator;\n } {\n return {\n match: (pattern: Algebra.Pattern): AsyncIterator => wrap(\n this.mediatorRdfResolveQuadPattern.mediate({ context, pattern }).then(({ data }) => data),\n ),\n };\n }\n\n // TODO: See if we need to add this back in\n // protected implicitQuadSource(context: IActionContext): {\n // match: (pattern: Algebra.Pattern) => AsyncIterator\n // } {\n // return this.explicitQuadSource(setImplicitSource(context));\n // }\n\n protected unionQuadSource(context: IActionContext): { match: (pattern: Algebra.Pattern) => AsyncIterator } {\n return this.explicitQuadSource(setUnionSource(context));\n }\n\n // TODO [FUTURE]: Push this into a specific abstract interface for language agnostic reasoners.\n public getRules(action: IActionRdfReason): AsyncIterator {\n const getRules = async(): Promise> => {\n const { data } = await this.mediatorRuleResolve.mediate(action);\n const { rules } = await this.mediatorOptimizeRule.mediate({ rules: data, ...action });\n return rules;\n };\n return wrap(getRules());\n }\n\n public async run(action: IActionRdfReason): Promise {\n return {\n execute: async(): Promise => {\n const { updates, pattern } = action;\n if (updates) {\n // If there is an update - forget everything we know about the current status of reasoning\n setReasoningStatus(action.context, { type: 'full', reasoned: false });\n }\n\n const { status } = getSafeData(action.context);\n\n // If full reasoning is already being applied then just use the data from that\n if (status.type === 'full' && status.reasoned) {\n return status.done;\n }\n\n // TODO: Import from rdf-terms.js once https://github.com/rubensworks/rdf-terms.js/pull/42 is merged\n /* istanbul ignore next */\n function matchBaseQuadPattern(__pattern: RDF.BaseQuad, quad: RDF.BaseQuad): boolean {\n const mapping: Record = {};\n function match(_pattern: RDF.BaseQuad, _quad: RDF.BaseQuad): boolean {\n return everyTerms(_pattern, (term, key) => {\n switch (term.termType) {\n case 'Quad':\n return _quad[key].termType === 'Quad' && match(term, _quad[key]);\n case 'Variable':\n // eslint-disable-next-line no-return-assign\n return term.value in mapping ?\n mapping[term.value].equals(_quad[key]) :\n (mapping[term.value] = _quad[key]) && true;\n default:\n return term.equals(_quad[key]);\n }\n });\n }\n return match(__pattern, quad);\n }\n\n // If we have already done partial reasoning and are only interested in a certain\n // pattern then maybe we can use that\n if (status.type === 'partial' && pattern) {\n for (const [ key, value ] of status.patterns) {\n if (value.reasoned && matchBaseQuadPattern(key, pattern)) {\n return value.done;\n }\n }\n }\n this.logInfo(action.context, 'Starting reasoning ...');\n const reasoningLock = this.execute({ ...action, rules: await this.getRules(action).toArray() });\n\n if (pattern) {\n // Set reasoning whole\n const patterns: Map = status.type === 'partial' ? status.patterns : new Map();\n setReasoningStatus(action.context, {\n type: 'partial',\n patterns: patterns.set(pattern, { type: 'full', reasoned: true, done: reasoningLock }),\n });\n } else {\n setReasoningStatus(action.context, { type: 'full', reasoned: true, done: reasoningLock });\n }\n\n return reasoningLock;\n },\n };\n }\n\n public abstract execute(action: IActionRdfReasonExecute): Promise;\n}\n\nexport interface IActionRdfReasonExecute extends IActionRdfReason {\n rules: Rule[];\n}\n\nexport interface IActorRdfReasonMediatedArgs\n extends IActorArgs {\n mediatorRdfUpdateQuads: MediatorRdfUpdateQuads;\n mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n mediatorRuleResolve: MediatorRuleResolve;\n mediatorOptimizeRule: MediatorOptimizeRule;\n}\n","import type {\n IActionRdfResolveQuadPattern, IActorRdfResolveQuadPatternOutput, MediatorRdfResolveQuadPattern,\n} from '@comunica/bus-rdf-resolve-quad-pattern';\nimport type { IActorArgs, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\n\n/**\n * A comunica actor for rdf-resolve-quad-pattern-intercept events.\n *\n * Actor types:\n * * Input: IActionRdfResolveQuadPatternIntercept: TODO: fill in.\n * * Test: \n * * Output: IActorRdfResolveQuadPatternInterceptOutput: TODO: fill in.\n *\n * @see IActionRdfResolveQuadPatternIntercept\n * @see IActorRdfResolveQuadPatternInterceptOutput\n */\nexport abstract class ActorRdfResolveQuadPatternIntercept extends\n Actor {\n public readonly mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfResolveQuadPatternInterceptArgs) {\n super(args);\n }\n\n public async test(action: IActionRdfResolveQuadPatternIntercept): Promise {\n return true;\n }\n\n public abstract runIntercept(action: IActionRdfResolveQuadPatternIntercept):\n Promise;\n\n public async run(action: IActionRdfResolveQuadPatternIntercept): Promise {\n return this.mediatorRdfResolveQuadPattern.mediate(await this.runIntercept(action));\n }\n}\n\nexport interface IActorRdfResolveQuadPatternInterceptArgs extends\n IActorArgs {\n mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n}\n\n// Revert to type = pattern once https://github.com/LinkedSoftwareDependencies/Components.js/issues/90 is fixed\nexport interface IActionRdfResolveQuadPatternIntercept extends IActionRdfResolveQuadPattern {}\nexport interface IActorRdfResolveQuadPatternInterceptOutput extends IActorRdfResolveQuadPatternOutput {}\nexport type MediatorRdfResolveQuadPatternIntercept =\nMediate;\n","import type {\n IActionRdfUpdateQuads,\n IActorRdfUpdateQuadsOutput,\n MediatorRdfUpdateQuads,\n} from '@comunica/bus-rdf-update-quads';\nimport type { IActorArgs, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\n\n// TODO: Remove this module my using something like 'reasoning groups'\n\n/**\n * A comunica actor for rdf-update-quads-intercept events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateQuadsIntercept: TODO: fill in.\n * * Test: \n * * Output: IActorRdfUpdateQuadsInterceptOutput: TODO: fill in.\n *\n * @see IActionRdfUpdateQuadsIntercept\n * @see IActorRdfUpdateQuadsInterceptOutput\n */\nexport abstract class ActorRdfUpdateQuadsIntercept extends\n Actor {\n public readonly mediatorRdfUpdateQuads: MediatorRdfUpdateQuads;\n\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfUpdateQuadsInterceptArgs) {\n super(args);\n }\n\n // Public abstract execute(action: IActionRdfUpdateQuadsIntercept, cb: () => void): Promise;\n\n // public async test(action: IActionRdfUpdateQuads): Promise {\n // return true;\n // }\n\n public abstract run(action: IActionRdfUpdateQuadsIntercept): Promise;\n\n // {\n // const { execute } = await this.mediatorRdfUpdateQuads.mediate(action);\n // return {\n // execute: () => this.execute(action, execute)\n // }\n\n // // return this.mediatorRdfUpdateQuads.mediate(await this.runIntercept(action));\n // }\n}\n\nexport interface IActorRdfUpdateQuadsInterceptArgs extends\n IActorArgs {\n mediatorRdfUpdateQuads: MediatorRdfUpdateQuads;\n}\n\n// Revert to type = pattern once https://github.com/LinkedSoftwareDependencies/Components.js/issues/90 is fixed\nexport interface IActionRdfUpdateQuadsIntercept extends IActionRdfUpdateQuads {}\nexport interface IActorRdfUpdateQuadsInterceptOutput extends IActorRdfUpdateQuadsOutput {}\nexport type MediatorRdfUpdateQuadsIntercept =\nMediate;\n","import type { IActionAbstractMediaTyped,\n IActionAbstractMediaTypedHandle, IActionAbstractMediaTypedMediaTypeFormats,\n IActionAbstractMediaTypedMediaTypes,\n IActorArgsMediaTyped,\n IActorOutputAbstractMediaTyped,\n IActorOutputAbstractMediaTypedHandle,\n IActorOutputAbstractMediaTypedMediaTypeFormats,\n IActorOutputAbstractMediaTypedMediaTypes,\n IActorTestAbstractMediaTyped,\n IActorTestAbstractMediaTypedHandle,\n IActorTestAbstractMediaTypedMediaTypeFormats,\n IActorTestAbstractMediaTypedMediaTypes } from '@comunica/actor-abstract-mediatyped';\nimport {\n ActorAbstractMediaTyped,\n} from '@comunica/actor-abstract-mediatyped';\nimport type { IActionParse, IActorParseOutput } from '@comunica/actor-abstract-parse';\nimport type { IActorTest, Mediate } from '@comunica/core';\nimport type { RuleStream } from '@comunica/reasoning-types';\n\n/**\n * A comunica actor for parsing reasoning rules\n *\n * Actor types:\n * * Input: IActionRuleParse: A parse input or a media type input.\n * * Test: \n * * Output: IActorRuleParseOutput: The parsed rules.\n *\n * @see IActionRuleParse\n * @see IActorRuleParseOutput\n */\nexport abstract class ActorRuleParse extends\n ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRuleParseArgs) {\n super(args);\n }\n}\n\nexport type IActionRootRuleParse = IActionAbstractMediaTyped;\nexport type IActorTestRootRuleParse = IActorTestAbstractMediaTyped;\nexport type IActorOutputRootRuleParse = IActorOutputAbstractMediaTyped;\n\nexport type IActionRuleParseHandle = IActionAbstractMediaTypedHandle;\nexport type IActorTestRuleParseHandle = IActorTestAbstractMediaTypedHandle;\nexport type IActorOutputRuleParseHandle = IActorOutputAbstractMediaTypedHandle;\n\nexport type IActionRuleParseMediaTypes = IActionAbstractMediaTypedMediaTypes;\nexport type IActorTestRuleParseMediaTypes = IActorTestAbstractMediaTypedMediaTypes;\nexport type IActorOutputRuleParseMediaTypes = IActorOutputAbstractMediaTypedMediaTypes;\n\nexport type IActionRuleParseMediaTypeFormats = IActionAbstractMediaTypedMediaTypeFormats;\nexport type IActorTestRuleParseMediaTypeFormats = IActorTestAbstractMediaTypedMediaTypeFormats;\nexport type IActorOutputRuleParseMediaTypeFormats = IActorOutputAbstractMediaTypedMediaTypeFormats;\n\nexport interface IActionRuleParseMetadata {\n /**\n * The base IRI for parsed rules.\n */\n baseIRI: string;\n}\n\nexport type IActorRuleParseOutputMetadata = undefined;\n\nexport type IActionRuleParse = IActionParse;\n\nexport type IActorRuleParseOutput = IActorParseOutput;\n\nexport type IActorRuleParseArgs = IActorArgsMediaTyped;\n\n// TODO: See if we can emove this\nexport type MediatorRdfParseHandle = Mediate<\nIActionRuleParseHandle, IActorOutputRuleParseHandle, IActorTestRuleParseHandle>;\n\nexport type MediatorRuleParseMediaTypes = Mediate<\nIActionRuleParseMediaTypes, IActorOutputRuleParseMediaTypes, IActorTestRuleParseMediaTypes>;\n\nexport type MediatorRuleParseMediaTypeFormats = Mediate<\nIActionRuleParseMediaTypeFormats, IActorOutputRuleParseMediaTypeFormats, IActorTestRuleParseMediaTypeFormats>;\n","import { type IActorArgsMediaTypedFixed, ActorAbstractMediaTypedFixed } from '@comunica/actor-abstract-mediatyped';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionRuleParse, IActorRuleParseOutput } from './ActorRuleParse';\n\n/**\n * A base actor for listening to Rule parse events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRuleParseOrMediaType: A parse input or a media type input.\n * * Test: \n * * Output: IActorOutputRuleParseOrMediaType: The parsed quads.\n *\n * @see IActionInit\n */\nexport abstract class ActorRuleParseFixedMediaTypes extends ActorAbstractMediaTypedFixed<\nIActionRuleParse, IActorTest, IActorRuleParseOutput> implements IActorRuleParseFixedMediaTypesArgs {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRuleParseFixedMediaTypesArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n public async testHandleChecked(action: IActionRuleParse): Promise {\n return true;\n }\n}\n\nexport interface IActorRuleParseFixedMediaTypesArgs\n extends IActorArgsMediaTypedFixed {}\n","import { Actor } from '@comunica/core';\nimport type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport type { Rule } from '@comunica/reasoning-types';\nimport type { AsyncIterator } from 'asynciterator';\n\n/**\n * A comunica actor for resolving rules.\n *\n * Actor types:\n * * Input: IActionRuleResolve: A quad pattern and an optional context.\n * * Test: \n * * Output: IActorRuleResolveOutput: The resulting rule stream.\n *\n * @see IActionRuleResolve\n * @see IActorRuleResolveOutput\n */\nexport abstract class ActorRuleResolve extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRuleResolveArgs) {\n super(args);\n }\n}\n\nexport interface IActionRuleResolve extends IAction {}\n\nexport interface IActorRuleResolveOutput extends IActorOutput {\n /**\n * The resulting rule stream.\n */\n data: AsyncIterator;\n}\n\nexport type IActorRuleResolveArgs = IActorArgs;\nexport type MediatorRuleResolve = Mediate;\n","import type { IActorTest } from '@comunica/core';\nimport type { Rule } from '@comunica/reasoning-types';\nimport type { IActionContext } from '@comunica/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { IActorRuleResolveArgs, IActionRuleResolve, IActorRuleResolveOutput } from './ActorRuleResolve';\nimport { ActorRuleResolve } from './ActorRuleResolve';\n\n/**\n * A base implementation for rdf-resolve-quad-pattern events\n * that wraps around an {@link IRuleSource}.\n *\n * @see IRuleSource\n */\nexport abstract class ActorRuleResolveSource extends ActorRuleResolve {\n public constructor(args: IActorRuleResolveArgs) {\n super(args);\n }\n\n public abstract test(action: IActionRuleResolve): Promise;\n\n public async run(action: IActionRuleResolve): Promise {\n return { data: this.getSource(action.context).get() };\n }\n\n /**\n * Get a source instance for the given context.\n */\n protected abstract getSource(context: IActionContext): IRuleSource;\n}\n\n/**\n * A lazy rule source.\n */\nexport interface IRuleSource {\n /**\n * Returns a (possibly lazy) stream that processes all quads matching the pattern.\n * @return {AsyncIterator} The resulting rule stream.\n */\n get: () => AsyncIterator;\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2021 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (object === null || typeof object !== 'object' || object.toJSON != null) {\n return JSON.stringify(object);\n }\n\n if (Array.isArray(object)) {\n return '[' + object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return t + comma + serialize(value);\n }, '') + ']';\n }\n\n return '{' + Object.keys(object).sort().reduce((t, cv, ci) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return t + comma + serialize(cv) + ':' + serialize(object[cv]);\n }, '') + '}';\n};\n","(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(typeof self !== 'undefined' ? self : this);\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeNames = exports.elementNames = void 0;\nexports.elementNames = new Map([\n [\"altglyph\", \"altGlyph\"],\n [\"altglyphdef\", \"altGlyphDef\"],\n [\"altglyphitem\", \"altGlyphItem\"],\n [\"animatecolor\", \"animateColor\"],\n [\"animatemotion\", \"animateMotion\"],\n [\"animatetransform\", \"animateTransform\"],\n [\"clippath\", \"clipPath\"],\n [\"feblend\", \"feBlend\"],\n [\"fecolormatrix\", \"feColorMatrix\"],\n [\"fecomponenttransfer\", \"feComponentTransfer\"],\n [\"fecomposite\", \"feComposite\"],\n [\"feconvolvematrix\", \"feConvolveMatrix\"],\n [\"fediffuselighting\", \"feDiffuseLighting\"],\n [\"fedisplacementmap\", \"feDisplacementMap\"],\n [\"fedistantlight\", \"feDistantLight\"],\n [\"fedropshadow\", \"feDropShadow\"],\n [\"feflood\", \"feFlood\"],\n [\"fefunca\", \"feFuncA\"],\n [\"fefuncb\", \"feFuncB\"],\n [\"fefuncg\", \"feFuncG\"],\n [\"fefuncr\", \"feFuncR\"],\n [\"fegaussianblur\", \"feGaussianBlur\"],\n [\"feimage\", \"feImage\"],\n [\"femerge\", \"feMerge\"],\n [\"femergenode\", \"feMergeNode\"],\n [\"femorphology\", \"feMorphology\"],\n [\"feoffset\", \"feOffset\"],\n [\"fepointlight\", \"fePointLight\"],\n [\"fespecularlighting\", \"feSpecularLighting\"],\n [\"fespotlight\", \"feSpotLight\"],\n [\"fetile\", \"feTile\"],\n [\"feturbulence\", \"feTurbulence\"],\n [\"foreignobject\", \"foreignObject\"],\n [\"glyphref\", \"glyphRef\"],\n [\"lineargradient\", \"linearGradient\"],\n [\"radialgradient\", \"radialGradient\"],\n [\"textpath\", \"textPath\"],\n]);\nexports.attributeNames = new Map([\n [\"definitionurl\", \"definitionURL\"],\n [\"attributename\", \"attributeName\"],\n [\"attributetype\", \"attributeType\"],\n [\"basefrequency\", \"baseFrequency\"],\n [\"baseprofile\", \"baseProfile\"],\n [\"calcmode\", \"calcMode\"],\n [\"clippathunits\", \"clipPathUnits\"],\n [\"diffuseconstant\", \"diffuseConstant\"],\n [\"edgemode\", \"edgeMode\"],\n [\"filterunits\", \"filterUnits\"],\n [\"glyphref\", \"glyphRef\"],\n [\"gradienttransform\", \"gradientTransform\"],\n [\"gradientunits\", \"gradientUnits\"],\n [\"kernelmatrix\", \"kernelMatrix\"],\n [\"kernelunitlength\", \"kernelUnitLength\"],\n [\"keypoints\", \"keyPoints\"],\n [\"keysplines\", \"keySplines\"],\n [\"keytimes\", \"keyTimes\"],\n [\"lengthadjust\", \"lengthAdjust\"],\n [\"limitingconeangle\", \"limitingConeAngle\"],\n [\"markerheight\", \"markerHeight\"],\n [\"markerunits\", \"markerUnits\"],\n [\"markerwidth\", \"markerWidth\"],\n [\"maskcontentunits\", \"maskContentUnits\"],\n [\"maskunits\", \"maskUnits\"],\n [\"numoctaves\", \"numOctaves\"],\n [\"pathlength\", \"pathLength\"],\n [\"patterncontentunits\", \"patternContentUnits\"],\n [\"patterntransform\", \"patternTransform\"],\n [\"patternunits\", \"patternUnits\"],\n [\"pointsatx\", \"pointsAtX\"],\n [\"pointsaty\", \"pointsAtY\"],\n [\"pointsatz\", \"pointsAtZ\"],\n [\"preservealpha\", \"preserveAlpha\"],\n [\"preserveaspectratio\", \"preserveAspectRatio\"],\n [\"primitiveunits\", \"primitiveUnits\"],\n [\"refx\", \"refX\"],\n [\"refy\", \"refY\"],\n [\"repeatcount\", \"repeatCount\"],\n [\"repeatdur\", \"repeatDur\"],\n [\"requiredextensions\", \"requiredExtensions\"],\n [\"requiredfeatures\", \"requiredFeatures\"],\n [\"specularconstant\", \"specularConstant\"],\n [\"specularexponent\", \"specularExponent\"],\n [\"spreadmethod\", \"spreadMethod\"],\n [\"startoffset\", \"startOffset\"],\n [\"stddeviation\", \"stdDeviation\"],\n [\"stitchtiles\", \"stitchTiles\"],\n [\"surfacescale\", \"surfaceScale\"],\n [\"systemlanguage\", \"systemLanguage\"],\n [\"tablevalues\", \"tableValues\"],\n [\"targetx\", \"targetX\"],\n [\"targety\", \"targetY\"],\n [\"textlength\", \"textLength\"],\n [\"viewbox\", \"viewBox\"],\n [\"viewtarget\", \"viewTarget\"],\n [\"xchannelselector\", \"xChannelSelector\"],\n [\"ychannelselector\", \"yChannelSelector\"],\n [\"zoomandpan\", \"zoomAndPan\"],\n]);\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Module dependencies\n */\nvar ElementType = __importStar(require(\"domelementtype\"));\nvar entities_1 = require(\"entities\");\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nvar foreignNames_1 = require(\"./foreignNames\");\nvar unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n if (!attributes)\n return;\n return Object.keys(attributes)\n .map(function (key) {\n var _a, _b;\n var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = foreignNames_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return key + \"=\\\"\" + (opts.decodeEntities !== false\n ? entities_1.encodeXML(value)\n : value.replace(/\"/g, \""\")) + \"\\\"\";\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nvar singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nfunction render(node, options) {\n if (options === void 0) { options = {}; }\n var nodes = \"length\" in node ? node : [node];\n var output = \"\";\n for (var i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexports.default = render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n case ElementType.Directive:\n case ElementType.Doctype:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nvar foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = foreignNames_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: false });\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: \"foreign\" });\n }\n var tag = \"<\" + elem.name;\n var attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += \" \" + attribs;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += \"\";\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return \"<\" + elem.data + \">\";\n}\nfunction renderText(elem, opts) {\n var data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (opts.decodeEntities !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data = entities_1.encodeXML(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return \"\";\n}\nfunction renderComment(elem) {\n return \"\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for `.\n this.sequenceIndex = Number(c === 60 /* Lt */);\n }\n };\n Tokenizer.prototype.stateCDATASequence = function (c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this._state = 21 /* InCommentLike */;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this._index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this._state = 16 /* InDeclaration */;\n this.stateInDeclaration(c); // Reconsume the character\n }\n };\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n Tokenizer.prototype.fastForwardTo = function (c) {\n while (++this._index < this.buffer.length) {\n if (this.buffer.charCodeAt(this._index) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this._index = this.buffer.length - 1;\n return false;\n };\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n Tokenizer.prototype.stateInCommentLike = function (c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n // Remove 2 trailing chars\n var section = this.buffer.slice(this.sectionStart, this._index - 2);\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(section);\n }\n else {\n this.cbs.oncomment(section);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this._index + 1;\n this._state = 1 /* Text */;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n };\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n Tokenizer.prototype.isTagStartChar = function (c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n };\n Tokenizer.prototype.startSpecial = function (sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this._state = 23 /* SpecialStartSequence */;\n };\n Tokenizer.prototype.stateBeforeTagName = function (c) {\n if (c === 33 /* ExclamationMark */) {\n this._state = 15 /* BeforeDeclaration */;\n this.sectionStart = this._index + 1;\n }\n else if (c === 63 /* Questionmark */) {\n this._state = 17 /* InProcessingInstruction */;\n this.sectionStart = this._index + 1;\n }\n else if (this.isTagStartChar(c)) {\n var lower = c | 0x20;\n this.sectionStart = this._index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this._state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? 22 /* BeforeSpecialS */\n : 3 /* InTagName */;\n }\n }\n else if (c === 47 /* Slash */) {\n this._state = 5 /* BeforeClosingTagName */;\n }\n else {\n this._state = 1 /* Text */;\n this.stateText(c);\n }\n };\n Tokenizer.prototype.stateInTagName = function (c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.getSection());\n this.sectionStart = -1;\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateBeforeClosingTagName = function (c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === 62 /* Gt */) {\n this._state = 1 /* Text */;\n }\n else {\n this._state = this.isTagStartChar(c)\n ? 6 /* InClosingTagName */\n : 20 /* InSpecialComment */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInClosingTagName = function (c) {\n if (c === 62 /* Gt */ || isWhitespace(c)) {\n this.cbs.onclosetag(this.getSection());\n this.sectionStart = -1;\n this._state = 7 /* AfterClosingTagName */;\n this.stateAfterClosingTagName(c);\n }\n };\n Tokenizer.prototype.stateAfterClosingTagName = function (c) {\n // Skip everything until \">\"\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeName = function (c) {\n if (c === 62 /* Gt */) {\n this.cbs.onopentagend();\n if (this.isSpecial) {\n this._state = 24 /* InSpecialTag */;\n this.sequenceIndex = 0;\n }\n else {\n this._state = 1 /* Text */;\n }\n this.baseState = this._state;\n this.sectionStart = this._index + 1;\n }\n else if (c === 47 /* Slash */) {\n this._state = 4 /* InSelfClosingTag */;\n }\n else if (!isWhitespace(c)) {\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInSelfClosingTag = function (c) {\n if (c === 62 /* Gt */) {\n this.cbs.onselfclosingtag();\n this._state = 1 /* Text */;\n this.baseState = 1 /* Text */;\n this.sectionStart = this._index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateInAttributeName = function (c) {\n if (c === 61 /* Eq */ || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.getSection());\n this.sectionStart = -1;\n this._state = 10 /* AfterAttributeName */;\n this.stateAfterAttributeName(c);\n }\n };\n Tokenizer.prototype.stateAfterAttributeName = function (c) {\n if (c === 61 /* Eq */) {\n this._state = 11 /* BeforeAttributeValue */;\n }\n else if (c === 47 /* Slash */ || c === 62 /* Gt */) {\n this.cbs.onattribend(undefined);\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(undefined);\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeValue = function (c) {\n if (c === 34 /* DoubleQuote */) {\n this._state = 12 /* InAttributeValueDq */;\n this.sectionStart = this._index + 1;\n }\n else if (c === 39 /* SingleQuote */) {\n this._state = 13 /* InAttributeValueSq */;\n this.sectionStart = this._index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this._index;\n this._state = 14 /* InAttributeValueNq */;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n };\n Tokenizer.prototype.handleInAttributeValue = function (c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.getSection());\n this.sectionStart = -1;\n this.cbs.onattribend(String.fromCharCode(quote));\n this._state = 8 /* BeforeAttributeName */;\n }\n else if (this.decodeEntities && c === 38 /* Amp */) {\n this.baseState = this._state;\n this._state = 25 /* BeforeEntity */;\n }\n };\n Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {\n this.handleInAttributeValue(c, 34 /* DoubleQuote */);\n };\n Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {\n this.handleInAttributeValue(c, 39 /* SingleQuote */);\n };\n Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {\n if (isWhitespace(c) || c === 62 /* Gt */) {\n this.cbs.onattribdata(this.getSection());\n this.sectionStart = -1;\n this.cbs.onattribend(null);\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === 38 /* Amp */) {\n this.baseState = this._state;\n this._state = 25 /* BeforeEntity */;\n }\n };\n Tokenizer.prototype.stateBeforeDeclaration = function (c) {\n if (c === 91 /* OpeningSquareBracket */) {\n this._state = 19 /* CDATASequence */;\n this.sequenceIndex = 0;\n }\n else {\n this._state =\n c === 45 /* Dash */\n ? 18 /* BeforeComment */\n : 16 /* InDeclaration */;\n }\n };\n Tokenizer.prototype.stateInDeclaration = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.ondeclaration(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateInProcessingInstruction = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.onprocessinginstruction(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeComment = function (c) {\n if (c === 45 /* Dash */) {\n this._state = 21 /* InCommentLike */;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this._index + 1;\n }\n else {\n this._state = 16 /* InDeclaration */;\n }\n };\n Tokenizer.prototype.stateInSpecialComment = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.oncomment(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeSpecialS = function (c) {\n var lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this._state = 3 /* InTagName */;\n this.stateInTagName(c); // Consume the token again\n }\n };\n Tokenizer.prototype.stateBeforeEntity = function (c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n if (c === 35 /* Num */) {\n this._state = 26 /* BeforeNumericEntity */;\n }\n else if (c === 38 /* Amp */) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.trieResult = null;\n this._state = 27 /* InNamedEntity */;\n this.stateInNamedEntity(c);\n }\n };\n Tokenizer.prototype.stateInNamedEntity = function (c) {\n this.entityExcess += 1;\n this.trieIndex = (0, decode_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this._index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n // If the branch is a value, store it and continue\n if (this.trieCurrent & decode_1.BinTrieFlags.HAS_VALUE) {\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== 59 /* Semi */) {\n // No need to consider multi-byte values, as the legacy entity is always a single byte\n this.trieIndex += 1;\n }\n else {\n // Add 1 as we have already incremented the excess\n var entityStart = this._index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));\n }\n // If this is a surrogate pair, combine the higher bits from the node with the next byte\n this.trieResult =\n this.trieCurrent & decode_1.BinTrieFlags.MULTI_BYTE\n ? String.fromCharCode(this.entityTrie[++this.trieIndex], this.entityTrie[++this.trieIndex])\n : String.fromCharCode(this.entityTrie[++this.trieIndex]);\n this.entityExcess = 0;\n this.sectionStart = this._index + 1;\n }\n }\n };\n Tokenizer.prototype.emitNamedEntity = function () {\n if (this.trieResult) {\n this.emitPartial(this.trieResult);\n }\n this._state = this.baseState;\n };\n Tokenizer.prototype.stateBeforeNumericEntity = function (c) {\n if ((c | 0x20) === 120 /* LowerX */) {\n this.entityExcess++;\n this._state = 29 /* InHexEntity */;\n }\n else {\n this._state = 28 /* InNumericEntity */;\n this.stateInNumericEntity(c);\n }\n };\n Tokenizer.prototype.decodeNumericEntity = function (base, strict) {\n var entityStart = this._index - this.entityExcess - 1;\n var numberStart = entityStart + 2 + (base >> 4);\n if (numberStart !== this._index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));\n }\n // Parse entity\n var entity = this.buffer.substring(numberStart, this._index);\n var parsed = parseInt(entity, base);\n this.emitPartial((0, decode_codepoint_1.default)(parsed));\n this.sectionStart = this._index + Number(strict);\n }\n this._state = this.baseState;\n };\n Tokenizer.prototype.stateInNumericEntity = function (c) {\n if (c === 59 /* Semi */) {\n this.decodeNumericEntity(10, true);\n }\n else if (!isNumber(c)) {\n if (this.allowLegacyEntity()) {\n this.decodeNumericEntity(10, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n else {\n this.entityExcess++;\n }\n };\n Tokenizer.prototype.stateInHexEntity = function (c) {\n if (c === 59 /* Semi */) {\n this.decodeNumericEntity(16, true);\n }\n else if ((c < 97 /* LowerA */ || c > 102 /* LowerF */) &&\n (c < 65 /* UpperA */ || c > 70 /* UpperF */) &&\n !isNumber(c)) {\n if (this.allowLegacyEntity()) {\n this.decodeNumericEntity(16, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n else {\n this.entityExcess++;\n }\n };\n Tokenizer.prototype.allowLegacyEntity = function () {\n return (!this.xmlMode &&\n (this.baseState === 1 /* Text */ ||\n this.baseState === 24 /* InSpecialTag */));\n };\n /**\n * Remove data that has already been consumed from the buffer.\n */\n Tokenizer.prototype.cleanup = function () {\n // If we are inside of text, emit what we already have.\n if (this.running &&\n this.sectionStart !== this._index &&\n (this._state === 1 /* Text */ ||\n (this._state === 24 /* InSpecialTag */ &&\n this.sequenceIndex === 0))) {\n // TODO: We could emit attribute data here as well.\n this.cbs.ontext(this.buffer.substr(this.sectionStart));\n this.sectionStart = this._index;\n }\n var start = this.sectionStart < 0 ? this._index : this.sectionStart;\n this.buffer =\n start === this.buffer.length ? \"\" : this.buffer.substr(start);\n this._index -= start;\n this.bufferOffset += start;\n if (this.sectionStart > 0) {\n this.sectionStart = 0;\n }\n };\n Tokenizer.prototype.shouldContinue = function () {\n return this._index < this.buffer.length && this.running;\n };\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n Tokenizer.prototype.parse = function () {\n while (this.shouldContinue()) {\n var c = this.buffer.charCodeAt(this._index);\n if (this._state === 1 /* Text */) {\n this.stateText(c);\n }\n else if (this._state === 23 /* SpecialStartSequence */) {\n this.stateSpecialStartSequence(c);\n }\n else if (this._state === 24 /* InSpecialTag */) {\n this.stateInSpecialTag(c);\n }\n else if (this._state === 19 /* CDATASequence */) {\n this.stateCDATASequence(c);\n }\n else if (this._state === 12 /* InAttributeValueDq */) {\n this.stateInAttributeValueDoubleQuotes(c);\n }\n else if (this._state === 9 /* InAttributeName */) {\n this.stateInAttributeName(c);\n }\n else if (this._state === 21 /* InCommentLike */) {\n this.stateInCommentLike(c);\n }\n else if (this._state === 20 /* InSpecialComment */) {\n this.stateInSpecialComment(c);\n }\n else if (this._state === 8 /* BeforeAttributeName */) {\n this.stateBeforeAttributeName(c);\n }\n else if (this._state === 3 /* InTagName */) {\n this.stateInTagName(c);\n }\n else if (this._state === 6 /* InClosingTagName */) {\n this.stateInClosingTagName(c);\n }\n else if (this._state === 2 /* BeforeTagName */) {\n this.stateBeforeTagName(c);\n }\n else if (this._state === 10 /* AfterAttributeName */) {\n this.stateAfterAttributeName(c);\n }\n else if (this._state === 13 /* InAttributeValueSq */) {\n this.stateInAttributeValueSingleQuotes(c);\n }\n else if (this._state === 11 /* BeforeAttributeValue */) {\n this.stateBeforeAttributeValue(c);\n }\n else if (this._state === 5 /* BeforeClosingTagName */) {\n this.stateBeforeClosingTagName(c);\n }\n else if (this._state === 7 /* AfterClosingTagName */) {\n this.stateAfterClosingTagName(c);\n }\n else if (this._state === 22 /* BeforeSpecialS */) {\n this.stateBeforeSpecialS(c);\n }\n else if (this._state === 14 /* InAttributeValueNq */) {\n this.stateInAttributeValueNoQuotes(c);\n }\n else if (this._state === 4 /* InSelfClosingTag */) {\n this.stateInSelfClosingTag(c);\n }\n else if (this._state === 16 /* InDeclaration */) {\n this.stateInDeclaration(c);\n }\n else if (this._state === 15 /* BeforeDeclaration */) {\n this.stateBeforeDeclaration(c);\n }\n else if (this._state === 18 /* BeforeComment */) {\n this.stateBeforeComment(c);\n }\n else if (this._state === 17 /* InProcessingInstruction */) {\n this.stateInProcessingInstruction(c);\n }\n else if (this._state === 27 /* InNamedEntity */) {\n this.stateInNamedEntity(c);\n }\n else if (this._state === 25 /* BeforeEntity */) {\n this.stateBeforeEntity(c);\n }\n else if (this._state === 29 /* InHexEntity */) {\n this.stateInHexEntity(c);\n }\n else if (this._state === 28 /* InNumericEntity */) {\n this.stateInNumericEntity(c);\n }\n else {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n this._index++;\n }\n this.cleanup();\n };\n Tokenizer.prototype.finish = function () {\n if (this._state === 27 /* InNamedEntity */) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this._index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n };\n /** Handle any trailing data. */\n Tokenizer.prototype.handleTrailingData = function () {\n var data = this.buffer.substr(this.sectionStart);\n if (this._state === 21 /* InCommentLike */) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(data);\n }\n else {\n this.cbs.oncomment(data);\n }\n }\n else if (this._state === 28 /* InNumericEntity */ &&\n this.allowLegacyEntity()) {\n this.decodeNumericEntity(10, false);\n // All trailing data will have been consumed\n }\n else if (this._state === 29 /* InHexEntity */ &&\n this.allowLegacyEntity()) {\n this.decodeNumericEntity(16, false);\n // All trailing data will have been consumed\n }\n else if (this._state === 3 /* InTagName */ ||\n this._state === 8 /* BeforeAttributeName */ ||\n this._state === 11 /* BeforeAttributeValue */ ||\n this._state === 10 /* AfterAttributeName */ ||\n this._state === 9 /* InAttributeName */ ||\n this._state === 13 /* InAttributeValueSq */ ||\n this._state === 12 /* InAttributeValueDq */ ||\n this._state === 14 /* InAttributeValueNq */ ||\n this._state === 6 /* InClosingTagName */) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(data);\n }\n };\n Tokenizer.prototype.getSection = function () {\n return this.buffer.substring(this.sectionStart, this._index);\n };\n Tokenizer.prototype.emitPartial = function (value) {\n if (this.baseState !== 1 /* Text */ &&\n this.baseState !== 24 /* InSpecialTag */) {\n this.cbs.onattribdata(value);\n }\n else {\n this.cbs.ontext(value);\n }\n };\n return Tokenizer;\n}());\nexports.default = Tokenizer;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WritableStream = void 0;\nvar Parser_1 = require(\"./Parser\");\n/*\n * NOTE: If either of these two imports produces a type error,\n * please update your @types/node dependency!\n */\nvar stream_1 = require(\"stream\");\nvar string_decoder_1 = require(\"string_decoder\");\n// Following the example in https://nodejs.org/api/stream.html#stream_decoding_buffers_in_a_writable_stream\nfunction isBuffer(_chunk, encoding) {\n return encoding === \"buffer\";\n}\n/**\n * WritableStream makes the `Parser` interface available as a NodeJS stream.\n *\n * @see Parser\n */\nvar WritableStream = /** @class */ (function (_super) {\n __extends(WritableStream, _super);\n function WritableStream(cbs, options) {\n var _this = _super.call(this, { decodeStrings: false }) || this;\n _this._decoder = new string_decoder_1.StringDecoder();\n _this._parser = new Parser_1.Parser(cbs, options);\n return _this;\n }\n WritableStream.prototype._write = function (chunk, encoding, cb) {\n this._parser.write(isBuffer(chunk, encoding) ? this._decoder.write(chunk) : chunk);\n cb();\n };\n WritableStream.prototype._final = function (cb) {\n this._parser.end(this._decoder.end());\n cb();\n };\n return WritableStream;\n}(stream_1.Writable));\nexports.WritableStream = WritableStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseJsonLd = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst jsonld_streaming_parser_1 = require(\"jsonld-streaming-parser\");\nconst DocumentLoaderMediated_1 = require(\"./DocumentLoaderMediated\");\n/**\n * A JSON-LD RDF Parse actor that listens on the 'rdf-parse' bus.\n *\n * It is able to parse JSON-LD-based RDF serializations and announce the presence of them by media type.\n */\nclass ActorRdfParseJsonLd extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/ld+json\": 1.0,\n * \"application/json\": 0.5\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/ld+json\": \"http://www.w3.org/ns/formats/JSON-LD\",\n * \"application/json\": \"http://www.w3.org/ns/formats/JSON-LD\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async testHandle(action, mediaType, context) {\n if (context.has(context_entries_1.KeysRdfParseHtmlScript.processingHtmlScript) && mediaType !== 'application/ld+json') {\n throw new Error(`JSON-LD in script tags can only have media type 'application/ld+json'`);\n }\n if (!(mediaType in this.mediaTypePriorities) && !mediaType.endsWith('+json')) {\n throw new Error(`Unrecognized media type: ${mediaType}`);\n }\n return await this.testHandleChecked(action);\n }\n async runHandle(action, mediaType, actionContext) {\n const parser = jsonld_streaming_parser_1.JsonLdParser.fromHttpResponse(action.metadata?.baseIRI ?? '', mediaType, action.headers, {\n documentLoader: actionContext.get(context_entries_1.KeysRdfParseJsonLd.documentLoader) ||\n new DocumentLoaderMediated_1.DocumentLoaderMediated(this.mediatorHttp, actionContext),\n strictValues: actionContext.get(context_entries_1.KeysRdfParseJsonLd.strictValues),\n ...actionContext.get(context_entries_1.KeysRdfParseJsonLd.parserOptions),\n });\n const data = parser.import(action.data);\n return { data };\n }\n}\nexports.ActorRdfParseJsonLd = ActorRdfParseJsonLd;\n//# sourceMappingURL=ActorRdfParseJsonLd.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentLoaderMediated = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst stringifyStream = require(\"stream-to-string\");\n/**\n * A JSON-LD document loader that fetches over an HTTP bus using a given mediator.\n */\nclass DocumentLoaderMediated extends jsonld_context_parser_1.FetchDocumentLoader {\n constructor(mediatorHttp, context) {\n super(DocumentLoaderMediated.createFetcher(mediatorHttp, context));\n this.mediatorHttp = mediatorHttp;\n this.context = context;\n }\n static createFetcher(mediatorHttp, context) {\n return async (url, init) => {\n const response = await mediatorHttp.mediate({ input: url, init, context });\n response.json = async () => JSON.parse(await stringifyStream(bus_http_1.ActorHttp.toNodeReadable(response.body)));\n return response;\n };\n }\n}\nexports.DocumentLoaderMediated = DocumentLoaderMediated;\n//# sourceMappingURL=DocumentLoaderMediated.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseJsonLd\"), exports);\n__exportStar(require(\"./DocumentLoaderMediated\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseN3 = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst n3_1 = require(\"n3\");\n/**\n * An N3 RDF Parse actor that listens on the 'rdf-parse' bus.\n *\n * It is able to parse N3-based RDF serializations and announce the presence of them by media type.\n */\nclass ActorRdfParseN3 extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/n-quads\": 1.0,\n * \"application/trig\": 0.95,\n * \"application/n-triples\": 0.8,\n * \"text/turtle\": 0.6,\n * \"text/n3\": 0.35\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/n-quads\": \"http://www.w3.org/ns/formats/N-Quads\",\n * \"application/trig\": \"http://www.w3.org/ns/formats/TriG\",\n * \"application/n-triples\": \"http://www.w3.org/ns/formats/N-Triples\",\n * \"text/turtle\": \"http://www.w3.org/ns/formats/Turtle\",\n * \"text/n3\": \"http://www.w3.org/ns/formats/N3\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new n3_1.StreamParser({ baseIRI: action.metadata?.baseIRI }));\n return {\n data,\n metadata: {\n triples: mediaType === 'text/turtle' ||\n mediaType === 'application/n-triples' ||\n mediaType === 'text/n3',\n },\n };\n }\n}\nexports.ActorRdfParseN3 = ActorRdfParseN3;\n//# sourceMappingURL=ActorRdfParseN3.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseN3\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseRdfXml = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst rdfxml_streaming_parser_1 = require(\"rdfxml-streaming-parser\");\n/**\n * A comunica RDF/XML RDF Parse Actor.\n */\nclass ActorRdfParseRdfXml extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/rdf+xml\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/rdf+xml\": \"http://www.w3.org/ns/formats/RDF_XML\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new rdfxml_streaming_parser_1.RdfXmlParser({ baseIRI: action.metadata?.baseIRI }));\n return {\n data,\n metadata: { triples: true },\n };\n }\n}\nexports.ActorRdfParseRdfXml = ActorRdfParseRdfXml;\n//# sourceMappingURL=ActorRdfParseRdfXml.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseRdfXml\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseXmlRdfa = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst rdfa_streaming_parser_1 = require(\"rdfa-streaming-parser\");\n/**\n * A comunica XML RDFa RDF Parse Actor.\n */\nclass ActorRdfParseXmlRdfa extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/xml\": 1.0,\n * \"text/xml\": 1.0,\n * \"image/svg+xml\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/xml\": \"http://www.w3.org/ns/formats/RDFa\",\n * \"text/xml\": \"http://www.w3.org/ns/formats/RDFa\",\n * \"image/svg+xml\": \"http://www.w3.org/ns/formats/RDFa\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const language = (action.headers && action.headers.get('content-language')) ?? undefined;\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new rdfa_streaming_parser_1.RdfaParser({ baseIRI: action.metadata?.baseIRI, profile: 'xml', language }));\n return { data, metadata: { triples: true } };\n }\n}\nexports.ActorRdfParseXmlRdfa = ActorRdfParseXmlRdfa;\n//# sourceMappingURL=ActorRdfParseXmlRdfa.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseXmlRdfa\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksNext = void 0;\nconst bus_rdf_resolve_hypermedia_links_1 = require(\"@comunica/bus-rdf-resolve-hypermedia-links\");\n/**\n * A comunica Next RDF Resolve Hypermedia Links Actor.\n */\nclass ActorRdfResolveHypermediaLinksNext extends bus_rdf_resolve_hypermedia_links_1.ActorRdfResolveHypermediaLinks {\n constructor(args) {\n super(args);\n }\n async test(action) {\n if (!action.metadata.next) {\n throw new Error(`Actor ${this.name} requires a 'next' metadata entry.`);\n }\n return true;\n }\n async run(action) {\n return { links: [{ url: action.metadata.next }] };\n }\n}\nexports.ActorRdfResolveHypermediaLinksNext = ActorRdfResolveHypermediaLinksNext;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksNext.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksNext\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksQueueFifo = void 0;\nconst bus_rdf_resolve_hypermedia_links_queue_1 = require(\"@comunica/bus-rdf-resolve-hypermedia-links-queue\");\nconst LinkQueueFifo_1 = require(\"./LinkQueueFifo\");\n/**\n * A comunica FIFO RDF Resolve Hypermedia Links Queue Actor.\n */\nclass ActorRdfResolveHypermediaLinksQueueFifo extends bus_rdf_resolve_hypermedia_links_queue_1.ActorRdfResolveHypermediaLinksQueue {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n return { linkQueue: new LinkQueueFifo_1.LinkQueueFifo() };\n }\n}\nexports.ActorRdfResolveHypermediaLinksQueueFifo = ActorRdfResolveHypermediaLinksQueueFifo;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksQueueFifo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkQueueFifo = void 0;\n/**\n * A link queue in FIFO (first-in first-out) order.\n */\nclass LinkQueueFifo {\n constructor() {\n this.links = [];\n }\n push(link) {\n this.links.push(link);\n return true;\n }\n getSize() {\n return this.links.length;\n }\n isEmpty() {\n return this.links.length === 0;\n }\n pop() {\n return this.links.shift();\n }\n peek() {\n return this.links[0];\n }\n}\nexports.LinkQueueFifo = LinkQueueFifo;\n//# sourceMappingURL=LinkQueueFifo.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksQueueFifo\"), exports);\n__exportStar(require(\"./LinkQueueFifo\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaNone = void 0;\nconst actor_rdf_resolve_quad_pattern_rdfjs_source_1 = require(\"@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source\");\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst rdf_store_stream_1 = require(\"rdf-store-stream\");\n/**\n * A comunica None RDF Resolve Hypermedia Actor.\n */\nclass ActorRdfResolveHypermediaNone extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'file');\n }\n async testMetadata(action) {\n return { filterFactor: 0 };\n }\n async run(action) {\n this.logInfo(action.context, `Identified as file source: ${action.url}`);\n return { source: new actor_rdf_resolve_quad_pattern_rdfjs_source_1.RdfJsQuadSource(await (0, rdf_store_stream_1.storeStream)(action.quads)) };\n }\n}\nexports.ActorRdfResolveHypermediaNone = ActorRdfResolveHypermediaNone;\n//# sourceMappingURL=ActorRdfResolveHypermediaNone.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaNone\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaQpf = void 0;\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst RdfSourceQpf_1 = require(\"./RdfSourceQpf\");\n/**\n * A comunica QPF RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveHypermediaQpf extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'qpf');\n }\n async testMetadata(action) {\n const { searchForm } = this.createSource(action.metadata, action.context);\n if (action.handledDatasets && action.handledDatasets[searchForm.dataset]) {\n throw new Error(`Actor ${this.name} can only be applied for the first page of a QPF dataset.`);\n }\n return { filterFactor: 1 };\n }\n /**\n * Look for the search form\n * @param {IActionRdfResolveHypermedia} action the metadata to look for the form.\n * @return {Promise} A promise resolving to a hypermedia form.\n */\n async run(action) {\n this.logInfo(action.context, `Identified as qpf source: ${action.url}`);\n const source = this.createSource(action.metadata, action.context, action.quads);\n return { source, dataset: source.searchForm.dataset };\n }\n createSource(metadata, context, quads) {\n return new RdfSourceQpf_1.RdfSourceQpf(this.mediatorMetadata, this.mediatorMetadataExtract, this.mediatorDereferenceRdf, this.subjectUri, this.predicateUri, this.objectUri, this.graphUri, metadata, context, quads);\n }\n}\nexports.ActorRdfResolveHypermediaQpf = ActorRdfResolveHypermediaQpf;\n//# sourceMappingURL=ActorRdfResolveHypermediaQpf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfSourceQpf = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * An RDF source that executes a quad pattern over a QPF interface and fetches its first page.\n */\nclass RdfSourceQpf {\n constructor(mediatorMetadata, mediatorMetadataExtract, mediatorDereferenceRdf, subjectUri, predicateUri, objectUri, graphUri, metadata, context, initialQuads) {\n this.mediatorMetadata = mediatorMetadata;\n this.mediatorMetadataExtract = mediatorMetadataExtract;\n this.mediatorDereferenceRdf = mediatorDereferenceRdf;\n this.subjectUri = subjectUri;\n this.predicateUri = predicateUri;\n this.objectUri = objectUri;\n this.graphUri = graphUri;\n this.context = context;\n this.cachedQuads = {};\n const searchForm = this.getSearchForm(metadata);\n if (!searchForm) {\n throw new Error('Illegal state: found no TPF/QPF search form anymore in metadata.');\n }\n this.searchForm = searchForm;\n this.defaultGraph = metadata.defaultGraph ? DF.namedNode(metadata.defaultGraph) : undefined;\n if (initialQuads) {\n let wrappedQuads = (0, asynciterator_1.wrap)(initialQuads);\n if (this.defaultGraph) {\n wrappedQuads = this.reverseMapQuadsToDefaultGraph(wrappedQuads);\n }\n wrappedQuads.setProperty('metadata', metadata);\n this.cacheQuads(wrappedQuads, DF.variable(''), DF.variable(''), DF.variable(''), DF.variable(''));\n }\n }\n /**\n * Get a first QPF search form.\n * @param {{[p: string]: any}} metadata A metadata object.\n * @return {ISearchForm} A search form, or null if none could be found.\n */\n getSearchForm(metadata) {\n if (!metadata.searchForms || !metadata.searchForms.values) {\n return;\n }\n // Find a quad pattern or triple pattern search form\n const { searchForms } = metadata;\n for (const searchForm of searchForms.values) {\n if (this.graphUri &&\n this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n this.graphUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 4) {\n return searchForm;\n }\n if (this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 3) {\n return searchForm;\n }\n }\n }\n /**\n * Create a QPF fragment IRI for the given quad pattern.\n * @param {ISearchForm} searchForm A search form.\n * @param {Term} subject A term.\n * @param {Term} predicate A term.\n * @param {Term} object A term.\n * @param {Term} graph A term.\n * @return {string} A URI.\n */\n createFragmentUri(searchForm, subject, predicate, object, graph) {\n const entries = {};\n const input = [\n { uri: this.subjectUri, term: subject },\n { uri: this.predicateUri, term: predicate },\n { uri: this.objectUri, term: object },\n { uri: this.graphUri, term: graph },\n ];\n for (const entry of input) {\n if (entry.uri && entry.term.termType !== 'Variable') {\n entries[entry.uri] = (0, rdf_string_1.termToString)(entry.term);\n }\n }\n return searchForm.getUri(entries);\n }\n match(subject, predicate, object, graph) {\n // If we are querying the default graph,\n // and the source has an overridden value for the default graph (such as QPF can provide),\n // we override the graph parameter with that value.\n let modifiedGraph = false;\n if (this.defaultGraph && graph.termType === 'DefaultGraph') {\n modifiedGraph = true;\n graph = this.defaultGraph;\n }\n // Try to emit from cache\n const cached = this.getCachedQuads(subject, predicate, object, graph);\n if (cached) {\n return cached;\n }\n const quads = new asynciterator_1.TransformIterator(async () => {\n let url = this.createFragmentUri(this.searchForm, subject, predicate, object, graph);\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf.mediate({ context: this.context, url });\n url = dereferenceRdfOutput.url;\n // Determine the metadata and emit it\n const rdfMetadataOuput = await this.mediatorMetadata.mediate({ context: this.context,\n url,\n quads: dereferenceRdfOutput.data,\n triples: dereferenceRdfOutput.metadata?.triples });\n const metadataExtractPromise = this.mediatorMetadataExtract\n .mediate({\n context: this.context,\n url,\n metadata: rdfMetadataOuput.metadata,\n requestTime: dereferenceRdfOutput.requestTime,\n })\n .then(({ metadata }) => quads\n .setProperty('metadata', { ...metadata, canContainUndefs: false }));\n // The server is free to send any data in its response (such as metadata),\n // including quads that do not match the given matter.\n // Therefore, we have to filter away all non-matching quads here.\n const actualDefaultGraph = DF.defaultGraph();\n let filteredOutput = (0, asynciterator_1.wrap)(rdfMetadataOuput.data)\n .transform({\n filter(quad) {\n if ((0, rdf_terms_1.matchPattern)(quad, subject, predicate, object, graph)) {\n return true;\n }\n // Special case: if we are querying in the default graph, and we had an overridden default graph,\n // also accept that incoming triples may be defined in the actual default graph\n return modifiedGraph && (0, rdf_terms_1.matchPattern)(quad, subject, predicate, object, actualDefaultGraph);\n },\n });\n if (modifiedGraph || graph.termType === 'Variable') {\n // Reverse-map the overridden default graph back to the actual default graph\n filteredOutput = this.reverseMapQuadsToDefaultGraph(filteredOutput);\n }\n // Swallow error events, as they will be emitted in the metadata stream as well,\n // and therefore thrown async next.\n filteredOutput.on('error', () => {\n // Do nothing\n });\n // Ensures metadata event is emitted before end-event\n await metadataExtractPromise;\n return filteredOutput;\n }, { autoStart: false });\n this.cacheQuads(quads, subject, predicate, object, graph);\n return this.getCachedQuads(subject, predicate, object, graph);\n }\n reverseMapQuadsToDefaultGraph(quads) {\n const actualDefaultGraph = DF.defaultGraph();\n return quads.map(quad => (0, rdf_terms_1.mapTerms)(quad, (term, key) => key === 'graph' && term.equals(this.defaultGraph) ? actualDefaultGraph : term));\n }\n getPatternId(subject, predicate, object, graph) {\n /* eslint-disable id-length */\n return JSON.stringify({\n s: subject.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(subject),\n p: predicate.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(predicate),\n o: object.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(object),\n g: graph.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(graph),\n });\n /* eslint-enable id-length */\n }\n cacheQuads(quads, subject, predicate, object, graph) {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n this.cachedQuads[patternId] = quads.clone();\n }\n getCachedQuads(subject, predicate, object, graph) {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n const quads = this.cachedQuads[patternId];\n if (quads) {\n return quads.clone();\n }\n }\n}\nexports.RdfSourceQpf = RdfSourceQpf;\n//# sourceMappingURL=RdfSourceQpf.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaQpf\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaSparql = void 0;\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst RdfSourceSparql_1 = require(\"./RdfSourceSparql\");\n/**\n * A comunica SPARQL RDF Resolve Hypermedia Actor.\n */\nclass ActorRdfResolveHypermediaSparql extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'sparql');\n }\n async testMetadata(action) {\n if (!action.forceSourceType && !action.metadata.sparqlService &&\n !(this.checkUrlSuffix && action.url.endsWith('/sparql'))) {\n throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql.`);\n }\n return { filterFactor: 1 };\n }\n async run(action) {\n this.logInfo(action.context, `Identified as sparql source: ${action.url}`);\n const source = new RdfSourceSparql_1.RdfSourceSparql(action.metadata.sparqlService || action.url, action.context, this.mediatorHttp, this.forceHttpGet);\n return { source };\n }\n}\nexports.ActorRdfResolveHypermediaSparql = ActorRdfResolveHypermediaSparql;\n//# sourceMappingURL=ActorRdfResolveHypermediaSparql.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfSourceSparql = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst fetch_sparql_endpoint_1 = require(\"fetch-sparql-endpoint\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\nconst BF = new bindings_factory_1.BindingsFactory();\nconst VAR_COUNT = DF.variable('count');\nclass RdfSourceSparql {\n constructor(url, context, mediatorHttp, forceHttpGet) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n this.endpointFetcher = new fetch_sparql_endpoint_1.SparqlEndpointFetcher({\n method: forceHttpGet ? 'GET' : 'POST',\n fetch: (input, init) => this.mediatorHttp.mediate({ input, init, context: this.context }),\n prefixVariableQuestionMark: true,\n });\n }\n /**\n * Replace all blank nodes in a pattern with variables.\n * If the pattern contains no blank nodes the original pattern gets returned.\n * @param {RDF.BaseQuad} pattern A quad pattern.\n * @return {RDF.BaseQuad} A quad pattern with no blank nodes.\n */\n static replaceBlankNodes(pattern) {\n const variableNames = (0, rdf_terms_1.getVariables)((0, rdf_terms_1.getTerms)(pattern)).map(variableTerm => variableTerm.value);\n // Track the names the blank nodes get mapped to (required if the name has to change)\n const blankMap = {};\n let changed = false;\n // For every position, convert to a variable if there is a blank node\n const result = (0, rdf_terms_1.mapTerms)(pattern, term => {\n if (term.termType === 'BlankNode') {\n let name = term.value;\n if (blankMap[name]) {\n name = blankMap[name];\n }\n else {\n if (variableNames.includes(name)) {\n // Increase index added to name until we find one that is available (2 loops at most)\n let idx = 0;\n while (variableNames.includes(`${name}${idx}`)) {\n ++idx;\n }\n name += idx;\n }\n blankMap[term.value] = name;\n variableNames.push(name);\n }\n changed = true;\n return DF.variable(name);\n }\n return term;\n });\n return changed ? result : pattern;\n }\n /**\n * Convert a quad pattern to a BGP with only that pattern.\n * @param {RDF.pattern} quad A quad pattern.\n * @return {Bgp} A BGP.\n */\n static patternToBgp(pattern) {\n return RdfSourceSparql.FACTORY.createBgp([RdfSourceSparql.FACTORY\n .createPattern(pattern.subject, pattern.predicate, pattern.object, pattern.graph)]);\n }\n /**\n * Convert a quad pattern to a select query for this pattern.\n * @param {RDF.Quad} pattern A quad pattern.\n * @return {string} A select query string.\n */\n static patternToSelectQuery(pattern) {\n const variables = (0, rdf_terms_1.getVariables)((0, rdf_terms_1.getTerms)(pattern));\n return (0, sparqlalgebrajs_1.toSparql)(RdfSourceSparql.FACTORY.createProject(RdfSourceSparql.patternToBgp(pattern), variables));\n }\n /**\n * Convert a quad pattern to a count query for the number of matching triples for this pattern.\n * @param {RDF.Quad} pattern A quad pattern.\n * @return {string} A count query string.\n */\n static patternToCountQuery(pattern) {\n return (0, sparqlalgebrajs_1.toSparql)(RdfSourceSparql.FACTORY.createProject(RdfSourceSparql.FACTORY.createExtend(RdfSourceSparql.FACTORY.createGroup(RdfSourceSparql.patternToBgp(pattern), [], [RdfSourceSparql.FACTORY.createBoundAggregate(DF.variable('var0'), 'count', RdfSourceSparql.FACTORY.createWildcardExpression(), false)]), DF.variable('count'), RdfSourceSparql.FACTORY.createTermExpression(DF.variable('var0'))), [DF.variable('count')]));\n }\n /**\n * Send a SPARQL query to a SPARQL endpoint and retrieve its bindings as a stream.\n * @param {string} endpoint A SPARQL endpoint URL.\n * @param {string} query A SPARQL query string.\n * @return {BindingsStream} A stream of bindings.\n */\n queryBindings(endpoint, query) {\n const rawStream = this.endpointFetcher.fetchBindings(endpoint, query);\n return (0, asynciterator_1.wrap)(rawStream, { autoStart: false, maxBufferSize: Number.POSITIVE_INFINITY })\n .map((rawData) => BF.bindings(Object.entries(rawData)\n .map(([key, value]) => [DF.variable(key.slice(1)), value])));\n }\n match(subject, predicate, object, graph) {\n const pattern = RdfSourceSparql.replaceBlankNodes(RdfSourceSparql.FACTORY.createPattern(subject, predicate, object, graph));\n const countQuery = RdfSourceSparql.patternToCountQuery(pattern);\n const selectQuery = RdfSourceSparql.patternToSelectQuery(pattern);\n // Emit metadata containing the estimated count (reject is never called)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n new Promise(resolve => {\n const bindingsStream = this.queryBindings(this.url, countQuery);\n bindingsStream.on('data', (bindings) => {\n const count = bindings.get(VAR_COUNT);\n if (count) {\n const cardinality = Number.parseInt(count.value, 10);\n if (Number.isNaN(cardinality)) {\n return resolve({ cardinality: Number.POSITIVE_INFINITY });\n }\n return resolve({ cardinality });\n }\n return resolve({ cardinality: Number.POSITIVE_INFINITY });\n });\n bindingsStream.on('error', () => resolve({ cardinality: Number.POSITIVE_INFINITY }));\n bindingsStream.on('end', () => resolve({ cardinality: Number.POSITIVE_INFINITY }));\n })\n .then(metadata => quads.setProperty('metadata', { ...metadata, canContainUndefs: true }));\n // Materialize the queried pattern using each found binding.\n const quads = this.queryBindings(this.url, selectQuery)\n .map((bindings) => (0, rdf_terms_1.mapTerms)(pattern, (value) => {\n if (value.termType === 'Variable') {\n const boundValue = bindings.get(value);\n if (!boundValue) {\n quads.destroy(new Error(`The endpoint ${this.url} failed to provide a binding for ${value.value}.`));\n }\n return boundValue;\n }\n return value;\n }));\n return quads;\n }\n}\nexports.RdfSourceSparql = RdfSourceSparql;\nRdfSourceSparql.FACTORY = new sparqlalgebrajs_1.Factory();\n//# sourceMappingURL=RdfSourceSparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaSparql\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternFederated = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst FederatedQuadSource_1 = require(\"./FederatedQuadSource\");\n/**\n * A comunica Federated RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternFederated extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n this.emptyPatterns = new Map();\n }\n async test(action) {\n const sources = (0, bus_rdf_resolve_quad_pattern_1.getContextSources)(action.context);\n if (!sources) {\n throw new Error(`Actor ${this.name} can only resolve quad pattern queries against a sources array.`);\n }\n return true;\n }\n async getSource(context) {\n return new FederatedQuadSource_1.FederatedQuadSource(this.mediatorResolveQuadPattern, context, this.emptyPatterns, this.skipEmptyPatterns);\n }\n}\nexports.ActorRdfResolveQuadPatternFederated = ActorRdfResolveQuadPatternFederated;\n//# sourceMappingURL=ActorRdfResolveQuadPatternFederated.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FederatedQuadSource = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst data_factory_1 = require(\"@comunica/data-factory\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A FederatedQuadSource can evaluate quad pattern queries over the union of different heterogeneous sources.\n * It will call the given mediator to evaluate each quad pattern query separately.\n */\nclass FederatedQuadSource {\n constructor(mediatorResolveQuadPattern, context, emptyPatterns, skipEmptyPatterns) {\n this.mediatorResolveQuadPattern = mediatorResolveQuadPattern;\n this.sources = context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n this.contextDefault = context.delete(context_entries_1.KeysRdfResolveQuadPattern.sources);\n this.emptyPatterns = emptyPatterns;\n this.sourceIds = context.get(context_entries_1.KeysRdfResolveQuadPattern.sourceIds) ?? new Map();\n this.skipEmptyPatterns = skipEmptyPatterns;\n this.algebraFactory = new sparqlalgebrajs_1.Factory();\n // Initialize sources in the emptyPatterns datastructure\n if (this.skipEmptyPatterns) {\n for (const source of this.sources) {\n if (!this.emptyPatterns.has(source)) {\n this.emptyPatterns.set(source, []);\n }\n }\n }\n }\n /**\n * Check if the given RDF term is not bound to an exact value.\n * I.e., if it is not a Variable.\n * @param {RDF.Term} term An RDF term.\n * @return {boolean} If it is not bound.\n */\n static isTermBound(term) {\n return term.termType !== 'Variable';\n }\n /**\n * Checks if the given (child) pattern is a more bound version of the given (parent) pattern.\n * This will also return true if the patterns are equal.\n * @param {RDF.BaseQuad} child A child pattern.\n * @param {RDF.BaseQuad} parent A parent pattern.\n * @return {boolean} If child is a sub-pattern of parent\n */\n static isSubPatternOf(child, parent) {\n return (!FederatedQuadSource.isTermBound(parent.subject) || parent.subject.equals(child.subject)) &&\n (!FederatedQuadSource.isTermBound(parent.predicate) || parent.predicate.equals(child.predicate)) &&\n (!FederatedQuadSource.isTermBound(parent.object) || parent.object.equals(child.object)) &&\n (!FederatedQuadSource.isTermBound(parent.graph) || parent.graph.equals(child.graph));\n }\n /**\n * If the given term is a blank node, return a deterministic named node for it\n * based on the source id and the blank node value.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n * @return If the given term was a blank node, this will return a skolemized named node, otherwise the original term.\n */\n static skolemizeTerm(term, sourceId) {\n if (term.termType === 'BlankNode') {\n return new data_factory_1.BlankNodeScoped(`bc_${sourceId}_${term.value}`, DF.namedNode(`${FederatedQuadSource.SKOLEM_PREFIX}${sourceId}:${term.value}`));\n }\n return term;\n }\n /**\n * Skolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The skolemized quad.\n */\n static skolemizeQuad(quad, sourceId) {\n return (0, rdf_terms_1.mapTerms)(quad, term => FederatedQuadSource.skolemizeTerm(term, sourceId));\n }\n /**\n * If a given term was a skolemized named node for the given source id,\n * deskolemize it again to a blank node.\n * If the given term was a skolemized named node for another source, return false.\n * If the given term was not a skolemized named node, return the original term.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n */\n static deskolemizeTerm(term, sourceId) {\n if (term.termType === 'BlankNode' && 'skolemized' in term) {\n term = term.skolemized;\n }\n if (term.termType === 'NamedNode' && term.value.startsWith(FederatedQuadSource.SKOLEM_PREFIX)) {\n const colonSeparator = term.value.indexOf(':', FederatedQuadSource.SKOLEM_PREFIX.length);\n const termSourceId = term.value.slice(FederatedQuadSource.SKOLEM_PREFIX.length, colonSeparator);\n // We had a skolemized term\n if (termSourceId === sourceId) {\n // It came from the correct source\n const termLabel = term.value.slice(colonSeparator + 1, term.value.length);\n return DF.blankNode(termLabel);\n }\n // It came from a different source\n return null;\n }\n return term;\n }\n /**\n * Deskolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The deskolemized quad.\n */\n static deskolemizeQuad(quad, sourceId) {\n return (0, rdf_terms_1.mapTerms)(quad, (term) => {\n const newTerm = FederatedQuadSource.deskolemizeTerm(term, sourceId);\n // If the term was skolemized in a different source then dont deskolemize it\n return !newTerm ? term : newTerm;\n });\n }\n /**\n * If the given source is guaranteed to produce an empty result for the given pattern.\n *\n * This prediction is done based on the 'emptyPatterns' datastructure that is stored within this actor.\n * Every time an empty pattern is passed, this pattern is stored in this datastructure for this source.\n * If this pattern (or a more bound pattern) is queried, we know for certain that it will be empty again.\n * This is under the assumption that sources will remain static during query evaluation.\n *\n * @param {IQuerySource} source\n * @param {RDF.BaseQuad} pattern\n * @return {boolean}\n */\n isSourceEmpty(source, pattern) {\n if (!this.skipEmptyPatterns) {\n return false;\n }\n const emptyPatterns = this.emptyPatterns.get(source);\n if (emptyPatterns) {\n for (const emptyPattern of emptyPatterns) {\n if (FederatedQuadSource.isSubPatternOf(pattern, emptyPattern)) {\n return true;\n }\n }\n }\n return false;\n }\n /**\n * Get the unique, deterministic id for the given source.\n * @param source A data source.\n * @return The id of the given source.\n */\n getSourceId(source) {\n let sourceId = this.sourceIds.get(source);\n if (sourceId === undefined) {\n sourceId = `${this.sourceIds.size}`;\n this.sourceIds.set(source, sourceId);\n }\n return sourceId;\n }\n match(subject, predicate, object, graph) {\n // Counters for our metadata\n const metadata = { cardinality: { type: 'exact', value: 0 }, canContainUndefs: false };\n let remainingSources = this.sources.length;\n // Anonymous function to handle cardinality from metadata\n const checkEmitMetadata = (currentTotalItems, source, pattern, lastMetadata) => {\n if (this.skipEmptyPatterns && !currentTotalItems && pattern && !this.isSourceEmpty(source, pattern)) {\n this.emptyPatterns.get(source).push(pattern);\n }\n if (!remainingSources) {\n if (lastMetadata && this.sources.length === 1) {\n // If we only had one source, emit the metadata as-is.\n it.setProperty('metadata', lastMetadata);\n }\n else {\n it.setProperty('metadata', metadata);\n }\n }\n };\n const proxyIt = Promise.all(this.sources.map(async (source) => {\n const sourceId = this.getSourceId(source);\n // Deskolemize terms, so we send the original blank nodes to each source.\n // Note that some sources may not match bnodes by label. SPARQL endpoints for example consider them variables.\n const patternS = FederatedQuadSource.deskolemizeTerm(subject, sourceId);\n const patternP = FederatedQuadSource.deskolemizeTerm(predicate, sourceId);\n const patternO = FederatedQuadSource.deskolemizeTerm(object, sourceId);\n const patternG = FederatedQuadSource.deskolemizeTerm(graph, sourceId);\n let pattern;\n // Prepare the context for this specific source\n let context = (0, bus_rdf_resolve_quad_pattern_1.getDataSourceContext)(source, this.contextDefault);\n context = context.set(context_entries_1.KeysRdfResolveQuadPattern.source, { type: (0, bus_rdf_resolve_quad_pattern_1.getDataSourceType)(source), value: (0, bus_rdf_resolve_quad_pattern_1.getDataSourceValue)(source) });\n let output;\n // If any of the deskolemized blank nodes originate from another source,\n // or if we can predict that the given source will have no bindings for the given pattern,\n // return an empty iterator.\n if (!patternS || !patternP || !patternO || !patternG ||\n // eslint-disable-next-line no-cond-assign\n this.isSourceEmpty(source, pattern = this.algebraFactory\n .createPattern(patternS, patternP, patternO, patternG))) {\n output = { data: new asynciterator_1.ArrayIterator([], { autoStart: false }) };\n output.data.setProperty('metadata', { cardinality: 0, canContainUndefs: false });\n }\n else {\n output = await this.mediatorResolveQuadPattern.mediate({ pattern, context });\n }\n // Handle the metadata from this source\n output.data.getProperty('metadata', (subMetadata) => {\n if (!subMetadata.cardinality || !Number.isFinite(subMetadata.cardinality.value)) {\n // We're already at infinite, so ignore any later metadata\n metadata.cardinality.type = 'estimate';\n metadata.cardinality.value = Number.POSITIVE_INFINITY;\n remainingSources = 0;\n }\n else {\n if (subMetadata.cardinality.type === 'estimate') {\n metadata.cardinality.type = 'estimate';\n }\n metadata.cardinality.value += subMetadata.cardinality.value;\n remainingSources--;\n }\n if (metadata.requestTime || subMetadata.requestTime) {\n metadata.requestTime = metadata.requestTime || 0;\n subMetadata.requestTime = subMetadata.requestTime || 0;\n metadata.requestTime += subMetadata.requestTime;\n }\n if (metadata.pageSize || subMetadata.pageSize) {\n metadata.pageSize = metadata.pageSize || 0;\n subMetadata.pageSize = subMetadata.pageSize || 0;\n metadata.pageSize += subMetadata.pageSize;\n }\n if (subMetadata.canContainUndefs) {\n metadata.canContainUndefs = true;\n }\n checkEmitMetadata(metadata.cardinality.value, source, pattern, subMetadata);\n });\n // Determine the data stream from this source\n let data = output.data.map(quad => FederatedQuadSource.skolemizeQuad(quad, sourceId));\n // SPARQL query semantics allow graph variables to only match with named graphs, excluding the default graph\n if (graph.termType === 'Variable') {\n data = data.filter(quad => quad.graph.termType !== 'DefaultGraph');\n }\n // Forward errors to our final iterator\n data.on('error', error => it.emit('error', error));\n return data;\n }));\n // Take the union of all source streams\n const it = new asynciterator_1.TransformIterator(async () => new asynciterator_1.UnionIterator(await proxyIt), { autoStart: false });\n // If we have 0 sources, immediately emit metadata\n if (this.sources.length === 0) {\n it.setProperty('metadata', metadata);\n }\n return it;\n }\n}\nexports.FederatedQuadSource = FederatedQuadSource;\nFederatedQuadSource.SKOLEM_PREFIX = 'urn:comunica_skolem:source_';\n//# sourceMappingURL=FederatedQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternFederated\"), exports);\n__exportStar(require(\"./FederatedQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternHypermedia = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst LRUCache = require(\"lru-cache\");\nconst MediatedQuadSource_1 = require(\"./MediatedQuadSource\");\n/**\n * A comunica Hypermedia RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternHypermedia extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(({ url }) => url ? cache.del(url) : cache.reset());\n }\n }\n async test(action) {\n const sources = (0, bus_rdf_resolve_quad_pattern_1.hasContextSingleSource)(action.context);\n if (!sources) {\n throw new Error(`Actor ${this.name} can only resolve quad pattern queries against a single source.`);\n }\n return true;\n }\n getSource(context, operation) {\n const contextSource = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(context);\n const url = (0, bus_rdf_resolve_quad_pattern_1.getContextSourceUrl)(contextSource);\n let source;\n // Try to read from cache\n if (this.cache && this.cache.has(url)) {\n source = this.cache.get(url);\n }\n else {\n // If not in cache, create a new source\n source = new MediatedQuadSource_1.MediatedQuadSource(this.cacheSize, context, url, (0, bus_rdf_resolve_quad_pattern_1.getDataSourceType)(contextSource), this.maxIterators, {\n mediatorMetadata: this.mediatorMetadata,\n mediatorMetadataExtract: this.mediatorMetadataExtract,\n mediatorDereferenceRdf: this.mediatorDereferenceRdf,\n mediatorRdfResolveHypermedia: this.mediatorRdfResolveHypermedia,\n mediatorRdfResolveHypermediaLinks: this.mediatorRdfResolveHypermediaLinks,\n mediatorRdfResolveHypermediaLinksQueue: this.mediatorRdfResolveHypermediaLinksQueue,\n });\n // Set in cache\n if (this.cache) {\n this.cache.set(url, source);\n }\n }\n return Promise.resolve(source);\n }\n}\nexports.ActorRdfResolveQuadPatternHypermedia = ActorRdfResolveQuadPatternHypermedia;\n//# sourceMappingURL=ActorRdfResolveQuadPatternHypermedia.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedRdfSourcesAsyncRdfIterator = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\nconst LRUCache = require(\"lru-cache\");\nclass LinkedRdfSourcesAsyncRdfIterator extends asynciterator_1.BufferedIterator {\n constructor(cacheSize, subject, predicate, object, graph, firstUrl, maxIterators) {\n super({ autoStart: true });\n this.started = false;\n this.cacheSize = cacheSize;\n this.subject = subject;\n this.predicate = predicate;\n this.object = object;\n this.graph = graph;\n this.firstUrl = firstUrl;\n this.maxIterators = maxIterators;\n if (this.maxIterators <= 0) {\n throw new Error(`LinkedRdfSourcesAsyncRdfIterator.maxIterators must be larger than zero, but got ${this.maxIterators}`);\n }\n this.currentIterators = [];\n this.iteratorsPendingCreation = 0;\n }\n /**\n * This method can optionally called after constructing an instance\n * for allowing the sources state to be cached.\n *\n * When calling without args, then the default logic will be followed to determine the sources state.\n * When calling with an arg, then the given sources state will be set instead of following the default logic.\n *\n * After calling this method, the `sourcesState` field can be retrieved and optionally cached.\n *\n * This sources state also contains a hash of all handled datasets that will be copied upon first use.\n *\n * @param {ISourcesState} sourcesState An optional sources state.\n */\n setSourcesState(sourcesState) {\n if (sourcesState) {\n this.sourcesState = sourcesState;\n }\n else {\n this.sourcesState = {\n sources: new LRUCache({ max: this.cacheSize }),\n };\n // Ignore the response, we just want the promise to be cached\n this.getSourceCached({ url: this.firstUrl }, {})\n .catch(error => this.destroy(error));\n }\n }\n /**\n * Resolve a source for the given URL.\n * This will first try to retrieve the source from cache.\n * @param link A source ILink.\n * @param handledDatasets A hash of dataset identifiers that have already been handled.\n */\n getSourceCached(link, handledDatasets) {\n let source = this.sourcesState.sources.get(link.url);\n if (source) {\n return source;\n }\n source = this.getSource(link, handledDatasets);\n this.sourcesState.sources.set(link.url, source);\n return source;\n }\n _read(count, done) {\n if (!this.started) {\n // The first time this is called, prepare the first source\n this.started = true;\n // Create a sources state if needed (can be defined if set from actor cache)\n if (!this.sourcesState) {\n this.setSourcesState();\n }\n // Await the source to be set, and start the source iterator\n this.getSourceCached({ url: this.firstUrl }, {})\n .then(sourceState => {\n this.startIterator(sourceState, true);\n done();\n })\n .catch(error => {\n // We can safely ignore this error, since it handled in setSourcesState\n done();\n });\n }\n else {\n // Read from all current iterators\n for (const iterator of this.currentIterators) {\n while (count > 0) {\n const read = iterator.read();\n if (read !== null) {\n count--;\n this._push(read);\n }\n else {\n break;\n }\n }\n if (count <= 0) {\n break;\n }\n }\n // Schedule new iterators if needed\n if (count >= 0 && this.canStartNewIterator()) {\n this.getSourceCached({ url: this.firstUrl }, {})\n .then(sourceState => {\n this.startIteratorsForNextUrls(sourceState.handledDatasets, false);\n done();\n })\n .catch(error => this.destroy(error));\n }\n else {\n done();\n }\n }\n }\n canStartNewIterator() {\n return (this.currentIterators.length + this.iteratorsPendingCreation) < this.maxIterators && !this.readable;\n }\n areIteratorsRunning() {\n return (this.currentIterators.length + this.iteratorsPendingCreation) > 0;\n }\n /**\n * Start a new iterator for the given source.\n * Once the iterator is done, it will either determine a new source, or it will close the linked iterator.\n * @param {ISourceState} startSource The start source state.\n * @param {boolean} emitMetadata If the metadata event should be emitted.\n */\n startIterator(startSource, emitMetadata) {\n // Delegate the quad pattern query to the given source\n const iterator = startSource.source\n .match(this.subject, this.predicate, this.object, this.graph);\n this.currentIterators.push(iterator);\n let receivedMetadata = false;\n // Attach readers to the newly created iterator\n iterator._destination = this;\n iterator.on('error', (error) => this.destroy(error));\n iterator.on('readable', () => this._fillBuffer());\n iterator.on('end', () => {\n this.currentIterators.splice(this.currentIterators.indexOf(iterator), 1);\n // If the metadata was already received, handle the next URL in the queue\n if (receivedMetadata) {\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }\n });\n // Listen for the metadata of the source\n // The metadata property is guaranteed to be set\n iterator.getProperty('metadata', (metadata) => {\n startSource.metadata = { ...startSource.metadata, ...metadata };\n // Emit metadata if needed\n if (emitMetadata) {\n this.setProperty('metadata', startSource.metadata);\n }\n // Determine next urls, which will eventually become a next-next source.\n this.getSourceLinks(startSource.metadata)\n .then((nextUrls) => Promise.all(nextUrls))\n .then(async (nextUrls) => {\n // Append all next URLs to our queue\n const linkQueue = await this.getLinkQueue();\n for (const nextUrl of nextUrls) {\n linkQueue.push(nextUrl, startSource.link);\n }\n receivedMetadata = true;\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }).catch(error => this.destroy(error));\n });\n }\n /**\n * Check if a next URL is in the queue.\n * If yes, start a new iterator.\n * If no, close this iterator.\n * @param handledDatasets\n * @param canClose\n */\n startIteratorsForNextUrls(handledDatasets, canClose) {\n this.getLinkQueue()\n .then(linkQueue => {\n // Create as many new iterators as possible\n while (this.canStartNewIterator() && !this.done) {\n const nextLink = linkQueue.pop();\n if (nextLink) {\n this.iteratorsPendingCreation++;\n this.getSourceCached(nextLink, handledDatasets)\n .then(nextSourceState => {\n this.iteratorsPendingCreation--;\n this.startIterator(nextSourceState, false);\n })\n .catch(error => this.destroy(error));\n }\n else {\n break;\n }\n }\n // Close, only if no other iterators are still running\n if (canClose && linkQueue.isEmpty() && !this.areIteratorsRunning()) {\n this.close();\n }\n })\n .catch(error => this.destroy(error));\n }\n}\nexports.LinkedRdfSourcesAsyncRdfIterator = LinkedRdfSourcesAsyncRdfIterator;\n//# sourceMappingURL=LinkedRdfSourcesAsyncRdfIterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatedLinkedRdfSourcesAsyncRdfIterator = void 0;\nconst stream_1 = require(\"stream\");\nconst LinkedRdfSourcesAsyncRdfIterator_1 = require(\"./LinkedRdfSourcesAsyncRdfIterator\");\n/**\n * An quad iterator that can iterate over consecutive RDF sources\n * that are determined using the rdf-resolve-hypermedia-links bus.\n *\n * @see LinkedRdfSourcesAsyncRdfIterator\n */\nclass MediatedLinkedRdfSourcesAsyncRdfIterator extends LinkedRdfSourcesAsyncRdfIterator_1.LinkedRdfSourcesAsyncRdfIterator {\n constructor(cacheSize, context, forceSourceType, subject, predicate, object, graph, firstUrl, maxIterators, mediators) {\n super(cacheSize, subject, predicate, object, graph, firstUrl, maxIterators);\n this.context = context;\n this.forceSourceType = forceSourceType;\n this.mediatorDereferenceRdf = mediators.mediatorDereferenceRdf;\n this.mediatorMetadata = mediators.mediatorMetadata;\n this.mediatorMetadataExtract = mediators.mediatorMetadataExtract;\n this.mediatorRdfResolveHypermedia = mediators.mediatorRdfResolveHypermedia;\n this.mediatorRdfResolveHypermediaLinks = mediators.mediatorRdfResolveHypermediaLinks;\n this.mediatorRdfResolveHypermediaLinksQueue = mediators.mediatorRdfResolveHypermediaLinksQueue;\n this.handledUrls = { [firstUrl]: true };\n }\n getLinkQueue() {\n if (!this.linkQueue) {\n this.linkQueue = this.mediatorRdfResolveHypermediaLinksQueue\n .mediate({ firstUrl: this.firstUrl, context: this.context })\n .then(result => result.linkQueue);\n }\n return this.linkQueue;\n }\n async getSourceLinks(metadata) {\n try {\n const { links } = await this.mediatorRdfResolveHypermediaLinks.mediate({ context: this.context, metadata });\n // Filter URLs to avoid cyclic next-page loops\n return links.filter(link => {\n if (this.handledUrls[link.url]) {\n return false;\n }\n this.handledUrls[link.url] = true;\n return true;\n });\n }\n catch {\n // No next URLs may be available, for example when we've reached the end of a Hydra next-page sequence.\n return [];\n }\n }\n async getSource(link, handledDatasets) {\n // Include context entries from link\n let context = this.context;\n if (link.context) {\n context = context.merge(link.context);\n }\n // Get the RDF representation of the given document\n let url = link.url;\n let quads;\n let metadata;\n try {\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf\n .mediate({ context, url });\n url = dereferenceRdfOutput.url;\n // Determine the metadata\n const rdfMetadataOutput = await this.mediatorMetadata.mediate({ context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples });\n rdfMetadataOutput.data.on('error', () => {\n // Silence errors in the data stream,\n // as they will be emitted again in the metadata stream,\n // and will result in a promise rejection anyways.\n // If we don't do this, we end up with an unhandled error message\n });\n metadata = (await this.mediatorMetadataExtract.mediate({\n context,\n url,\n // The problem appears to be conflicting metadata keys here\n metadata: rdfMetadataOutput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n quads = rdfMetadataOutput.data;\n // Optionally filter the resulting data\n if (link.transform) {\n quads = await link.transform(quads);\n }\n }\n catch (error) {\n // Make sure that dereference errors are only emitted once an actor really needs the read quads\n // This for example allows SPARQL endpoints that error on service description fetching to still be source-forcible\n quads = new stream_1.Readable();\n quads.read = () => {\n quads.emit('error', error);\n return null;\n };\n metadata = {};\n }\n // Determine the source\n const { source, dataset } = await this.mediatorRdfResolveHypermedia.mediate({\n context,\n forceSourceType: this.forceSourceType,\n handledDatasets,\n metadata,\n quads,\n url,\n });\n if (dataset) {\n // Mark the dataset as applied\n // This is needed to make sure that things like QPF search forms are only applied once,\n // and next page links are followed after that.\n handledDatasets[dataset] = true;\n }\n return { link, source, metadata, handledDatasets };\n }\n}\nexports.MediatedLinkedRdfSourcesAsyncRdfIterator = MediatedLinkedRdfSourcesAsyncRdfIterator;\n//# sourceMappingURL=MediatedLinkedRdfSourcesAsyncRdfIterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatedQuadSource = void 0;\nconst MediatedLinkedRdfSourcesAsyncRdfIterator_1 = require(\"./MediatedLinkedRdfSourcesAsyncRdfIterator\");\n/**\n * A lazy quad source that creates {@link MediatedLinkedRdfSourcesAsyncRdfIterator} instances when matching quads.\n *\n * @see MediatedLinkedRdfSourcesAsyncRdfIterator\n */\nclass MediatedQuadSource {\n constructor(cacheSize, context, firstUrl, forceSourceType, maxIterators, mediators) {\n this.cacheSize = cacheSize;\n this.context = context;\n this.firstUrl = firstUrl;\n this.forceSourceType = forceSourceType;\n this.maxIterators = maxIterators;\n this.mediators = mediators;\n }\n match(subject, predicate, object, graph) {\n const it = new MediatedLinkedRdfSourcesAsyncRdfIterator_1.MediatedLinkedRdfSourcesAsyncRdfIterator(this.cacheSize, this.context, this.forceSourceType, subject, predicate, object, graph, this.firstUrl, this.maxIterators, this.mediators);\n if (!this.sourcesState) {\n it.setSourcesState();\n this.sourcesState = it.sourcesState;\n }\n else {\n it.setSourcesState(this.sourcesState);\n }\n return it;\n }\n}\nexports.MediatedQuadSource = MediatedQuadSource;\n//# sourceMappingURL=MediatedQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternHypermedia\"), exports);\n__exportStar(require(\"./MediatedQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternRdfJsSource = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst RdfJsQuadSource_1 = require(\"./RdfJsQuadSource\");\n/**\n * A comunica RDFJS Source RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternRdfJsSource extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n }\n async test(action) {\n if (!(0, bus_rdf_resolve_quad_pattern_1.hasContextSingleSourceOfType)('rdfjsSource', action.context)) {\n throw new Error(`${this.name} requires a single source with an rdfjsSource to be present in the context.`);\n }\n const source = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(action.context);\n if (!source || typeof source === 'string' || (!('match' in source) && !source.value.match)) {\n throw new Error(`${this.name} received an invalid rdfjsSource.`);\n }\n return true;\n }\n async getSource(context) {\n const source = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(context);\n return new RdfJsQuadSource_1.RdfJsQuadSource('match' in source ? source : source.value);\n }\n}\nexports.ActorRdfResolveQuadPatternRdfJsSource = ActorRdfResolveQuadPatternRdfJsSource;\n//# sourceMappingURL=ActorRdfResolveQuadPatternRdfJsSource.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IRdfJsSourceExtended.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfJsQuadSource = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\n/**\n * A quad source that wraps over an {@link RDF.Source}.\n */\nclass RdfJsQuadSource {\n constructor(source) {\n this.source = source;\n }\n static nullifyVariables(term) {\n return !term || term.termType === 'Variable' ? undefined : term;\n }\n match(subject, predicate, object, graph) {\n // Create an async iterator from the matched quad stream\n const rawStream = this.source.match(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n const it = (0, asynciterator_1.wrap)(rawStream, { autoStart: false });\n // Determine metadata\n this.setMetadata(it, subject, predicate, object, graph)\n .catch(error => it.destroy(error));\n return it;\n }\n async setMetadata(it, subject, predicate, object, graph) {\n let cardinality;\n if (this.source.countQuads) {\n // If the source provides a dedicated method for determining cardinality, use that.\n cardinality = await this.source.countQuads(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n }\n else {\n // Otherwise, fallback to a sub-optimal alternative where we just call match again to count the quads.\n // WARNING: we can NOT reuse the original data stream here,\n // because we may loose data elements due to things happening async.\n let i = 0;\n cardinality = await new Promise((resolve, reject) => {\n const matches = this.source.match(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n matches.on('error', reject);\n matches.on('end', () => resolve(i));\n matches.on('data', () => i++);\n });\n }\n it.setProperty('metadata', { cardinality: { type: 'exact', value: cardinality }, canContainUndefs: false });\n }\n}\nexports.RdfJsQuadSource = RdfJsQuadSource;\n//# sourceMappingURL=RdfJsQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternRdfJsSource\"), exports);\n__exportStar(require(\"./IRdfJsSourceExtended\"), exports);\n__exportStar(require(\"./RdfJsQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeJsonLd = void 0;\nconst bus_rdf_serialize_1 = require(\"@comunica/bus-rdf-serialize\");\nconst jsonld_streaming_serializer_1 = require(\"jsonld-streaming-serializer\");\n/**\n * A comunica Jsonld RDF Serialize Actor.\n */\nclass ActorRdfSerializeJsonLd extends bus_rdf_serialize_1.ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/ld+json\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/ld+json\": \"http://www.w3.org/ns/formats/JSON-LD\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const data = new jsonld_streaming_serializer_1.JsonLdSerializer({ space: ' '.repeat(this.jsonStringifyIndentSpaces) }).import(action.quadStream);\n return { data };\n }\n}\nexports.ActorRdfSerializeJsonLd = ActorRdfSerializeJsonLd;\n//# sourceMappingURL=ActorRdfSerializeJsonLd.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerializeJsonLd\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeN3 = void 0;\nconst bus_rdf_serialize_1 = require(\"@comunica/bus-rdf-serialize\");\nconst n3_1 = require(\"n3\");\n/**\n * A comunica N3 RDF Serialize Actor.\n */\nclass ActorRdfSerializeN3 extends bus_rdf_serialize_1.ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/n-quads\": 1.0,\n * \"application/trig\": 0.95,\n * \"application/n-triples\": 0.8,\n * \"text/turtle\": 0.6,\n * \"text/n3\": 0.35\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/n-quads\": \"http://www.w3.org/ns/formats/N-Quads\",\n * \"application/trig\": \"http://www.w3.org/ns/formats/TriG\",\n * \"application/n-triples\": \"http://www.w3.org/ns/formats/N-Triples\",\n * \"text/turtle\": \"http://www.w3.org/ns/formats/Turtle\",\n * \"text/n3\": \"http://www.w3.org/ns/formats/N3\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const data = new n3_1.StreamWriter({ format: mediaType }).import(action.quadStream);\n return { data,\n triples: mediaType === 'text/turtle' ||\n mediaType === 'application/n-triples' ||\n mediaType === 'text/n3' };\n }\n}\nexports.ActorRdfSerializeN3 = ActorRdfSerializeN3;\n//# sourceMappingURL=ActorRdfSerializeN3.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerializeN3\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaPatchSparqlUpdate = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationPatchSparqlUpdate_1 = require(\"./QuadDestinationPatchSparqlUpdate\");\n/**\n * A comunica Patch SPARQL Update RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaPatchSparqlUpdate extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'patchSparqlUpdate');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType && !action.metadata.patchSparqlUpdate) {\n throw new Error(`Actor ${this.name} could not detect a destination with 'application/sparql-update' as 'Accept-Patch' header.`);\n }\n if (!action.forceDestinationType && !action.exists) {\n throw new Error(`Actor ${this.name} can only patch a destination that already exists.`);\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as patchSparqlUpdate destination: ${action.url}`);\n return {\n destination: new QuadDestinationPatchSparqlUpdate_1.QuadDestinationPatchSparqlUpdate(action.url, action.context, this.mediatorHttp),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaPatchSparqlUpdate = ActorRdfUpdateHypermediaPatchSparqlUpdate;\n//# sourceMappingURL=ActorRdfUpdateHypermediaPatchSparqlUpdate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationPatchSparqlUpdate = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst cross_fetch_1 = require(\"cross-fetch\");\nconst rdf_string_ttl_1 = require(\"rdf-string-ttl\");\n/**\n * A quad destination that represents a resource that is patchable via SPARQL Update.\n */\nclass QuadDestinationPatchSparqlUpdate {\n constructor(url, context, mediatorHttp) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n }\n insert(quads) {\n return this.wrapSparqlUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n return this.wrapSparqlUpdateRequest('DELETE', quads);\n }\n async wrapSparqlUpdateRequest(type, quads) {\n // Wrap triples in DATA block\n const dataWrapped = quads\n .map((quad) => {\n let stringQuad = `${(0, rdf_string_ttl_1.termToString)(quad.subject)} ${(0, rdf_string_ttl_1.termToString)(quad.predicate)} ${(0, rdf_string_ttl_1.termToString)(quad.object)} .`;\n if (quad.graph.termType !== 'DefaultGraph') {\n stringQuad = ` GRAPH ${(0, rdf_string_ttl_1.termToString)(quad.graph)} { ${stringQuad} }\\n`;\n }\n else {\n stringQuad = ` ${stringQuad}\\n`;\n }\n return stringQuad;\n })\n .prepend([`${type} DATA {\\n`])\n .append(['}']);\n const readable = new stream_1.Readable();\n readable._read = () => true;\n dataWrapped.on('data', (quad) => readable.push(quad));\n dataWrapped.on('end', () => readable.push(null));\n // Send data in PUT request\n const headers = new cross_fetch_1.Headers({ 'content-type': 'application/sparql-update' });\n const httpResponse = await this.mediatorHttp.mediate({\n context: this.context,\n init: {\n headers,\n method: 'PATCH',\n body: bus_http_1.ActorHttp.toWebReadableStream(readable),\n },\n input: this.url,\n });\n await (0, bus_rdf_update_quads_1.validateHttpResponse)(this.url, httpResponse);\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n throw new Error(`Patch-based SPARQL Update destinations don't support named graphs`);\n }\n async createGraphs(graphs, requireNonExistence) {\n throw new Error(`Patch-based SPARQL Update destinations don't support named graphs`);\n }\n}\nexports.QuadDestinationPatchSparqlUpdate = QuadDestinationPatchSparqlUpdate;\n//# sourceMappingURL=QuadDestinationPatchSparqlUpdate.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaPatchSparqlUpdate\"), exports);\n__exportStar(require(\"./QuadDestinationPatchSparqlUpdate\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaPutLdp = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationPutLdp_1 = require(\"./QuadDestinationPutLdp\");\n/**\n * A comunica Post LDP RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaPutLdp extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'putLdp');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType) {\n if (!action.metadata.allowHttpMethods || !action.metadata.allowHttpMethods.includes('PUT')) {\n throw new Error(`Actor ${this.name} could not detect a destination with 'Allow: PUT' header.`);\n }\n if (action.exists) {\n throw new Error(`Actor ${this.name} can only put on a destination that does not already exists.`);\n }\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as putLdp destination: ${action.url}`);\n return {\n destination: new QuadDestinationPutLdp_1.QuadDestinationPutLdp(action.url, action.context, action.metadata.putAccepted || [], this.mediatorHttp, this.mediatorRdfSerializeMediatypes, this.mediatorRdfSerialize),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaPutLdp = ActorRdfUpdateHypermediaPutLdp;\n//# sourceMappingURL=ActorRdfUpdateHypermediaPutLdp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationPutLdp = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst cross_fetch_1 = require(\"cross-fetch\");\n/**\n * A quad destination that represents a resource that can be PUT.\n */\nclass QuadDestinationPutLdp {\n constructor(url, context, mediaTypes, mediatorHttp, mediatorRdfSerializeMediatypes, mediatorRdfSerialize) {\n this.url = url;\n this.context = context;\n this.mediaTypes = mediaTypes;\n this.mediatorHttp = mediatorHttp;\n this.mediatorRdfSerializeMediatypes = mediatorRdfSerializeMediatypes;\n this.mediatorRdfSerialize = mediatorRdfSerialize;\n }\n insert(quads) {\n return this.wrapRdfUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n throw new Error(`Put-based LDP destinations don't support deletions`);\n }\n async wrapRdfUpdateRequest(type, quads) {\n // Determine media type for serialization\n const { mediaTypes } = await this.mediatorRdfSerializeMediatypes.mediate({ context: this.context, mediaTypes: true });\n const availableMediaTypes = this.mediaTypes\n .filter(mediaType => mediaType in mediaTypes);\n // Fallback to our own preferred media type\n const mediaType = availableMediaTypes.length > 0 ?\n availableMediaTypes[0] :\n Object.keys(mediaTypes).sort((typeA, typeB) => mediaTypes[typeB] - mediaTypes[typeA])[0];\n // Serialize quads\n const { handle: { data } } = await this.mediatorRdfSerialize.mediate({\n context: this.context,\n handle: { quadStream: quads, context: this.context },\n handleMediaType: mediaType,\n });\n // Send data in (LDP) PUT request\n const headers = new cross_fetch_1.Headers({ 'content-type': mediaType });\n const httpResponse = await this.mediatorHttp.mediate({\n context: this.context,\n init: {\n headers,\n method: 'PUT',\n body: bus_http_1.ActorHttp.toWebReadableStream(data),\n },\n input: this.url,\n });\n await (0, bus_rdf_update_quads_1.validateHttpResponse)(this.url, httpResponse);\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n throw new Error(`Put-based LDP destinations don't support named graphs`);\n }\n async createGraphs(graphs, requireNonExistence) {\n throw new Error(`Put-based LDP destinations don't support named graphs`);\n }\n}\nexports.QuadDestinationPutLdp = QuadDestinationPutLdp;\n//# sourceMappingURL=QuadDestinationPutLdp.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaPutLdp\"), exports);\n__exportStar(require(\"./QuadDestinationPutLdp\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaSparql = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationSparql_1 = require(\"./QuadDestinationSparql\");\n/**\n * A comunica SPARQL RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaSparql extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'sparql');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType && !action.metadata.sparqlService &&\n !(this.checkUrlSuffixSparql && action.url.endsWith('/sparql')) &&\n !(this.checkUrlSuffixUpdate && action.url.endsWith('/update'))) {\n throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql or /update.`);\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as sparql destination: ${action.url}`);\n return {\n destination: new QuadDestinationSparql_1.QuadDestinationSparql(action.metadata.sparqlService || action.url, action.context, this.mediatorHttp),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaSparql = ActorRdfUpdateHypermediaSparql;\n//# sourceMappingURL=ActorRdfUpdateHypermediaSparql.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationSparql = void 0;\nconst fetch_sparql_endpoint_1 = require(\"fetch-sparql-endpoint\");\nconst rdf_string_ttl_1 = require(\"rdf-string-ttl\");\nconst stringifyStream = require('stream-to-string');\n/**\n * A quad destination that represents an LDP resource.\n */\nclass QuadDestinationSparql {\n constructor(url, context, mediatorHttp) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n this.endpointFetcher = new fetch_sparql_endpoint_1.SparqlEndpointFetcher({\n fetch: (input, init) => this.mediatorHttp.mediate({ input, init, context: this.context }),\n prefixVariableQuestionMark: true,\n });\n }\n insert(quads) {\n return this.wrapSparqlUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n return this.wrapSparqlUpdateRequest('DELETE', quads);\n }\n async wrapSparqlUpdateRequest(type, quads) {\n // Wrap triples in DATA block\n const dataWrapped = quads\n .map((quad) => {\n let stringQuad = `${(0, rdf_string_ttl_1.termToString)(quad.subject)} ${(0, rdf_string_ttl_1.termToString)(quad.predicate)} ${(0, rdf_string_ttl_1.termToString)(quad.object)} .`;\n if (quad.graph.termType !== 'DefaultGraph') {\n stringQuad = ` GRAPH ${(0, rdf_string_ttl_1.termToString)(quad.graph)} { ${stringQuad} }\\n`;\n }\n else {\n stringQuad = ` ${stringQuad}\\n`;\n }\n return stringQuad;\n })\n .prepend([`${type} DATA {\\n`])\n .append(['}']);\n // Serialize query stream to string\n const query = await stringifyStream(dataWrapped);\n // Send update query to endpoint\n await this.endpointFetcher.fetchUpdate(this.url, query);\n }\n async deleteGraphs(graphsIn, requireExistence, dropGraphs) {\n const graphs = Array.isArray(graphsIn) ?\n graphsIn :\n [graphsIn];\n const queries = [];\n for (const graph of graphs) {\n let graphValue;\n if (typeof graph === 'string') {\n graphValue = graph;\n }\n else if (graph.termType === 'DefaultGraph') {\n graphValue = 'DEFAULT';\n }\n else {\n graphValue = `GRAPH <${graph.value}>`;\n }\n queries.push(`${dropGraphs ? 'DROP' : 'CLEAR'} ${requireExistence ? '' : 'SILENT '}${graphValue}`);\n }\n await this.endpointFetcher.fetchUpdate(this.url, queries.join('; '));\n }\n async createGraphs(graphs, requireNonExistence) {\n const queries = [];\n for (const graph of graphs) {\n queries.push(`CREATE${requireNonExistence ? '' : ' SILENT'} GRAPH <${graph.value}>`);\n }\n await this.endpointFetcher.fetchUpdate(this.url, queries.join('; '));\n }\n}\nexports.QuadDestinationSparql = QuadDestinationSparql;\n//# sourceMappingURL=QuadDestinationSparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaSparql\"), exports);\n__exportStar(require(\"./QuadDestinationSparql\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsHypermedia = void 0;\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst LRUCache = require(\"lru-cache\");\n/**\n * A comunica Hypermedia RDF Update Quads Actor.\n */\nclass ActorRdfUpdateQuadsHypermedia extends bus_rdf_update_quads_1.ActorRdfUpdateQuadsDestination {\n constructor(args) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(({ url }) => url ? cache.del(url) : cache.reset());\n }\n }\n async test(action) {\n const url = (0, bus_rdf_update_quads_1.getContextDestinationUrl)((0, bus_rdf_update_quads_1.getContextDestination)(action.context));\n if (!url) {\n throw new Error(`Actor ${this.name} can only update quads against a single destination URL.`);\n }\n return true;\n }\n getDestination(context) {\n const dataDestination = (0, bus_rdf_update_quads_1.getContextDestination)(context);\n let url = (0, bus_rdf_update_quads_1.getContextDestinationUrl)(dataDestination);\n // Try to read from cache\n if (this.cache && this.cache.has(url)) {\n return this.cache.get(url);\n }\n // Otherwise, call mediators\n const ret = (async () => {\n let metadata;\n let exists;\n try {\n // Dereference destination URL\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf\n .mediate({ context, url, acceptErrors: true });\n exists = dereferenceRdfOutput.exists;\n url = dereferenceRdfOutput.url;\n // Determine the metadata\n const rdfMetadataOuput = await this.mediatorMetadata.mediate({ context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples });\n metadata = (await this.mediatorMetadataExtract.mediate({\n context,\n url,\n metadata: rdfMetadataOuput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n }\n catch {\n metadata = {};\n exists = false;\n }\n // Obtain destination\n const { destination } = await this.mediatorRdfUpdateHypermedia.mediate({\n context,\n url,\n metadata,\n exists,\n forceDestinationType: (0, bus_rdf_update_quads_1.getDataDestinationType)(dataDestination),\n });\n return destination;\n })();\n if (this.cache) {\n this.cache.set(url, ret);\n }\n return ret;\n }\n}\nexports.ActorRdfUpdateQuadsHypermedia = ActorRdfUpdateQuadsHypermedia;\n//# sourceMappingURL=ActorRdfUpdateQuadsHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuadsHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsRdfJsStore = void 0;\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst RdfJsQuadDestination_1 = require(\"./RdfJsQuadDestination\");\n/**\n * A comunica RDFJS Store RDF Update Quads Actor.\n */\nclass ActorRdfUpdateQuadsRdfJsStore extends bus_rdf_update_quads_1.ActorRdfUpdateQuadsDestination {\n constructor(args) {\n super(args);\n }\n async test(action) {\n const destination = (0, bus_rdf_update_quads_1.getContextDestination)(action.context);\n if (!destination || typeof destination === 'string' ||\n (!('remove' in destination) && 'value' in destination && !destination.value.remove)) {\n throw new Error(`${this.name} received an invalid rdfjsStore.`);\n }\n return true;\n }\n async getDestination(context) {\n const destination = (0, bus_rdf_update_quads_1.getContextDestination)(context);\n return new RdfJsQuadDestination_1.RdfJsQuadDestination('remove' in destination ? destination : destination.value);\n }\n}\nexports.ActorRdfUpdateQuadsRdfJsStore = ActorRdfUpdateQuadsRdfJsStore;\n//# sourceMappingURL=ActorRdfUpdateQuadsRdfJsStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfJsQuadDestination = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A quad destination that wraps around an {@link RDF.Store}.\n */\nclass RdfJsQuadDestination {\n constructor(store) {\n this.store = store;\n }\n promisifyEventEmitter(eventEmitter) {\n return new Promise((resolve, reject) => {\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n delete(quads) {\n return this.promisifyEventEmitter(this.store.remove(quads));\n }\n insert(quads) {\n return this.promisifyEventEmitter(this.store.import(quads));\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n switch (graphs) {\n case 'ALL':\n /* eslint-disable no-fallthrough */\n // Remove the default graph\n await this.promisifyEventEmitter(this.store.deleteGraph(DF.defaultGraph()));\n // Drop through to remove all named graphs\n case 'NAMED':\n /* eslint-enable no-fallthrough */\n // Warning: this is sub-optimal!\n // Query ALL quads to determine all named graphs\n // eslint-disable-next-line no-case-declarations\n const allQuads = this.store.match();\n // eslint-disable-next-line no-case-declarations\n const namedGraphs = {};\n allQuads.on('data', (quad) => {\n if (quad.graph.termType !== 'DefaultGraph') {\n namedGraphs[(0, rdf_string_1.termToString)(quad.graph)] = true;\n }\n });\n await this.promisifyEventEmitter(allQuads);\n // Delete all named graphs\n await Promise.all(Object.keys(namedGraphs)\n .map(namedGraph => this.promisifyEventEmitter(this.store\n .deleteGraph((0, rdf_string_1.stringToTerm)(namedGraph)))));\n break;\n default:\n // Delete the default graph or a named graph\n for (const graph of Array.isArray(graphs) ? graphs : [graphs]) {\n await this.promisifyEventEmitter(this.store.deleteGraph(graph));\n }\n }\n }\n async createGraphs(graphs, requireNonExistence) {\n // We don't have to create anything, since RDF/JS stores don't record empty graphs.\n // The only check we have to do is error on existence\n if (requireNonExistence) {\n for (const graph of graphs) {\n const eventEmitter = this.store.match(undefined, undefined, undefined, graph);\n await new Promise((resolve, reject) => {\n eventEmitter.once('data', () => {\n reject(new Error(`Unable to create graph ${graph.value} as it already exists`));\n });\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n }\n }\n}\nexports.RdfJsQuadDestination = RdfJsQuadDestination;\n//# sourceMappingURL=RdfJsQuadDestination.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuadsRdfJsStore\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bindings = void 0;\nconst immutable_1 = require(\"immutable\");\nconst bindingsToString_1 = require(\"./bindingsToString\");\n/**\n * An immutable.js-based Bindings object.\n */\nclass Bindings {\n constructor(dataFactory, entries) {\n this.type = 'bindings';\n this.dataFactory = dataFactory;\n this.entries = entries;\n }\n has(key) {\n return this.entries.has(typeof key === 'string' ? key : key.value);\n }\n get(key) {\n return this.entries.get(typeof key === 'string' ? key : key.value);\n }\n set(key, value) {\n return new Bindings(this.dataFactory, this.entries.set(typeof key === 'string' ? key : key.value, value));\n }\n delete(key) {\n return new Bindings(this.dataFactory, this.entries.delete(typeof key === 'string' ? key : key.value));\n }\n keys() {\n return this.mapIterable(this.iteratorToIterable(this.entries.keys()), key => this.dataFactory.variable(key));\n }\n values() {\n return this.iteratorToIterable(this.entries.values());\n }\n forEach(fn) {\n this.entries.forEach((value, key) => fn(value, this.dataFactory.variable(key)));\n }\n get size() {\n return this.entries.size;\n }\n [Symbol.iterator]() {\n return this.mapIterable(this.iteratorToIterable(this.entries.entries()), ([key, value]) => [this.dataFactory.variable(key), value])[Symbol.iterator]();\n }\n equals(other) {\n if (!other) {\n return false;\n }\n if (this === other) {\n return true;\n }\n // First check if size is equal\n if (this.size !== other.size) {\n return false;\n }\n // Then check if keys and values are equal\n for (const key of this.keys()) {\n if (!this.get(key)?.equals(other.get(key))) {\n return false;\n }\n }\n return true;\n }\n filter(fn) {\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(this.entries\n .filter((value, key) => fn(value, this.dataFactory.variable(key)))));\n }\n map(fn) {\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(this.entries\n .map((value, key) => fn(value, this.dataFactory.variable(key)))));\n }\n merge(other) {\n // Determine the union of keys\n const keys = new Set([\n ...this.iteratorToIterable(this.entries.keys()),\n ...[...other.keys()].map(key => key.value),\n ]);\n // Collect entries\n const entries = [];\n for (const key of keys) {\n const left = this.entries.get(key);\n const right = other.get(this.dataFactory.variable(key));\n if (left && right && !left.equals(right)) {\n return;\n }\n const value = left || right;\n entries.push([key, value]);\n }\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(entries));\n }\n mergeWith(merger, other) {\n // Determine the union of keys\n const keys = new Set([\n ...this.iteratorToIterable(this.entries.keys()),\n ...[...other.keys()].map(key => key.value),\n ]);\n // Collect entries\n const entries = [];\n for (const key of keys) {\n const variable = this.dataFactory.variable(key);\n const left = this.entries.get(key);\n const right = other.get(variable);\n let value;\n if (left && right && !left.equals(right)) {\n value = merger(left, right, variable);\n }\n else {\n value = left || right;\n }\n entries.push([key, value]);\n }\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(entries));\n }\n toString() {\n return (0, bindingsToString_1.bindingsToString)(this);\n }\n *mapIterable(iterable, callback) {\n for (const x of iterable) {\n // eslint-disable-next-line callback-return\n yield callback(x);\n }\n }\n iteratorToIterable(iterator) {\n return {\n [Symbol.iterator]: () => iterator,\n };\n }\n}\nexports.Bindings = Bindings;\n//# sourceMappingURL=Bindings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingsFactory = void 0;\nconst immutable_1 = require(\"immutable\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst Bindings_1 = require(\"./Bindings\");\n/**\n * A Bindings factory that provides Bindings backed by immutable.js.\n */\nclass BindingsFactory {\n constructor(dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.dataFactory = dataFactory;\n }\n bindings(entries = []) {\n return new Bindings_1.Bindings(this.dataFactory, (0, immutable_1.Map)(entries.map(([key, value]) => [key.value, value])));\n }\n fromBindings(bindings) {\n return this.bindings([...bindings]);\n }\n fromRecord(record) {\n return this.bindings(Object.entries(record).map(([key, value]) => [this.dataFactory.variable(key), value]));\n }\n}\nexports.BindingsFactory = BindingsFactory;\n//# sourceMappingURL=BindingsFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindingsToString = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * Stringify a bindings object.\n * @param bindings A bindings object.\n */\nfunction bindingsToString(bindings) {\n const raw = {};\n for (const key of bindings.keys()) {\n raw[key.value] = (0, rdf_string_1.termToString)(bindings.get(key));\n }\n return JSON.stringify(raw, null, ' ');\n}\nexports.bindingsToString = bindingsToString;\n//# sourceMappingURL=bindingsToString.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Bindings\"), exports);\n__exportStar(require(\"./BindingsFactory\"), exports);\n__exportStar(require(\"./bindingsToString\"), exports);\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorContextPreprocess = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for context-preprocess events.\n *\n * Actor types:\n * * Input: IAction: A context that will be processed.\n * * Test: \n * * Output: IActorContextPreprocessOutput: The resulting context.\n *\n * @see IActionContextPreprocess\n * @see IActorContextPreprocessOutput\n */\nclass ActorContextPreprocess extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorContextPreprocess = ActorContextPreprocess;\n//# sourceMappingURL=ActorContextPreprocess.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorContextPreprocess\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceRdf = void 0;\nconst bus_dereference_1 = require(\"@comunica/bus-dereference\");\n/**\n * A base actor for dereferencing URLs to quad streams.\n *\n * Actor types:\n * * Input: IActionDereferenceRdf: A URL.\n * * Test: \n * * Output: IActorDereferenceRdfOutput: A quad stream.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorDereferenceRdf extends bus_dereference_1.ActorDereferenceParse {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorDereferenceRdf = ActorDereferenceRdf;\n//# sourceMappingURL=ActorDereferenceRdf.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorDereferenceRdf\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereference = void 0;\nconst ActorDereferenceBase_1 = require(\"./ActorDereferenceBase\");\n/**\n * A base actor for dereferencing URLs to (generic) streams.\n *\n * Actor types:\n * * Input: IActionDereference: A URL.\n * * Test: \n * * Output: IActorDereferenceOutput: A Readable stream\n *\n * @see IActionDereference\n * @see IActorDereferenceOutput\n */\nclass ActorDereference extends ActorDereferenceBase_1.ActorDereferenceBase {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Handle the given error as a rejection or delegate it to the logger,\n * depending on whether or not hard errors are enabled.\n * @param {IActionDereference} action A dereference action.\n * @param {Error} error An error that has occurred.\n * @param headers Optional HTTP headers to pass.\n * @param {number} requestTime The time it took to request the page in milliseconds.\n * @return {Promise} A promise that rejects or resolves to an empty output.\n */\n async handleDereferenceErrors(action, error, headers, requestTime = 0) {\n return this.dereferenceErrorHandler(action, error, { url: action.url, exists: false, headers, requestTime });\n }\n}\nexports.ActorDereference = ActorDereference;\n//# sourceMappingURL=ActorDereference.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceBase = exports.isHardError = exports.emptyReadable = void 0;\nconst stream_1 = require(\"stream\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nfunction emptyReadable() {\n const data = new stream_1.Readable();\n data.push(null);\n return data;\n}\nexports.emptyReadable = emptyReadable;\n/**\n * Check if hard errors should occur on HTTP or parse errors.\n * @param {IActionDereference} action A dereference action.\n * @return {boolean} If hard errors are enabled.\n */\nfunction isHardError(context) {\n return !context.get(context_entries_1.KeysInitQuery.lenient);\n}\nexports.isHardError = isHardError;\n/**\n * A base actor for dereferencing URLs to (generic) streams.\n *\n * Actor types:\n * * Input: IActionDereference: A URL.\n * * Test: \n * * Output: IActorDereferenceOutput: A Readable stream\n *\n * @see IActionDereference\n * @see IActorDereferenceOutput\n */\nclass ActorDereferenceBase extends core_1.Actor {\n constructor(args) {\n super(args);\n }\n /**\n * Handle the given error as a rejection or delegate it to the logger,\n * depending on whether or not hard errors are enabled.\n * @param {I} action An action.\n * @param {Error} error An error that has occurred.\n * @param {N} output Data to add to the output\n */\n async dereferenceErrorHandler(action, error, output) {\n if (isHardError(action.context)) {\n throw error;\n }\n this.logError(action.context, error.message);\n return { ...output, data: emptyReadable() };\n }\n}\nexports.ActorDereferenceBase = ActorDereferenceBase;\n//# sourceMappingURL=ActorDereferenceBase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceParse = exports.getMediaTypeFromExtension = void 0;\nconst stream_1 = require(\"stream\");\nconst ActorDereferenceBase_1 = require(\"./ActorDereferenceBase\");\n/**\n * Get the media type based on the extension of the given path,\n * which can be an URL or file path.\n * @param {string} path A path.\n * @param {Record} mediaMappings A collection of mappings,\n * mapping file extensions to their corresponding media type.\n * @return {string} A media type or the empty string.\n */\nfunction getMediaTypeFromExtension(path, mediaMappings) {\n const dotIndex = path.lastIndexOf('.');\n // Get extension after last dot and map to media\n return (dotIndex >= 0 && mediaMappings?.[path.slice(dotIndex + 1)]) || '';\n}\nexports.getMediaTypeFromExtension = getMediaTypeFromExtension;\n/**\n * An abstract actor that handles dereference and parse actions.\n *\n * Actor types:\n * Input: IActionDereferenceParse: A URL.\n * Test: \n * Output: IActorDereferenceParseOutput: A data stream of type output by the Parser.\n *\n */\nclass ActorDereferenceParse extends ActorDereferenceBase_1.ActorDereferenceBase {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n /**\n * If hard errors are disabled, modify the given stream so that errors are delegated to the logger.\n * @param {IActionDereferenceParse} action A dereference action.\n * @param {Readable} data A data stream.\n * @return {Readable} The resulting data stream.\n */\n handleDereferenceStreamErrors(action, data) {\n // If we don't emit hard errors, make parsing error events log instead, and silence them downstream.\n if (!(0, ActorDereferenceBase_1.isHardError)(action.context)) {\n data.on('error', error => {\n this.logError(action.context, error.message, () => ({ url: action.url }));\n // Make sure the errored stream is ended.\n data.push(null);\n });\n data = data.pipe(new stream_1.PassThrough({ objectMode: true }));\n }\n return data;\n }\n async run(action) {\n const { context } = action;\n const dereference = await this.mediatorDereference.mediate({\n ...action,\n mediaTypes: async () => (await this.mediatorParseMediatypes?.mediate({ context, mediaTypes: true }))?.mediaTypes,\n });\n let result;\n try {\n result = (await this.mediatorParse.mediate({\n context,\n handle: { context, ...dereference, metadata: await this.getMetadata(dereference) },\n handleMediaType: dereference.mediaType ||\n getMediaTypeFromExtension(dereference.url, this.mediaMappings) ||\n action.mediaType,\n })).handle;\n result.data = this.handleDereferenceStreamErrors(action, result.data);\n }\n catch (error) {\n // Close the body, to avoid process to hang\n await dereference.data.close?.();\n result = await this.dereferenceErrorHandler(action, error, {});\n }\n // Return the parsed stream and any metadata\n return { ...dereference, ...result };\n }\n}\nexports.ActorDereferenceParse = ActorDereferenceParse;\n//# sourceMappingURL=ActorDereferenceParse.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorDereference\"), exports);\n__exportStar(require(\"./ActorDereferenceParse\"), exports);\n__exportStar(require(\"./ActorDereferenceBase\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHashBindings = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for hash-bindings events.\n *\n * Actor types:\n * * Input: IActionHashBindings: Metadata for selecting a hash function.\n * * Test: IActorTest:\n * * Output: IActorHashBindingsOutput: The resulting hash function.\n *\n * @see IActionHashBindings\n * @see IActorHashBindingsTest\n * @see IActorHashBindingsOutput\n */\nclass ActorHashBindings extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorHashBindings = ActorHashBindings;\n//# sourceMappingURL=ActorHashBindings.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHashBindings\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttpInvalidate = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for http-invalidate events.\n *\n * Actor types:\n * * Input: IActionHttpInvalidate: An action for invalidating the cached contents of given URL.\n * * Test: \n * * Output: IActorHttpInvalidateOutput: An empty response.\n *\n * @see IActionHttpInvalidate\n * @see IActorHttpInvalidateOutput\n */\nclass ActorHttpInvalidate extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorHttpInvalidate = ActorHttpInvalidate;\n//# sourceMappingURL=ActorHttpInvalidate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttpInvalidateListenable = void 0;\nconst ActorHttpInvalidate_1 = require(\"./ActorHttpInvalidate\");\n/**\n * An ActorHttpInvalidate actor that allows listeners to be attached.\n *\n * @see ActorHttpInvalidate\n */\nclass ActorHttpInvalidateListenable extends ActorHttpInvalidate_1.ActorHttpInvalidate {\n constructor(args) {\n super(args);\n this.invalidateListeners = [];\n this.invalidateListeners = [];\n }\n addInvalidateListener(listener) {\n this.invalidateListeners.push(listener);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n for (const listener of this.invalidateListeners) {\n listener(action);\n }\n return {};\n }\n}\nexports.ActorHttpInvalidateListenable = ActorHttpInvalidateListenable;\n//# sourceMappingURL=ActorHttpInvalidateListenable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttpInvalidate\"), exports);\n__exportStar(require(\"./ActorHttpInvalidateListenable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttp = void 0;\nconst core_1 = require(\"@comunica/core\");\nconst readable_web_to_node_stream_1 = require(\"readable-web-to-node-stream\");\nconst isStream = require('is-stream');\nconst toWebReadableStream = require('web-streams-node').toWebReadableStream;\n/**\n * A base actor for listening to HTTP events.\n *\n * Actor types:\n * * Input: IActionHttp: The HTTP request.\n * * Test: IActorHttpTest: An estimate for the response time.\n * * Output: IActorHttpOutput: The HTTP response.\n *\n * @see IActionHttp\n * @see IActorHttpTest\n * @see IActorHttpOutput\n */\nclass ActorHttp extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Converts WhatWG streams to Node streams if required.\n * Returns the input in case the stream already is a Node stream.\n * @param {ReadableStream} body\n * @returns {NodeJS.ReadableStream}\n */\n static toNodeReadable(body) {\n return isStream(body) || body === null ?\n body :\n new readable_web_to_node_stream_1.ReadableWebToNodeStream(body);\n }\n /**\n * Converts Node streams to WhatWG streams.\n * @param {NodeJS.ReadableStream} body\n * @returns {ReadableStream}\n */\n static toWebReadableStream(body) {\n return toWebReadableStream(body);\n }\n /**\n * Convert the given headers object into a raw hash.\n * @param headers A headers object.\n */\n static headersToHash(headers) {\n const hash = {};\n headers.forEach((value, key) => {\n hash[key] = value;\n });\n return hash;\n }\n}\nexports.ActorHttp = ActorHttp;\n//# sourceMappingURL=ActorHttp.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttp\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorInit = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A base actor for listening to init events.\n *\n * Actor types:\n * * Input: IActionInit: Contains process information\n * such as the list of arguments,\n * environment variables and input stream.\n * * Test: \n * * Output: IActorOutputInit: Contains process output streams.\n *\n * @see IActionInit\n */\nclass ActorInit extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorInit = ActorInit;\n//# sourceMappingURL=ActorInit.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorInit\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorOptimizeQueryOperation = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for optimize-query-operation events.\n *\n * Actor types:\n * * Input: IActionOptimizeQueryOperation: An incoming SPARQL operation.\n * * Test: \n * * Output: IActorOptimizeQueryOperationOutput: A (possibly optimized) outgoing SPARQL operation.\n *\n * @see IActionOptimizeQueryOperation\n * @see IActorOptimizeQueryOperationOutput\n */\nclass ActorOptimizeQueryOperation extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorOptimizeQueryOperation = ActorOptimizeQueryOperation;\n//# sourceMappingURL=ActorOptimizeQueryOperation.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorOptimizeQueryOperation\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperation = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst data_factory_1 = require(\"@comunica/data-factory\");\nconst Bindings_1 = require(\"./Bindings\");\n/**\n * A counter that keeps track blank node generated through BNODE() SPARQL\n * expressions.\n *\n * @type {number}\n */\nlet bnodeCounter = 0;\n/**\n * A comunica actor for query-operation events.\n *\n * Actor types:\n * * Input: IActionQueryOperation: A SPARQL Algebra operation.\n * * Test: \n * * Output: IActorQueryOperationOutput: A bindings stream.\n *\n * @see IActionQueryOperation\n * @see IQueryOperationResult\n */\nclass ActorQueryOperation extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Safely cast a query operation output to a bindings output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBindings} A bindings query operation output.\n */\n static getSafeBindings(output) {\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n return output;\n }\n /**\n * Safely cast a query operation output to a quads output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultQuads} A quads query operation output.\n */\n static getSafeQuads(output) {\n ActorQueryOperation.validateQueryOutput(output, 'quads');\n return output;\n }\n /**\n * Safely cast a query operation output to a boolean output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBoolean} A boolean query operation output.\n */\n static getSafeBoolean(output) {\n ActorQueryOperation.validateQueryOutput(output, 'boolean');\n return output;\n }\n /**\n * Safely cast a query operation output to a void output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultVoid} A void query operation output.\n */\n static getSafeVoid(output) {\n ActorQueryOperation.validateQueryOutput(output, 'void');\n return output;\n }\n /**\n * Convert a metadata callback to a lazy callback where the response value is cached.\n * @param {() => Promise} metadata A metadata callback\n * @return {() => Promise<{[p: string]: any}>} The callback where the response will be cached.\n */\n static cachifyMetadata(metadata) {\n let lastReturn;\n // eslint-disable-next-line no-return-assign,@typescript-eslint/no-misused-promises\n return () => (lastReturn || (lastReturn = metadata()));\n }\n /**\n * Throw an error if the output type does not match the expected type.\n * @param {IQueryOperationResult} output A query operation output.\n * @param {string} expectedType The expected output type.\n */\n static validateQueryOutput(output, expectedType) {\n if (output.type !== expectedType) {\n throw new Error(`Invalid query output type: Expected '${expectedType}' but got '${output.type}'`);\n }\n }\n static getBaseExpressionContext(context) {\n const now = context.get(context_entries_1.KeysInitQuery.queryTimestamp);\n const baseIRI = context.get(context_entries_1.KeysInitQuery.baseIRI);\n // Handle two variants of providing extension functions\n if (context.has(context_entries_1.KeysInitQuery.extensionFunctionCreator) && context.has(context_entries_1.KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n let extensionFunctionCreator = context\n .get(context_entries_1.KeysInitQuery.extensionFunctionCreator);\n // Convert dictionary-based variant to callback\n const extensionFunctions = context\n .get(context_entries_1.KeysInitQuery.extensionFunctions);\n if (extensionFunctions) {\n extensionFunctionCreator = functionNamedNode => extensionFunctions[functionNamedNode.value];\n }\n return { now, baseIRI, extensionFunctionCreator };\n }\n /**\n * Create an options object that can be used to construct a sparqlee synchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n static getExpressionContext(context, mediatorQueryOperation) {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input) => new data_factory_1.BlankNodeBindingsScoped(input || `BNODE_${bnodeCounter++}`),\n };\n }\n /**\n * Create an options object that can be used to construct a sparqlee asynchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n static getAsyncExpressionContext(context, mediatorQueryOperation) {\n const expressionContext = {\n ...this.getBaseExpressionContext(context),\n bnode: (input) => Promise.resolve(new data_factory_1.BlankNodeBindingsScoped(input || `BNODE_${bnodeCounter++}`)),\n };\n if (mediatorQueryOperation) {\n expressionContext.exists = ActorQueryOperation.createExistenceResolver(context, mediatorQueryOperation);\n }\n return expressionContext;\n }\n /**\n * Create an existence resolver for usage within an expression context.\n * @param context An action context.\n * @param mediatorQueryOperation A query operation mediator.\n */\n static createExistenceResolver(context, mediatorQueryOperation) {\n return async (expr, bindings) => {\n const operation = (0, Bindings_1.materializeOperation)(expr.input, bindings);\n const outputRaw = await mediatorQueryOperation.mediate({ operation, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n return new Promise((resolve, reject) => {\n output.bindingsStream.on('end', () => {\n resolve(false);\n });\n output.bindingsStream.on('error', reject);\n output.bindingsStream.on('data', () => {\n output.bindingsStream.close();\n resolve(true);\n });\n })\n .then((exists) => expr.not ? !exists : exists);\n };\n }\n /**\n * Throw an error if the context contains the readOnly flag.\n * @param context An action context.\n */\n static throwOnReadOnly(context) {\n if (context.get(context_entries_1.KeysQueryOperation.readOnly)) {\n throw new Error(`Attempted a write operation in read-only mode`);\n }\n }\n}\nexports.ActorQueryOperation = ActorQueryOperation;\n//# sourceMappingURL=ActorQueryOperation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationTyped = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst ActorQueryOperation_1 = require(\"./ActorQueryOperation\");\n/**\n * A base implementation for query operation actors for a specific operation type.\n */\nclass ActorQueryOperationTyped extends ActorQueryOperation_1.ActorQueryOperation {\n constructor(args, operationName) {\n super({ ...args, operationName });\n if (!this.operationName) {\n throw new Error('A valid \"operationName\" argument must be provided.');\n }\n }\n async test(action) {\n if (!action.operation) {\n throw new Error('Missing field \\'operation\\' in a query operation action.');\n }\n if (action.operation.type !== this.operationName) {\n throw new Error(`Actor ${this.name} only supports ${this.operationName} operations, but got ${action.operation.type}`);\n }\n const operation = action.operation;\n return this.testOperation(operation, action.context);\n }\n async run(action) {\n // Log to physical plan\n const physicalQueryPlanLogger = action.context\n .get(context_entries_1.KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(action.operation.type, undefined, action.operation, action.context.get(context_entries_1.KeysInitQuery.physicalQueryPlanNode), this.name, {});\n action.context = action.context.set(context_entries_1.KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n const operation = action.operation;\n const subContext = action.context.set(context_entries_1.KeysQueryOperation.operation, operation);\n const output = await this.runOperation(operation, subContext);\n if ('metadata' in output) {\n output.metadata = ActorQueryOperation_1.ActorQueryOperation\n .cachifyMetadata(output.metadata);\n }\n return output;\n }\n}\nexports.ActorQueryOperationTyped = ActorQueryOperationTyped;\n//# sourceMappingURL=ActorQueryOperationTyped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationTypedMediated = void 0;\nconst ActorQueryOperationTyped_1 = require(\"./ActorQueryOperationTyped\");\n/**\n * A base implementation for query operation actors for a specific operation type that have a query operation mediator.\n */\nclass ActorQueryOperationTypedMediated extends ActorQueryOperationTyped_1.ActorQueryOperationTyped {\n constructor(args, operationName) {\n super(args, operationName);\n }\n}\nexports.ActorQueryOperationTypedMediated = ActorQueryOperationTypedMediated;\n//# sourceMappingURL=ActorQueryOperationTypedMediated.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.materializeOperation = exports.materializeTerm = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * Materialize a term with the given binding.\n *\n * If the given term is a variable,\n * and that variable exist in the given bindings object,\n * the value of that binding is returned.\n * In all other cases, the term itself is returned.\n *\n * @param {RDF.Term} term A term.\n * @param {Bindings} bindings A bindings object.\n * @return {RDF.Term} The materialized term.\n */\nfunction materializeTerm(term, bindings) {\n if (term.termType === 'Variable') {\n const value = bindings.get(term);\n if (value) {\n return value;\n }\n }\n return term;\n}\nexports.materializeTerm = materializeTerm;\n/**\n * Materialize the given operation (recursively) with the given bindings.\n * Essentially, all variables in the given operation will be replaced\n * by the terms bound to the variables in the given bindings.\n * @param {Operation} operation SPARQL algebra operation.\n * @param {Bindings} bindings A bindings object.\n * @param options Options for materializations.\n * @return Algebra.Operation A new operation materialized with the given bindings.\n */\nfunction materializeOperation(operation, bindings, options = {}) {\n options = {\n strictTargetVariables: 'strictTargetVariables' in options ? options.strictTargetVariables : false,\n bindFilter: 'bindFilter' in options ? options.bindFilter : true,\n };\n return sparqlalgebrajs_1.Util.mapOperation(operation, {\n path(op, factory) {\n // Materialize variables in a path expression.\n // The predicate expression will be recursed.\n return {\n recurse: false,\n result: factory.createPath(materializeTerm(op.subject, bindings), op.predicate, materializeTerm(op.object, bindings), materializeTerm(op.graph, bindings)),\n };\n },\n pattern(op, factory) {\n // Materialize variables in the quad pattern.\n return {\n recurse: false,\n result: factory.createPattern(materializeTerm(op.subject, bindings), materializeTerm(op.predicate, bindings), materializeTerm(op.object, bindings), materializeTerm(op.graph, bindings)),\n };\n },\n extend(op) {\n // Materialize an extend operation.\n // If strictTargetVariables is true, we throw if the extension target variable is attempted to be bound.\n // Otherwise, we remove the extend operation.\n if (bindings.has(op.variable)) {\n if (options.strictTargetVariables) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(op.variable)} in a BIND operator.`);\n }\n else {\n return {\n recurse: true,\n result: materializeOperation(op.input, bindings, options),\n };\n }\n }\n return {\n recurse: true,\n result: op,\n };\n },\n group(op, factory) {\n // Materialize a group operation.\n // If strictTargetVariables is true, we throw if the group target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a GROUP BY operator.`);\n }\n }\n return {\n recurse: true,\n result: op,\n };\n }\n const variables = op.variables.filter(variable => !bindings.has(variable));\n return {\n recurse: true,\n result: factory.createGroup(op.input, variables, op.aggregates),\n };\n },\n project(op, factory) {\n // Materialize a project operation.\n // If strictTargetVariables is true, we throw if the project target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a SELECT operator.`);\n }\n }\n return {\n recurse: true,\n result: op,\n };\n }\n const variables = op.variables.filter(variable => !bindings.has(variable));\n // Only include projected variables in the sub-bindings that will be passed down recursively.\n // If we don't do this, we may be binding variables that may have the same label, but are not considered equal.\n const subBindings = BF.bindings(op.variables.map(variable => {\n const binding = bindings.get(variable);\n if (binding) {\n return [variable, binding];\n }\n // eslint-disable-next-line no-useless-return\n return;\n }).filter(entry => Boolean(entry)));\n return {\n recurse: false,\n result: factory.createProject(materializeOperation(op.input, subBindings, options), variables),\n };\n },\n values(op, factory) {\n // Materialize a values operation.\n // If strictTargetVariables is true, we throw if the values target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables and their bindings.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a VALUES operator.`);\n }\n }\n }\n else {\n const variables = op.variables.filter(variable => !bindings.has(variable));\n const valueBindings = op.bindings.map(binding => {\n const newBinding = { ...binding };\n let valid = true;\n bindings.forEach((value, key) => {\n const keyString = (0, rdf_string_1.termToString)(key);\n if (keyString in newBinding) {\n if (!value.equals(newBinding[keyString])) {\n // If the value of the binding is not equal, remove this binding completely from the VALUES clause\n valid = false;\n }\n delete newBinding[keyString];\n }\n });\n return valid ? newBinding : undefined;\n }).filter(Boolean);\n return {\n recurse: true,\n result: factory.createValues(variables, valueBindings),\n };\n }\n return {\n recurse: false,\n result: op,\n };\n },\n expression(op, factory) {\n if (!options.bindFilter) {\n return {\n recurse: false,\n result: op,\n };\n }\n if (op.expressionType === 'term') {\n // Materialize a term expression\n return {\n recurse: false,\n result: factory.createTermExpression(materializeTerm(op.term, bindings)),\n };\n }\n if (op.expressionType === 'aggregate' &&\n 'variable' in op &&\n bindings.has(op.variable)) {\n // Materialize a bound aggregate operation.\n // If strictTargetVariables is true, we throw if the expression target variable is attempted to be bound.\n // Otherwise, we ignore this operation.\n if (options.strictTargetVariables) {\n throw new Error(`Tried to bind ${(0, rdf_string_1.termToString)(op.variable)} in a ${op.aggregator} aggregate.`);\n }\n else {\n return {\n recurse: true,\n result: op,\n };\n }\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n}\nexports.materializeOperation = materializeOperation;\n//# sourceMappingURL=Bindings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BusQueryOperation = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * Indexed bus for query operations.\n */\nclass BusQueryOperation extends core_1.BusIndexed {\n constructor(args) {\n super({\n ...args,\n actorIdentifierFields: ['operationName'],\n actionIdentifierFields: ['operation', 'type'],\n });\n }\n}\nexports.BusQueryOperation = BusQueryOperation;\n//# sourceMappingURL=BusQueryOperation.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperation\"), exports);\n__exportStar(require(\"./ActorQueryOperationTyped\"), exports);\n__exportStar(require(\"./ActorQueryOperationTypedMediated\"), exports);\n__exportStar(require(\"./Bindings\"), exports);\n__exportStar(require(\"./BusQueryOperation\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryParse = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for query-parse events.\n *\n * Actor types:\n * * Input: IActionSparqlParse: A SPARQL query string.\n * * Test: \n * * Output: IActorSparqlParseOutput: A parsed query in SPARQL query algebra.\n *\n * @see IActionQueryParse\n * @see IActorQueryParseOutput\n */\nclass ActorQueryParse extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorQueryParse = ActorQueryParse;\n//# sourceMappingURL=ActorQueryParse.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryParse\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerialize = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A comunica actor for query-result-serialize events.\n *\n * Actor types:\n * * Input: IActionSparqlSerialize: SPARQL bindings or a quad stream.\n * * Test: \n * * Output: IActorQueryResultSerializeOutput: A text stream.\n *\n * @see IActionSparqlSerialize\n * @see IActorQueryResultSerializeOutput\n */\nclass ActorQueryResultSerialize extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorQueryResultSerialize = ActorQueryResultSerialize;\n//# sourceMappingURL=ActorQueryResultSerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to SPARQL serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionSparqlSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorQueryResultSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nclass ActorQueryResultSerializeFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action, context) {\n return true;\n }\n}\nexports.ActorQueryResultSerializeFixedMediaTypes = ActorQueryResultSerializeFixedMediaTypes;\n//# sourceMappingURL=ActorQueryResultSerializeFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerialize\"), exports);\n__exportStar(require(\"./ActorQueryResultSerializeFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinEntriesSort = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-join-entries-sort events.\n *\n * Actor types:\n * * Input: IActionRdfJoinEntriesSort: Join entries.\n * * Test: IActorTest: Test result.\n * * Output: IActorRdfJoinEntriesSortOutput: The sorted join entries.\n *\n * @see IActionRdfJoinEntriesSort\n * @see IActorTest\n * @see IActorRdfJoinEntriesSortOutput\n */\nclass ActorRdfJoinEntriesSort extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfJoinEntriesSort = ActorRdfJoinEntriesSort;\n//# sourceMappingURL=ActorRdfJoinEntriesSort.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinEntriesSort\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinSelectivity = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-join-selectivity events.\n *\n * Actor types:\n * * Input: IActionRdfJoinSelectivity: Join entries.\n * * Test: IMediatorTypeAccuracy: The accuracy of the selectivity calculator.\n * * Output: IActorRdfJoinSelectivityOutput: The calculated join selectivity.\n *\n * @see IActionRdfJoinSelectivity\n * @see IActorRdfJoinSelectivityTest\n * @see IActorRdfJoinSelectivityOutput\n */\nclass ActorRdfJoinSelectivity extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfJoinSelectivity = ActorRdfJoinSelectivity;\n//# sourceMappingURL=ActorRdfJoinSelectivity.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinSelectivity\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoin = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A comunica actor for joining 2 binding streams.\n *\n * Actor types:\n * * Input: IActionRdfJoin: The streams that need to be joined.\n * * Test: IMediatorTypeJoinCoefficients: Join coefficients.\n * * Output: IActorRdfJoinOutput: The resulting joined stream.\n *\n * @see IActionRdfJoin\n * @see IActorQueryOperationOutput\n */\nclass ActorRdfJoin extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param options - Actor-specific join options.\n */\n constructor(args, options) {\n super(args);\n /**\n * If this actor will be logged in the debugger and physical query plan logger\n */\n this.includeInLogs = true;\n this.logicalType = options.logicalType;\n this.physicalName = options.physicalName;\n this.limitEntries = options.limitEntries ?? Number.POSITIVE_INFINITY;\n this.limitEntriesMin = options.limitEntriesMin ?? false;\n this.canHandleUndefs = options.canHandleUndefs ?? false;\n }\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string}\n */\n static hash(bindings, variables) {\n return variables\n .filter(variable => bindings.has(variable))\n .map(variable => (0, rdf_string_1.termToString)(bindings.get(variable)))\n .join('');\n }\n /**\n * Returns an array containing all the variable names that occur in all bindings streams.\n * @param {MetadataBindings[]} metadatas An array of optional metadata objects for the entries.\n * @returns {string[]}\n */\n static overlappingVariables(metadatas) {\n const variables = metadatas.map(metadata => metadata.variables);\n let baseArray = variables[0];\n for (const array of variables.slice(1)) {\n baseArray = baseArray.filter(el => array.some(value => value.value === el.value));\n }\n return baseArray;\n }\n /**\n * Returns the variables that will occur in the joined bindings.\n * @param {MetadataBindings[]} metadatas An array of metadata objects for the entries.\n * @returns {string[]}\n */\n static joinVariables(metadatas) {\n return [...new Set(metadatas.flatMap(metadata => metadata.variables.map(variable => variable.value)))]\n .map(variable => DF.variable(variable));\n }\n /**\n * Returns the result of joining bindings, or `null` if no join is possible.\n * @param {Bindings[]} bindings\n * @returns {Bindings}\n */\n static joinBindings(...bindings) {\n if (bindings.length === 0) {\n return null;\n }\n if (bindings.length === 1) {\n return bindings[0];\n }\n let acc = bindings[0];\n for (const binding of bindings.slice(1)) {\n const merged = acc.merge(binding);\n if (!merged) {\n return null;\n }\n acc = merged;\n }\n return acc;\n }\n /**\n * Get the estimated number of items from the given metadata.\n * @param {Record} metadata A metadata object.\n * @return {number} The estimated number of items, or `Infinity` if cardinality is falsy.\n */\n static getCardinality(metadata) {\n return metadata.cardinality;\n }\n /**\n * Obtain the metadata from all given join entries.\n * @param entries Join entries.\n */\n static async getMetadatas(entries) {\n return await Promise.all(entries.map(entry => entry.output.metadata()));\n }\n /**\n * Obtain the join entries witt metadata from all given join entries.\n * @param entries Join entries.\n */\n static async getEntriesWithMetadatas(entries) {\n const metadatas = await ActorRdfJoin.getMetadatas(entries);\n return entries.map((entry, i) => ({ ...entry, metadata: metadatas[i] }));\n }\n /**\n * Calculate the time to initiate a request for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n static getRequestInitialTimes(metadatas) {\n return metadatas.map(metadata => metadata.pageSize ? 0 : metadata.requestTime || 0);\n }\n /**\n * Calculate the time to receive a single item for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n static getRequestItemTimes(metadatas) {\n return metadatas\n .map(metadata => !metadata.pageSize ? 0 : (metadata.requestTime || 0) / metadata.pageSize);\n }\n /**\n * Helper function to create a new metadata object for the join result.\n * For required metadata entries that are not provided, sane defaults are calculated.\n * @param entries Join entries.\n * @param metadatas Metadata of the join entries.\n * @param context The action context.\n * @param partialMetadata Partial metadata entries.\n */\n async constructResultMetadata(entries, metadatas, context, partialMetadata = {}) {\n let cardinalityJoined;\n if (partialMetadata.cardinality) {\n cardinalityJoined = partialMetadata.cardinality;\n }\n else {\n cardinalityJoined = metadatas\n .reduce((acc, metadata) => {\n const cardinalityThis = ActorRdfJoin.getCardinality(metadata);\n return {\n type: cardinalityThis.type === 'estimate' ? 'estimate' : acc.type,\n value: acc.value * cardinalityThis.value,\n };\n }, { type: 'exact', value: 1 });\n cardinalityJoined.value *= (await this.mediatorJoinSelectivity.mediate({ entries, context })).selectivity;\n }\n return {\n ...partialMetadata,\n cardinality: {\n type: cardinalityJoined.type,\n value: cardinalityJoined.value,\n },\n canContainUndefs: partialMetadata.canContainUndefs ?? metadatas.some(metadata => metadata.canContainUndefs),\n variables: ActorRdfJoin.joinVariables(metadatas),\n };\n }\n /**\n * Default test function for join actors.\n * Checks whether all iterators have metadata.\n * If yes: call the abstract getIterations method, if not: return Infinity.\n * @param {IActionRdfJoin} action The input action containing the relevant iterators\n * @returns {Promise} The join coefficients.\n */\n async test(action) {\n // Validate logical join type\n if (action.type !== this.logicalType) {\n throw new Error(`${this.name} can only handle logical joins of type '${this.logicalType}', while '${action.type}' was given.`);\n }\n // Don't allow joining of one or zero streams\n if (action.entries.length <= 1) {\n throw new Error(`${this.name} requires at least two join entries.`);\n }\n // Check if this actor can handle the given number of streams\n if (this.limitEntriesMin ? action.entries.length < this.limitEntries : action.entries.length > this.limitEntries) {\n throw new Error(`${this.name} requires ${this.limitEntries} join entries at ${this.limitEntriesMin ? 'least' : 'most'}. The input contained ${action.entries.length}.`);\n }\n // Check if all streams are bindings streams\n for (const entry of action.entries) {\n if (entry.output.type !== 'bindings') {\n throw new Error(`Invalid type of a join entry: Expected 'bindings' but got '${entry.output.type}'`);\n }\n }\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n // Check if this actor can handle undefs\n if (!this.canHandleUndefs) {\n for (const metadata of metadatas) {\n if (metadata.canContainUndefs) {\n throw new Error(`Actor ${this.name} can not join streams containing undefs`);\n }\n }\n }\n return await this.getJoinCoefficients(action, metadatas);\n }\n /**\n * Returns default input for 0 or 1 entries. Calls the getOutput function otherwise\n * @param {IActionRdfJoin} action\n * @returns {Promise}\n */\n async run(action) {\n // Prepare logging to physical plan\n // This must be called before getOutput, because we need to override the plan node in the context\n let parentPhysicalQueryPlanNode;\n if (action.context.has(context_entries_1.KeysInitQuery.physicalQueryPlanLogger)) {\n parentPhysicalQueryPlanNode = action.context.get(context_entries_1.KeysInitQuery.physicalQueryPlanNode);\n action.context = action.context.set(context_entries_1.KeysInitQuery.physicalQueryPlanNode, action);\n }\n const { result, physicalPlanMetadata } = await this.getOutput(action);\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n // Log to physical plan\n const physicalQueryPlanLogger = action.context.get(context_entries_1.KeysInitQuery\n .physicalQueryPlanLogger);\n if (this.includeInLogs && physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(`join-${this.logicalType}`, this.physicalName, action, parentPhysicalQueryPlanNode, this.name, {\n ...physicalPlanMetadata,\n cardinalities: metadatas.map(ActorRdfJoin.getCardinality),\n joinCoefficients: await this.getJoinCoefficients(action, metadatas),\n });\n }\n // Cache metadata\n result.metadata = bus_query_operation_1.ActorQueryOperation.cachifyMetadata(result.metadata);\n return result;\n }\n}\nexports.ActorRdfJoin = ActorRdfJoin;\n//# sourceMappingURL=ActorRdfJoin.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoin\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtract = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-metadata-extract events.\n *\n * Actor types:\n * * Input: IActionRdfMetadataExtract: A metadata quad stream\n * * Test: \n * * Output: IActorRdfMetadataExtractOutput: A metadata hash.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorRdfMetadataExtract extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfMetadataExtract = ActorRdfMetadataExtract;\n//# sourceMappingURL=ActorRdfMetadataExtract.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtract\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadata = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-metadata events.\n *\n * Actor types:\n * * Input: IActionRdfMetadata: An RDF quad stream.\n * * Test: \n * * Output: IActorRdfMetadataOutput: An RDF quad data stream and RDF quad metadata stream.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorRdfMetadata extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfMetadata = ActorRdfMetadata;\n//# sourceMappingURL=ActorRdfMetadata.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadata\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseHtml = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-parse-html events.\n *\n * Actor types:\n * * Input: IActionRdfParseHtml: Callbacks for parsing results.\n * * Test: \n * * Output: IActorRdfParseHtmlOutput: An HTML event listeners.\n *\n * @see IActionRdfParseHtml\n * @see IActorRdfParseHtmlOutput\n */\nclass ActorRdfParseHtml extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfParseHtml = ActorRdfParseHtml;\n//# sourceMappingURL=ActorRdfParseHtml.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseHtml\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParse = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF parse events.\n *\n * Actor types:\n * * Input: IActionRdfParseOrMediaType: A parse input or a media type input.\n * * Test: \n * * Output: IActorOutputRdfParseOrMediaType: The parsed quads.\n *\n * @see IActionInit\n */\nclass ActorRdfParse extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfParse = ActorRdfParse;\n//# sourceMappingURL=ActorRdfParse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF parse events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRdfParseOrMediaType: A parse input or a media type input.\n * * Test: \n * * Output: IActorOutputRdfParseOrMediaType: The parsed quads.\n *\n * @see IActionInit\n */\nclass ActorRdfParseFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action) {\n return true;\n }\n}\nexports.ActorRdfParseFixedMediaTypes = ActorRdfParseFixedMediaTypes;\n//# sourceMappingURL=ActorRdfParseFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParse\"), exports);\n__exportStar(require(\"./ActorRdfParseFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksQueue = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia-links-queue events.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermediaLinksQueue: Creates a new {@link ILinkQueue} for the given seed URL.\n * * Test: \n * * Output: IActorRdfResolveHypermediaLinksQueueOutput: The created {@link ILinkQueue}.\n *\n * @see IActionRdfResolveHypermediaLinksQueue\n * @see IActorRdfResolveHypermediaLinksQueueOutput\n */\nclass ActorRdfResolveHypermediaLinksQueue extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveHypermediaLinksQueue = ActorRdfResolveHypermediaLinksQueue;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksQueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ILinkQueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkQueueWrapper = void 0;\n/**\n * A link queue that wraps a given link queue.\n */\nclass LinkQueueWrapper {\n constructor(linkQueue) {\n this.linkQueue = linkQueue;\n }\n push(link, parent) {\n return this.linkQueue.push(link, parent);\n }\n getSize() {\n return this.linkQueue.getSize();\n }\n isEmpty() {\n return this.linkQueue.isEmpty();\n }\n pop() {\n return this.linkQueue.pop();\n }\n peek() {\n return this.linkQueue.peek();\n }\n}\nexports.LinkQueueWrapper = LinkQueueWrapper;\n//# sourceMappingURL=LinkQueueWrapper.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksQueue\"), exports);\n__exportStar(require(\"./ILinkQueue\"), exports);\n__exportStar(require(\"./LinkQueueWrapper\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinks = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia-links events.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermediaLinks: The metadata from which the links should be extracted.\n * * Test: \n * * Output: IActorRdfResolveHypermediaLinksOutput: The URLs that were detected.\n *\n * @see IActionRdfResolveHypermediaLinks\n * @see IActorRdfResolveHypermediaLinksOutput\n */\nclass ActorRdfResolveHypermediaLinks extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveHypermediaLinks = ActorRdfResolveHypermediaLinks;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinks.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinks\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermedia = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia bus.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermedia: The metadata in the document and a query operation.\n * * Test: \n * * Output: IActorRdfResolveHypermediaOutput: An RDF source.\n *\n * @see IActionRdfResolveQuadPattern\n * @see IActorRdfResolveQuadPatternOutput\n */\nclass ActorRdfResolveHypermedia extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param sourceType The source type.\n */\n constructor(args, sourceType) {\n super(args);\n this.sourceType = sourceType;\n }\n async test(action) {\n if (action.forceSourceType && this.sourceType !== action.forceSourceType) {\n throw new Error(`Actor ${this.name} is not able to handle source type ${action.forceSourceType}.`);\n }\n return this.testMetadata(action);\n }\n}\nexports.ActorRdfResolveHypermedia = ActorRdfResolveHypermedia;\n//# sourceMappingURL=ActorRdfResolveHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPattern = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-quad-pattern events.\n *\n * Actor types:\n * * Input: IActionRdfResolveQuadPattern: A quad pattern and an optional context.\n * * Test: \n * * Output: IActorRdfResolveQuadPatternOutput: The resulting quad stream and optional metadata.\n *\n * @see IActionRdfResolveQuadPattern\n * @see IActorRdfResolveQuadPatternOutput\n */\nclass ActorRdfResolveQuadPattern extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveQuadPattern = ActorRdfResolveQuadPattern;\n//# sourceMappingURL=ActorRdfResolveQuadPattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternSource = void 0;\nconst ActorRdfResolveQuadPattern_1 = require(\"./ActorRdfResolveQuadPattern\");\n/**\n * A base implementation for rdf-resolve-quad-pattern events\n * that wraps around an {@link IQuadSource}.\n *\n * @see IQuadSource\n */\nclass ActorRdfResolveQuadPatternSource extends ActorRdfResolveQuadPattern_1.ActorRdfResolveQuadPattern {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const source = await this.getSource(action.context, action.pattern);\n return await this.getOutput(source, action.pattern, action.context);\n }\n /**\n * Get the output of the given action on a source.\n * @param {IQuadSource} source A quad source, possibly lazy.\n * @param {Algebra.Operation} operation The operation to apply.\n * @param ActionContext context Optional context data.\n * @return {Promise} A promise that resolves to a hash containing\n * a data RDFJS stream.\n */\n async getOutput(source, pattern, context) {\n // Create data stream\n const data = source.match(pattern.subject, pattern.predicate, pattern.object, pattern.graph);\n return { data };\n }\n}\nexports.ActorRdfResolveQuadPatternSource = ActorRdfResolveQuadPatternSource;\n//# sourceMappingURL=ActorRdfResolveQuadPatternSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPattern\"), exports);\n__exportStar(require(\"./ActorRdfResolveQuadPatternSource\"), exports);\n__exportStar(require(\"./utils\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasContextSingleSourceOfType = exports.hasContextSingleSource = exports.getContextSourceUrl = exports.getContextSourceFirst = exports.getContextSource = exports.getContextSources = exports.getDataSourceContext = exports.getDataSourceValue = exports.getDataSourceType = exports.isDataSourceRawType = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * Check if the given data source is a string or RDF store.\n * @param dataSource A data source.\n */\nfunction isDataSourceRawType(dataSource) {\n return typeof dataSource === 'string' || 'match' in dataSource;\n}\nexports.isDataSourceRawType = isDataSourceRawType;\n/**\n * Get the data source type.\n * @param dataSource A data source.\n */\nfunction getDataSourceType(dataSource) {\n if (typeof dataSource === 'string') {\n return '';\n }\n return 'match' in dataSource ? 'rdfjsSource' : dataSource.type;\n}\nexports.getDataSourceType = getDataSourceType;\n/**\n * Get the data source value.\n * @param dataSource A data source.\n */\nfunction getDataSourceValue(dataSource) {\n return isDataSourceRawType(dataSource) ? dataSource : dataSource.value;\n}\nexports.getDataSourceValue = getDataSourceValue;\n/**\n * Get the data source from the given context.\n * @param {ActionContext} context An optional context.\n * @param {IDataSource} dataSource The source or undefined.\n */\nfunction getDataSourceContext(dataSource, context) {\n if (typeof dataSource === 'string' || 'match' in dataSource || !dataSource.context) {\n return context;\n }\n return context.merge(dataSource.context);\n}\nexports.getDataSourceContext = getDataSourceContext;\n/**\n * Get the sources from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataSource[]} The array of sources or undefined.\n */\nfunction getContextSources(context) {\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n}\nexports.getContextSources = getContextSources;\n/**\n * Get the source from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataSource} The source or undefined.\n */\nfunction getContextSource(context) {\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.source);\n}\nexports.getContextSource = getContextSource;\n/**\n * Get the single source if the context contains just a single source.\n * This will check both the source and sources context entries.\n * @param {IActionContext} context A context, can be null.\n * @return {IDataSource} The single datasource or undefined.\n */\nfunction getContextSourceFirst(context) {\n if (context.has(context_entries_1.KeysRdfResolveQuadPattern.source)) {\n // If the single source is set\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.source);\n }\n // If multiple sources are set\n const datasources = context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n if (datasources?.length === 1) {\n return datasources[0];\n }\n}\nexports.getContextSourceFirst = getContextSourceFirst;\n/**\n * Get the source's raw URL value from the given context.\n * @param {IDataSource} source A source.\n * @return {string} The URL or null.\n */\nfunction getContextSourceUrl(source) {\n if (source) {\n let fileUrl = getDataSourceValue(source);\n if (typeof fileUrl === 'string') {\n // Remove hashes from source\n const hashPosition = fileUrl.indexOf('#');\n if (hashPosition >= 0) {\n fileUrl = fileUrl.slice(0, hashPosition);\n }\n return fileUrl;\n }\n }\n}\nexports.getContextSourceUrl = getContextSourceUrl;\n/**\n * Check if the given context has a single source.\n * @param {ActionContext} context An optional context.\n * @return {boolean} If the given context has a single source of the given type.\n */\nfunction hasContextSingleSource(context) {\n const source = getContextSource(context);\n return Boolean(source && (isDataSourceRawType(source) || source.value));\n}\nexports.hasContextSingleSource = hasContextSingleSource;\n/**\n * Check if the given context has a single source of the given type.\n * @param {string} requiredType The required source type name.\n * @param {ActionContext} context An optional context.\n * @return {boolean} If the given context has a single source of the given type.\n */\nfunction hasContextSingleSourceOfType(requiredType, context) {\n const source = getContextSource(context);\n return Boolean(source && getDataSourceType(source) === requiredType && getDataSourceValue(source));\n}\nexports.hasContextSingleSourceOfType = hasContextSingleSourceOfType;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerialize = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A comunica actor for RDF parse events.\n *\n * Actor types:\n * * Input: IActionRdfSerialize: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutput: The serialized quads.\n *\n * @see IActionRdfSerialize\n * @see IActorRdfSerializeOutput\n */\nclass ActorRdfSerialize extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfSerialize = ActorRdfSerialize;\n//# sourceMappingURL=ActorRdfSerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRdfSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nclass ActorRdfSerializeFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action) {\n return true;\n }\n}\nexports.ActorRdfSerializeFixedMediaTypes = ActorRdfSerializeFixedMediaTypes;\n//# sourceMappingURL=ActorRdfSerializeFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerialize\"), exports);\n__exportStar(require(\"./ActorRdfSerializeFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermedia = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-update-hypermedia events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateHypermedia: The metadata in the document.\n * * Test: \n * * Output: IActorRdfUpdateHypermediaOutput: An RDF destination.\n *\n * @see IActionRdfUpdateHypermedia\n * @see IActorRdfUpdateHypermediaOutput\n */\nclass ActorRdfUpdateHypermedia extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param destinationType - The destination type.\n */\n constructor(args, destinationType) {\n super(args);\n this.destinationType = destinationType;\n }\n async test(action) {\n if (action.forceDestinationType && this.destinationType !== action.forceDestinationType) {\n throw new Error(`Actor ${this.name} is not able to handle destination type ${action.forceDestinationType}.`);\n }\n return this.testMetadata(action);\n }\n}\nexports.ActorRdfUpdateHypermedia = ActorRdfUpdateHypermedia;\n//# sourceMappingURL=ActorRdfUpdateHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuads = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-update-quads events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateQuads: Quad insertion and deletion streams.\n * * Test: \n * * Output: IActorRdfUpdateQuadsOutput: A promise resolving when the update operation is done.\n *\n * @see IActionRdfUpdateQuads\n * @see IActorRdfUpdateQuadsOutput\n */\nclass ActorRdfUpdateQuads extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfUpdateQuads = ActorRdfUpdateQuads;\n//# sourceMappingURL=ActorRdfUpdateQuads.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsDestination = void 0;\nconst actor_rdf_resolve_quad_pattern_federated_1 = require(\"@comunica/actor-rdf-resolve-quad-pattern-federated\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst ActorRdfUpdateQuads_1 = require(\"./ActorRdfUpdateQuads\");\nfunction deskolemizeStream(stream, id) {\n return stream?.map(quad => actor_rdf_resolve_quad_pattern_federated_1.FederatedQuadSource.deskolemizeQuad(quad, id));\n}\nfunction deskolemize(action) {\n const destination = action.context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n const id = action.context.get(context_entries_1.KeysRdfResolveQuadPattern.sourceIds)?.get(destination);\n if (!id) {\n return action;\n }\n return {\n ...action,\n quadStreamInsert: deskolemizeStream(action.quadStreamInsert, id),\n quadStreamDelete: deskolemizeStream(action.quadStreamDelete, id),\n };\n}\n/**\n * A base implementation for rdf-update-quads events\n * that wraps around an {@link IQuadDestination}.\n *\n * @see IQuadDestination\n */\nclass ActorRdfUpdateQuadsDestination extends ActorRdfUpdateQuads_1.ActorRdfUpdateQuads {\n async test(action) {\n return true;\n }\n async run(action) {\n const destination = await this.getDestination(action.context);\n return await this.getOutput(destination, deskolemize(action), action.context);\n }\n /**\n * Get the output of the given action on a destination.\n * @param {IQuadDestination} destination A quad destination, possibly lazy.\n * @param {IActionRdfUpdateQuads} action The action.\n * @param {ActionContext} context Optional context data.\n */\n async getOutput(destination, action, context) {\n const execute = () => Promise.all([\n action.quadStreamInsert ? destination.insert(action.quadStreamInsert) : Promise.resolve(),\n action.quadStreamDelete ? destination.delete(action.quadStreamDelete) : Promise.resolve(),\n action.deleteGraphs ?\n destination.deleteGraphs(action.deleteGraphs.graphs, action.deleteGraphs.requireExistence, action.deleteGraphs.dropGraphs) :\n Promise.resolve(),\n action.createGraphs ?\n destination.createGraphs(action.createGraphs.graphs, action.createGraphs.requireNonExistence) :\n Promise.resolve(),\n ]).then(() => {\n // Return void\n });\n return { execute };\n }\n}\nexports.ActorRdfUpdateQuadsDestination = ActorRdfUpdateQuadsDestination;\n//# sourceMappingURL=ActorRdfUpdateQuadsDestination.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateHttpResponse = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst stringifyStream = require(\"stream-to-string\");\n/**\n * Check if the http response is valid, and throw an error if not.\n * @param url The original URL that was to be updated.\n * @param httpResponse The update response.\n */\nasync function validateHttpResponse(url, httpResponse) {\n // Check if update was successful\n if (httpResponse.status >= 400) {\n // Consume the body, to avoid process to hang\n let bodyString = 'empty response';\n if (httpResponse.body) {\n const responseStream = bus_http_1.ActorHttp.toNodeReadable(httpResponse.body);\n bodyString = await stringifyStream(responseStream);\n }\n throw new Error(`Could not update ${url} (HTTP status ${httpResponse.status}):\\n${bodyString}`);\n }\n // Close response body, as we don't need it\n await httpResponse.body?.cancel();\n}\nexports.validateHttpResponse = validateHttpResponse;\n//# sourceMappingURL=IQuadDestination.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuads\"), exports);\n__exportStar(require(\"./ActorRdfUpdateQuadsDestination\"), exports);\n__exportStar(require(\"./IQuadDestination\"), exports);\n__exportStar(require(\"./utils\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getContextDestinationUrl = exports.getContextDestinationFirst = exports.getContextDestination = exports.getDataDestinationContext = exports.getDataDestinationValue = exports.getDataDestinationType = exports.isDataDestinationRawType = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * Check if the given data destination is a string or RDF store.\n * @param dataDestination A data destination.\n */\nfunction isDataDestinationRawType(dataDestination) {\n return typeof dataDestination === 'string' || 'remove' in dataDestination;\n}\nexports.isDataDestinationRawType = isDataDestinationRawType;\n/**\n * Get the data destination type.\n * @param dataDestination A data destination.\n */\nfunction getDataDestinationType(dataDestination) {\n if (typeof dataDestination === 'string') {\n return '';\n }\n return 'remove' in dataDestination ? 'rdfjsStore' : dataDestination.type;\n}\nexports.getDataDestinationType = getDataDestinationType;\n/**\n * Get the data destination value.\n * @param dataDestination A data destination.\n */\nfunction getDataDestinationValue(dataDestination) {\n return isDataDestinationRawType(dataDestination) ? dataDestination : dataDestination.value;\n}\nexports.getDataDestinationValue = getDataDestinationValue;\n/**\n * Get the context of the given destination, merged with the given context.\n * @param dataDestination A data destination.\n * @param context A context to merge with.\n */\nfunction getDataDestinationContext(dataDestination, context) {\n if (typeof dataDestination === 'string' || 'remove' in dataDestination || !dataDestination.context) {\n return context;\n }\n return context.merge(dataDestination.context);\n}\nexports.getDataDestinationContext = getDataDestinationContext;\n/**\n * Get the source destination from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataDestination} The destination or undefined.\n */\nfunction getContextDestination(context) {\n return context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n}\nexports.getContextDestination = getContextDestination;\n/**\n * Get the single destination if the context contains just a single destination.\n * @param {ActionContext} context A context, can be null.\n * @return {IDataDestination} The single datadestination or undefined.\n */\nfunction getContextDestinationFirst(context) {\n if (context.has(context_entries_1.KeysRdfUpdateQuads.destination)) {\n // If the single destination is set\n return context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n }\n}\nexports.getContextDestinationFirst = getContextDestinationFirst;\n/**\n * Get the destination's raw URL value from the given context.\n * @param {IDataDestination} destination A destination.\n * @return {string} The URL or undefined.\n */\nfunction getContextDestinationUrl(destination) {\n if (destination) {\n let fileUrl = getDataDestinationValue(destination);\n if (typeof fileUrl === 'string') {\n // Remove hashes from source\n const hashPosition = fileUrl.indexOf('#');\n if (hashPosition >= 0) {\n fileUrl = fileUrl.slice(0, hashPosition);\n }\n return fileUrl;\n }\n }\n}\nexports.getContextDestinationUrl = getContextDestinationUrl;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeysRdfUpdateQuads = exports.KeysRdfResolveQuadPattern = exports.KeysRdfParseHtmlScript = exports.KeysRdfParseJsonLd = exports.KeysQueryOperation = exports.KeysInitQuery = exports.KeysHttpProxy = exports.KeysHttpMemento = exports.KeysHttp = exports.KeysCore = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * When adding entries to this file, also add a shortcut for them in the contextKeyShortcuts TSDoc comment in\n * ActorIniQueryBase in @comunica/actor-init-query if it makes sense to use this entry externally.\n * Also, add this shortcut to IQueryContextCommon in @comunica/types.\n */\nexports.KeysCore = {\n // We create the core context keys in @comunica/core to avoid a cyclic dependency\n /**\n * A logger instance.\n */\n log: core_1.CONTEXT_KEY_LOGGER,\n};\nexports.KeysHttp = {\n /**\n * Include credentials flags.\n */\n includeCredentials: new core_1.ActionContextKey('@comunica/bus-http:include-credentials'),\n /**\n * Authentication for a source as a \"username:password\"-pair.\n */\n auth: new core_1.ActionContextKey('@comunica/bus-http:auth'),\n /**\n * Fetch function implementation.\n */\n fetch: new core_1.ActionContextKey('@comunica/bus-http:fetch'),\n};\nexports.KeysHttpMemento = {\n /**\n * The desired datetime for Memento datetime-negotiation.\n */\n datetime: new core_1.ActionContextKey('@comunica/actor-http-memento:datetime'),\n};\nexports.KeysHttpProxy = {\n /**\n * Interface.\n */\n httpProxyHandler: new core_1.ActionContextKey('@comunica/actor-http-proxy:httpProxyHandler'),\n};\nexports.KeysInitQuery = {\n /**\n * Variables that have to be pre-bound to values in the query.\n */\n initialBindings: new core_1.ActionContextKey('@comunica/actor-init-query:initialBindings'),\n /**\n * The provided query's format.\n * Defaults to { language: 'sparql', version: '1.1' }\n */\n queryFormat: new core_1.ActionContextKey('@comunica/actor-init-query:queryFormat'),\n /**\n * Which GraphQL bindings should be singularized.\n */\n graphqlSingularizeVariables: new core_1.ActionContextKey('@comunica/actor-init-query:singularizeVariables'),\n /**\n * If HTTP and parsing failures are ignored.\n */\n lenient: new core_1.ActionContextKey('@comunica/actor-init-query:lenient'),\n /**\n * The original query string.\n */\n queryString: new core_1.ActionContextKey('@comunica/actor-init-query:queryString'),\n /**\n * The original parsed query.\n */\n query: new core_1.ActionContextKey('@comunica/actor-init-query:query'),\n /**\n * The query's base IRI.\n */\n baseIRI: new core_1.ActionContextKey('@comunica/actor-init-query:baseIRI'),\n /**\n * A timestamp representing the current time.\n * This is required for certain SPARQL operations such as NOW().\n */\n queryTimestamp: new core_1.ActionContextKey('@comunica/actor-init-query:queryTimestamp'),\n /**\n * @range {functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined}\n * Extension function creator for a given function IRI.\n * Returned value should be an async function implementation.\n * Undefined may be returned if no implementation exists for the given function IRI.\n *\n * The dictionary-based extensionFunctions context entry may be used instead, but not simultaneously.\n */\n extensionFunctionCreator: new core_1.ActionContextKey('@comunica/actor-init-query:extensionFunctionCreator'),\n /**\n * Dictionary of extension functions.\n * Key is the IRI of the function, and value is the async function implementation.\n *\n * The callback-based extensionFunctionCreator context entry may be used instead, but not simultaneously.\n */\n extensionFunctions: new core_1.ActionContextKey('@comunica/actor-init-query:extensionFunctions'),\n /**\n * Enables manipulation of the CLI arguments and their processing.\n */\n cliArgsHandlers: new core_1.ActionContextKey('@comunica/actor-init-query:cliArgsHandlers'),\n /**\n * Explain mode of the query. Can be 'parsed', 'logical', or 'physical'.\n */\n explain: new core_1.ActionContextKey('@comunica/actor-init-query:explain'),\n /**\n * Logs the used physical operators\n */\n physicalQueryPlanLogger: new core_1.ActionContextKey('@comunica/actor-init-query:physicalQueryPlanLogger'),\n /**\n * The current physical operator within the query plan.\n * This is used to pass parent-child relationships for invoking the query plan logger.\n */\n physicalQueryPlanNode: new core_1.ActionContextKey('@comunica/actor-init-query:physicalQueryPlanNode'),\n /**\n * A JSON-LD context\n */\n jsonLdContext: new core_1.ActionContextKey('@context'),\n};\nexports.KeysQueryOperation = {\n /**\n * Context entry for the current query operation.\n */\n operation: new core_1.ActionContextKey('@comunica/bus-query-operation:operation'),\n /**\n * @type {any} The metadata from the left streams within a join operation.\n */\n joinLeftMetadata: new core_1.ActionContextKey('@comunica/bus-query-operation:joinLeftMetadata'),\n /**\n * An array of metadata from the right streams within a join operation.\n */\n joinRightMetadatas: new core_1.ActionContextKey('@comunica/bus-query-operation:joinRightMetadatas'),\n /**\n * Indicates the bindings that were used to bind the operation.\n */\n joinBindings: new core_1.ActionContextKey('@comunica/bus-query-operation:joinBindings'),\n /**\n * Flag for indicating that only read operations are allowed, defaults to false.\n */\n readOnly: new core_1.ActionContextKey('@comunica/bus-query-operation:readOnly'),\n /**\n * An internal context entry to mark that a property path with arbitrary length and a distinct key is being processed.\n */\n isPathArbitraryLengthDistinctKey: new core_1.ActionContextKey('@comunica/bus-query-operation:isPathArbitraryLengthDistinct'),\n /**\n * An indicator that the stream will be limited to the given number of elements afterwards.\n */\n limitIndicator: new core_1.ActionContextKey('@comunica/bus-query-operation:limitIndicator'),\n};\nexports.KeysRdfParseJsonLd = {\n /**\n * @range {IDocumentLoader}\n */\n documentLoader: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:documentLoader'),\n /**\n * @range {boolean}\n */\n strictValues: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:strictValues'),\n /**\n * @range {Record}\n */\n parserOptions: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:parserOptions'),\n};\nexports.KeysRdfParseHtmlScript = {\n /**\n * An internal context flag to determine if the engine is already processing an HTML script tag.\n */\n processingHtmlScript: new core_1.ActionContextKey('@comunica/actor-rdf-parse-html-script:processingHtmlScript'),\n /**\n * If all HTML script tags must be considered.\n */\n extractAllScripts: new core_1.ActionContextKey('extractAllScripts'),\n};\nexports.KeysRdfResolveQuadPattern = {\n /**\n * Data sources.\n */\n sources: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:sources'),\n /**\n * A data source.\n */\n source: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:source'),\n /**\n * A map containing unique IDs for each source\n */\n sourceIds: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:sourceIds'),\n};\nexports.KeysRdfUpdateQuads = {\n /**\n * A data destination.\n */\n destination: new core_1.ActionContextKey('@comunica/bus-rdf-update-quads:destination'),\n};\n//# sourceMappingURL=Keys.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Keys\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionContextKey = exports.ActionContext = void 0;\nconst immutable_1 = require(\"immutable\");\n/**\n * Implementation of {@link IActionContext} using Immutable.js.\n */\nclass ActionContext {\n constructor(data = {}) {\n this.map = (0, immutable_1.Map)(data);\n }\n /**\n * Will only set the value if the key is not already set.\n */\n setDefault(key, value) {\n return this.has(key) ? this : this.set(key, value);\n }\n set(key, value) {\n return this.setRaw(key.name, value);\n }\n setRaw(key, value) {\n return new ActionContext(this.map.set(key, value));\n }\n delete(key) {\n return new ActionContext(this.map.delete(key.name));\n }\n get(key) {\n return this.getRaw(key.name);\n }\n getRaw(key) {\n return this.map.get(key);\n }\n has(key) {\n return this.hasRaw(key.name);\n }\n hasRaw(key) {\n return this.map.has(key);\n }\n merge(...contexts) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n let context = this;\n for (const source of contexts) {\n for (const key of source.keys()) {\n context = context.set(key, source.get(key));\n }\n }\n return context;\n }\n keys() {\n return [...this.map.keys()]\n .map(keyName => new ActionContextKey(keyName));\n }\n toJS() {\n return this.map.toJS();\n }\n toString() {\n return `ActionContext(${JSON.stringify(this.map.toJS())})`;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `ActionContext(${JSON.stringify(this.map.toJS(), null, ' ')})`;\n }\n /**\n * Convert the given object to an action context object if it is not an action context object yet.\n * If it already is an action context object, return the object as-is.\n * @param maybeActionContext An action context or record.\n * @return {ActionContext} An action context object.\n */\n static ensureActionContext(maybeActionContext) {\n return maybeActionContext instanceof ActionContext ?\n maybeActionContext :\n new ActionContext((0, immutable_1.Map)(maybeActionContext || {}));\n }\n}\nexports.ActionContext = ActionContext;\n/**\n * Simple implementation of {@link IActionContextKey}.\n */\nclass ActionContextKey {\n constructor(name) {\n this.name = name;\n }\n}\nexports.ActionContextKey = ActionContextKey;\n//# sourceMappingURL=ActionContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionObserver = void 0;\n/**\n * An ActionObserver can passively listen to {@link Actor#run} inputs and outputs for all actors on a certain bus.\n *\n * ActionObserver should not edit inputs and outputs,\n * they should be considered immutable.\n *\n * @see Actor\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template O The output type of an actor.\n */\nclass ActionObserver {\n /**\n * All enumerable properties from the `args` object are inherited to this observer.\n *\n * The observer will NOT automatically subscribe to the given bus when this constructor is called.\n *\n * @param {IActionObserverArgs} args Arguments object\n * @throws When required arguments are missing.\n */\n constructor(args) {\n Object.assign(this, args);\n }\n}\nexports.ActionObserver = ActionObserver;\n//# sourceMappingURL=ActionObserver.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Actor = void 0;\nconst ContextEntries_1 = require(\"./ContextEntries\");\n/**\n * An actor can act on messages of certain types and provide output of a certain type.\n *\n * The flow of an actor is as follows:\n * 1. Send a message to {@link Actor#test} to test if an actor can run that action.\n * 2. If the actor can reply to the message, let the actor run the action using {@link Actor#run}.\n *\n * An actor is typically subscribed to a bus,\n * using which the applicability to an action can be tested.\n *\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Actor {\n /**\n * All enumerable properties from the `args` object are inherited to this actor.\n *\n * The actor will subscribe to the given bus when this constructor is called.\n *\n * @param {IActorArgs} args Arguments object\n * @param {string} args.name The name for this actor.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this actor subscribes to.\n * @throws When required arguments are missing.\n */\n constructor(args) {\n this.beforeActors = [];\n Object.assign(this, args);\n this.bus.subscribe(this);\n if (this.beforeActors.length > 0) {\n this.bus.addDependencies(this, this.beforeActors);\n }\n }\n /**\n * Get the logger from the given context.\n * @param {ActionContext} context An optional context.\n * @return {Logger} The logger or undefined.\n */\n static getContextLogger(context) {\n return context.get(ContextEntries_1.CONTEXT_KEY_LOGGER);\n }\n /**\n * Run the given action on this actor\n * AND invokes the {@link Bus#onRun} method.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n runObservable(action) {\n const output = this.run(action);\n this.bus.onRun(this, action, output);\n return output;\n }\n /**\n * Initialize this actor.\n * This should be used for doing things that take a while,\n * such as opening files.\n *\n * @return {Promise} A promise that resolves when the actor has been initialized.\n */\n async initialize() {\n return true;\n }\n /**\n * Deinitialize this actor.\n * This should be used for cleaning up things when the application is shut down,\n * such as closing files and removing temporary files.\n *\n * @return {Promise} A promise that resolves when the actor has been deinitialized.\n */\n async deinitialize() {\n return true;\n }\n /* Proxy methods for the (optional) logger that is defined in the context */\n getDefaultLogData(context, data) {\n const dataActual = data ? data() : {};\n dataActual.actor = this.name;\n return dataActual;\n }\n logTrace(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.trace(message, this.getDefaultLogData(context, data));\n }\n }\n logDebug(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.debug(message, this.getDefaultLogData(context, data));\n }\n }\n logInfo(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.info(message, this.getDefaultLogData(context, data));\n }\n }\n logWarn(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.warn(message, this.getDefaultLogData(context, data));\n }\n }\n logError(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.error(message, this.getDefaultLogData(context, data));\n }\n }\n logFatal(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.fatal(message, this.getDefaultLogData(context, data));\n }\n }\n}\nexports.Actor = Actor;\n//# sourceMappingURL=Actor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bus = void 0;\n/**\n * A publish-subscribe bus for sending actions to actors\n * to test whether or not they can run an action.\n *\n * This bus does not run the action itself,\n * for that a {@link Mediator} can be used.\n *\n * @see Actor\n * @see Mediator\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Bus {\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n constructor(args) {\n this.actors = [];\n this.observers = [];\n // Mapping from dependency (after) to dependents (before)\n this.dependencyLinks = new Map();\n Object.assign(this, args);\n }\n /**\n * Subscribe the given actor to the bus.\n * After this, the given actor can be unsubscribed from the bus by calling {@link Bus#unsubscribe}.\n *\n * An actor that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {A} actor The actor to subscribe.\n */\n subscribe(actor) {\n this.actors.push(actor);\n this.reorderForDependencies();\n }\n /**\n * Subscribe the given observer to the bus.\n * After this, the given observer can be unsubscribed from the bus by calling {@link Bus#unsubscribeObserver}.\n *\n * An observer that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {ActionObserver} observer The observer to subscribe.\n */\n subscribeObserver(observer) {\n this.observers.push(observer);\n }\n /**\n * Unsubscribe the given actor from the bus.\n *\n * An actor that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {A} actor The actor to unsubscribe\n * @return {boolean} If the given actor was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n unsubscribe(actor) {\n const index = this.actors.indexOf(actor);\n if (index >= 0) {\n this.actors.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n * Unsubscribe the given observer from the bus.\n *\n * An observer that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {ActionObserver} observer The observer to unsubscribe.\n * @return {boolean} If the given observer was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n unsubscribeObserver(observer) {\n const index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n * Publish an action to all actors in the bus to test if they can run the action.\n *\n * @param {I} action An action to publish\n * @return {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]}\n * An array of reply objects. Each object contains a reference to the actor,\n * and a promise to its {@link Actor#test} result.\n */\n publish(action) {\n return this.actors.map((actor) => ({ actor, reply: actor.test(action) }));\n }\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n onRun(actor, action, output) {\n for (const observer of this.observers) {\n observer.onRun(actor, action, output);\n }\n }\n /**\n * Indicate that the given actor has the given actor dependencies.\n *\n * This will ensure that the given actor will be present in the bus *before* the given dependencies.\n *\n * @param {A} dependent A dependent actor that will be placed before the given actors.\n * @param {A[]} dependencies Actor dependencies that will be placed after the given actor.\n */\n addDependencies(dependent, dependencies) {\n for (const dependency of dependencies) {\n let existingDependencies = this.dependencyLinks.get(dependency);\n if (!existingDependencies) {\n existingDependencies = [];\n this.dependencyLinks.set(dependency, existingDependencies);\n }\n existingDependencies.push(dependent);\n }\n this.reorderForDependencies();\n }\n /**\n * Reorder the bus based on all present dependencies.\n */\n reorderForDependencies() {\n if (this.dependencyLinks.size > 0) {\n const actorsAfter = [];\n // Temporarily remove all actors that have dependencies\n for (const actorAfter of this.dependencyLinks.keys()) {\n const dependentPos = this.actors.indexOf(actorAfter);\n if (dependentPos >= 0) {\n this.actors.splice(dependentPos, 1);\n actorsAfter.push(actorAfter);\n }\n }\n // Iteratively append actors based on the first dependency link\n // that has all of its dependencies available in the array\n while (actorsAfter.length > 0) {\n // Find the first actor that has all of its dependencies available.\n let activeActorAfterId = -1;\n for (let i = 0; i < actorsAfter.length; i++) {\n let validLink = true;\n for (const dependency of this.dependencyLinks.get(actorsAfter[i])) {\n if (!this.actors.includes(dependency) && actorsAfter.includes(dependency)) {\n validLink = false;\n break;\n }\n }\n if (validLink) {\n activeActorAfterId = i;\n break;\n }\n }\n // If none of the pending links are possible, there must be a cyclic dependency\n if (activeActorAfterId < 0) {\n throw new Error(`Cyclic dependency links detected in bus ${this.name}`);\n }\n // The dependent may not be available (yet), so we don't add it to the array (yet).\n const activeActorAfter = actorsAfter.splice(activeActorAfterId, 1)[0];\n this.actors.push(activeActorAfter);\n }\n }\n }\n}\nexports.Bus = Bus;\n//# sourceMappingURL=Bus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BusIndexed = void 0;\nconst Bus_1 = require(\"./Bus\");\n/**\n * A bus that indexes identified actors,\n * so that actions with a corresponding identifier can be published more efficiently.\n *\n * Multiple actors with the same identifier can be subscribed.\n *\n * If actors or actions do not have a valid identifier,\n * then this will fallback to the normal bus behaviour.\n *\n * @see Bus\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass BusIndexed extends Bus_1.Bus {\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusIndexedArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n constructor(args) {\n super(args);\n this.actorsIndex = {};\n }\n subscribe(actor) {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n let actors = this.actorsIndex[actorId];\n if (!actors) {\n actors = this.actorsIndex[actorId] = [];\n }\n actors.push(actor);\n super.subscribe(actor);\n }\n unsubscribe(actor) {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n const actors = this.actorsIndex[actorId];\n if (actors) {\n const i = actors.indexOf(actor);\n if (i >= 0) {\n actors.splice(i, 1);\n }\n if (actors.length === 0) {\n delete this.actorsIndex[actorId];\n }\n }\n return super.unsubscribe(actor);\n }\n publish(action) {\n const actionId = this.getActionIdentifier(action);\n if (actionId) {\n const actors = [...this.actorsIndex[actionId] || [], ...this.actorsIndex._undefined_ || []];\n return actors.map((actor) => ({ actor, reply: actor.test(action) }));\n }\n return super.publish(action);\n }\n getActorIdentifier(actor) {\n return this.actorIdentifierFields.reduce((object, field) => object[field], actor);\n }\n getActionIdentifier(action) {\n return this.actionIdentifierFields.reduce((object, field) => object[field], action);\n }\n}\nexports.BusIndexed = BusIndexed;\n//# sourceMappingURL=BusIndexed.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONTEXT_KEY_LOGGER = void 0;\nconst ActionContext_1 = require(\"./ActionContext\");\nexports.CONTEXT_KEY_LOGGER = new ActionContext_1.ActionContextKey('@comunica/core:log');\n//# sourceMappingURL=ContextEntries.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logger = void 0;\n/**\n * A logger accepts messages from different levels\n * and emits them in a certain way.\n */\nclass Logger {\n /**\n * Convert a string-based logging level to a numerical logging level.\n * @param level A string-based logging level\n * @return The numerical logging level, or undefined.\n */\n static getLevelOrdinal(level) {\n return Logger.LEVELS[level];\n }\n}\nexports.Logger = Logger;\n/**\n * All available logging levels.\n * @type {{trace: number; debug: number; info: number; warn: number; error: number; fatal: number}}\n */\nLogger.LEVELS = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n};\n//# sourceMappingURL=Logger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mediator = void 0;\n/**\n * A mediator can mediate an action over a bus of actors.\n *\n * It does the following:\n * 1. Accepts an action in {@link Mediator#mediate}.\n * 2. Sends the action to the bus to test its applicability on all actors.\n * 3. It _mediates_ over these test results.\n * 4. It selects the _best_ actor.\n * 5. The action is run by the _best_ actor, and the result if returned.\n *\n * The _mediates_ and _best_ parts are filled in by subclasses of this abstract Mediator class.\n *\n * @template A The type of actor to mediator over.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Mediator {\n /**\n * All enumerable properties from the `args` object are inherited to this mediator.\n *\n * @param {IMediatorArgs, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>} args Arguments object\n * @param {string} args.name The name for this mediator.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this mediator will mediate over.\n * @throws When required arguments are missing.\n */\n constructor(args) {\n Object.assign(this, args);\n }\n /**\n * Publish the given action in the bus.\n *\n * This will send the test action on all actors in the bus.\n * All actor replies will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {IActorReply, I extends IAction, T extends IActorTest, O extends IActorOutput>[]}\n * The list of actor replies.\n */\n publish(action) {\n // Test all actors in the bus\n const actors = this.bus.publish(action);\n if (actors.length === 0) {\n throw new Error(`No actors are able to reply to a message in the bus ${this.bus.name}`);\n }\n return actors;\n }\n /**\n * Mediate for the given action to get an actor.\n *\n * This will send the test action on all actors in the bus.\n * The actor that tests _best_ will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the _best_ actor.\n */\n async mediateActor(action) {\n // Mediate to one actor and run that actor.\n return await this.mediateWith(action, this.publish(action));\n }\n /**\n * Mediate for the given action.\n *\n * This will send the test action on all actors in the bus.\n * The action will be run on the actor that tests _best_,\n * of which the result will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the mediation result.\n */\n async mediate(action) {\n // Mediate to one actor and run the action on it\n const actor = await this.mediateActor(action);\n return actor.runObservable(action);\n }\n}\nexports.Mediator = Mediator;\n//# sourceMappingURL=Mediator.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActionContext\"), exports);\n__exportStar(require(\"./Bus\"), exports);\n__exportStar(require(\"./BusIndexed\"), exports);\n__exportStar(require(\"./ContextEntries\"), exports);\n__exportStar(require(\"./ActionObserver\"), exports);\n__exportStar(require(\"./Actor\"), exports);\n__exportStar(require(\"./Logger\"), exports);\n__exportStar(require(\"./Mediator\"), exports);\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNodeBindingsScoped = void 0;\n/**\n * A blank node that is scoped to a set of bindings.\n */\nclass BlankNodeBindingsScoped {\n constructor(value) {\n this.termType = 'BlankNode';\n this.singleBindingsScope = true;\n this.value = value;\n }\n equals(other) {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNodeBindingsScoped = BlankNodeBindingsScoped;\n//# sourceMappingURL=BlankNodeBindingsScoped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNodeScoped = void 0;\n/**\n * A blank node that is scoped to a certain source.\n */\nclass BlankNodeScoped {\n constructor(value, skolemized) {\n this.termType = 'BlankNode';\n this.value = value;\n this.skolemized = skolemized;\n }\n equals(other) {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNodeScoped = BlankNodeScoped;\n//# sourceMappingURL=BlankNodeScoped.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./BlankNodeScoped\"), exports);\n__exportStar(require(\"./BlankNodeBindingsScoped\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoggerVoid = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A logger that voids everything.\n */\nclass LoggerVoid extends core_1.Logger {\n debug() {\n // Void\n }\n error() {\n // Void\n }\n fatal() {\n // Void\n }\n info() {\n // Void\n }\n trace() {\n // Void\n }\n warn() {\n // Void\n }\n}\nexports.LoggerVoid = LoggerVoid;\n//# sourceMappingURL=LoggerVoid.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LoggerVoid\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorAll = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that runs all actors that resolve their test.\n * This mediator will always resolve to the first actor's output.\n */\nclass MediatorAll extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediate(action) {\n // Collect all actors that resolve their test\n const validActors = [];\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n testResults = [];\n }\n for (const testResult of testResults) {\n try {\n await testResult.reply;\n validActors.push(testResult.actor);\n }\n catch {\n // Ignore errors\n }\n }\n // Send action to all valid actors\n const outputs = await Promise.all(validActors.map(actor => actor.runObservable(action)));\n return outputs[0];\n }\n async mediateWith() {\n throw new Error('Unsupported operation: MediatorAll#mediateWith');\n }\n}\nexports.MediatorAll = MediatorAll;\n//# sourceMappingURL=MediatorAll.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorAll\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorCombinePipeline = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that goes over all actors in sequence and forwards I/O.\n * This required the action input and the actor output to be of the same type.\n */\nclass MediatorCombinePipeline extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediate(action) {\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n // If no actors are available, just return the input as output\n return action;\n }\n if (this.filterErrors) {\n const _testResults = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n }\n catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n // Delegate test errors.\n testResults = await Promise.all(testResults.map(async ({ actor, reply }) => ({ actor, reply: await reply })));\n // Order the test results if ordering is enabled\n if (this.order) {\n // A function used to extract an ordering value from a test result\n const getOrder = (elem) => {\n // If there is a field key use it, otherwise use the input\n // element for ordering\n const value = this.field ? elem[this.field] : elem;\n // Check the ordering value is a number\n if (typeof value !== 'number') {\n throw new Error('Cannot order elements that are not numbers.');\n }\n return value;\n };\n testResults = testResults.sort((actor1, actor2) => (this.order === 'increasing' ? 1 : -1) *\n (getOrder(actor1.reply) - getOrder(actor2.reply)));\n }\n // Pass action to first actor,\n // and each actor output as input to the following actor.\n let handle = action;\n for (const { actor } of testResults) {\n handle = { ...handle, ...await actor.runObservable(handle) };\n }\n // Return the final actor output\n return handle;\n }\n mediateWith() {\n throw new Error('Method not supported.');\n }\n}\nexports.MediatorCombinePipeline = MediatorCombinePipeline;\n//# sourceMappingURL=MediatorCombinePipeline.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorCombinePipeline\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorCombineUnion = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that takes the union of all actor results.\n *\n * The actors that are registered first will have priority on setting overlapping fields.\n */\nclass MediatorCombineUnion extends core_1.Mediator {\n constructor(args) {\n super(args);\n this.combiner = this.createCombiner();\n }\n async mediate(action) {\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n testResults = [];\n }\n // Delegate test errors.\n await Promise.all(testResults.map(({ reply }) => reply));\n // Run action on all actors.\n const results = await Promise.all(testResults.map(result => result.actor.runObservable(action)));\n // Return the combined results.\n return this.combiner(results);\n }\n mediateWith() {\n throw new Error('Method not supported.');\n }\n createCombiner() {\n return (results) => {\n const data = {};\n data[this.field] = {};\n // eslint-disable-next-line unicorn/prefer-spread\n [{}].concat(results.map((result) => result[this.field]))\n .forEach((value, index, arr) => {\n data[this.field] = { ...value, ...data[this.field] };\n });\n return data;\n };\n }\n}\nexports.MediatorCombineUnion = MediatorCombineUnion;\n//# sourceMappingURL=MediatorCombineUnion.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorCombineUnion\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorJoinCoefficientsFixed = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that mediates over actors implementing the Join Coefficients mediator type and assigns fixed weights\n * to calculate an overall score and pick the actor with the lowest score.\n */\nclass MediatorJoinCoefficientsFixed extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediateWith(action, testResults) {\n // Obtain test results\n const errors = [];\n const promises = testResults\n .map(({ reply }) => reply)\n .map(promise => promise.catch(error => {\n errors.push(error);\n }));\n const coefficients = await Promise.all(promises);\n // Check if we had a limit indicator in the context\n const limitIndicator = action.context.get(context_entries_1.KeysQueryOperation.limitIndicator);\n // Calculate costs\n const costs = coefficients\n // eslint-disable-next-line array-callback-return\n .map(coeff => {\n if (coeff &&\n // If we have a limit indicator,\n // disallow entries that have a number of iterations that is higher than the limit AND persist items.\n // In these cases, join operators that produce results early on will be preferred.\n (!limitIndicator || coeff.iterations < limitIndicator || coeff.persistedItems === 0)) {\n return coeff.iterations * this.cpuWeight +\n coeff.persistedItems * this.memoryWeight +\n coeff.blockingItems * this.timeWeight +\n coeff.requestTime * this.ioWeight;\n }\n });\n // Determine index with lowest cost\n let minIndex = -1;\n let minValue = Number.POSITIVE_INFINITY;\n for (const [i, cost] of costs.entries()) {\n if (cost !== undefined && (minIndex === -1 || cost < minValue)) {\n minIndex = i;\n minValue = cost;\n }\n }\n // Reject if all actors rejected\n if (minIndex < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${errors.map(error => error.message).join('\\n')}`);\n }\n // Return actor with lowest cost\n const bestActor = testResults[minIndex].actor;\n // Emit calculations in logger\n if (bestActor.includeInLogs) {\n core_1.Actor.getContextLogger(action.context)?.debug(`Determined physical join operator '${bestActor.logicalType}-${bestActor.physicalName}'`, {\n entries: action.entries.length,\n variables: await Promise.all(action.entries\n .map(async (entry) => (await entry.output.metadata()).variables.map(variable => variable.value))),\n costs: Object.fromEntries(costs.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ])),\n coefficients: Object.fromEntries(coefficients.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ])),\n });\n }\n return bestActor;\n }\n}\nexports.MediatorJoinCoefficientsFixed = MediatorJoinCoefficientsFixed;\n//# sourceMappingURL=MediatorJoinCoefficientsFixed.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorJoinCoefficientsFixed\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorNumber = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that can mediate over a single number field.\n *\n * It takes the required 'field' and 'type' parameters.\n * The 'field' parameter represents the field name of the test result field over which must be mediated.\n * The 'type' parameter\n */\nclass MediatorNumber extends core_1.Mediator {\n constructor(args) {\n super(args);\n this.indexPicker = this.createIndexPicker();\n }\n /**\n * @return {(tests: T[]) => number} A function that returns the index of the test result\n * that has been chosen by this mediator.\n */\n createIndexPicker() {\n switch (this.type) {\n case 'min':\n return (tests) => tests.reduce((prev, curr, i) => {\n const val = this.getOrDefault(curr[this.field], Number.POSITIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] > val) ? [val, i] : prev;\n }, [Number.NaN, -1])[1];\n case 'max':\n return (tests) => tests.reduce((prev, curr, i) => {\n const val = this.getOrDefault(curr[this.field], Number.NEGATIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] < val) ? [val, i] : prev;\n }, [Number.NaN, -1])[1];\n default:\n throw new Error(`No valid \"type\" value was given, must be either 'min' or 'max', but got: ${this.type}`);\n }\n }\n getOrDefault(value, defaultValue) {\n return value === undefined ? defaultValue : value;\n }\n async mediateWith(action, testResults) {\n let promises = testResults.map(({ reply }) => reply);\n const errors = [];\n if (this.ignoreErrors) {\n const dummy = {};\n dummy[this.field] = null;\n promises = promises.map(promise => promise.catch(error => {\n errors.push(error);\n return dummy;\n }));\n }\n const results = await Promise.all(promises);\n const index = this.indexPicker(results);\n if (index < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${errors.map(error => error.message).join('\\n')}`);\n }\n return testResults[index].actor;\n }\n}\nexports.MediatorNumber = MediatorNumber;\n//# sourceMappingURL=MediatorNumber.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorNumber\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorRace = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that picks the first actor that resolves its test.\n */\nclass MediatorRace extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n mediateWith(action, testResults) {\n return new Promise((resolve, reject) => {\n const errors = [];\n for (const testResult of testResults) {\n testResult.reply.then(() => {\n resolve(testResult.actor);\n }).catch(error => {\n // Reject if all replies were rejected\n errors.push(error);\n if (errors.length === testResults.length) {\n reject(new Error(`${this.name} mediated over all rejecting actors:\\n${errors.map(subError => subError.message).join('\\n')}`));\n }\n });\n }\n });\n }\n}\nexports.MediatorRace = MediatorRace;\n//# sourceMappingURL=MediatorRace.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorRace\"), exports);\n//# sourceMappingURL=index.js.map","'use strict'\n\nvar Parser = require('jsonparse')\n , through = require('through')\n\nvar bufferFrom = Buffer.from && Buffer.from !== Uint8Array.from\n\n/*\n\n the value of this.stack that creationix's jsonparse has is weird.\n\n it makes this code ugly, but his problem is way harder that mine,\n so i'll forgive him.\n\n*/\n\nexports.parse = function (path, map) {\n var header, footer\n var parser = new Parser()\n var stream = through(function (chunk) {\n if('string' === typeof chunk)\n chunk = bufferFrom ? Buffer.from(chunk) : new Buffer(chunk)\n parser.write(chunk)\n },\n function (data) {\n if(data)\n stream.write(data)\n if (header)\n stream.emit('header', header)\n if (footer)\n stream.emit('footer', footer)\n stream.queue(null)\n })\n\n if('string' === typeof path)\n path = path.split('.').map(function (e) {\n if (e === '$*')\n return {emitKey: true}\n else if (e === '*')\n return true\n else if (e === '') // '..'.split('.') returns an empty string\n return {recurse: true}\n else\n return e\n })\n\n\n var count = 0, _key\n if(!path || !path.length)\n path = null\n\n parser.onValue = function (value) {\n if (!this.root)\n stream.root = value\n\n if(! path) return\n\n var i = 0 // iterates on path\n var j = 0 // iterates on stack\n var emitKey = false;\n var emitPath = false;\n while (i < path.length) {\n var key = path[i]\n var c\n j++\n\n if (key && !key.recurse) {\n c = (j === this.stack.length) ? this : this.stack[j]\n if (!c) return\n if (! check(key, c.key)) {\n setHeaderFooter(c.key, value)\n return\n }\n emitKey = !!key.emitKey;\n emitPath = !!key.emitPath;\n i++\n } else {\n i++\n var nextKey = path[i]\n if (! nextKey) return\n while (true) {\n c = (j === this.stack.length) ? this : this.stack[j]\n if (!c) return\n if (check(nextKey, c.key)) {\n i++;\n if (!Object.isFrozen(this.stack[j]))\n this.stack[j].value = null\n break\n } else {\n setHeaderFooter(c.key, value)\n }\n j++\n }\n }\n\n }\n\n // emit header\n if (header) {\n stream.emit('header', header);\n header = false;\n }\n if (j !== this.stack.length) return\n\n count ++\n var actualPath = this.stack.slice(1).map(function(element) { return element.key }).concat([this.key])\n var data = value\n if(null != data)\n if(null != (data = map ? map(data, actualPath) : data)) {\n if (emitKey || emitPath) {\n data = { value: data };\n if (emitKey)\n data[\"key\"] = this.key;\n if (emitPath)\n data[\"path\"] = actualPath;\n }\n\n stream.queue(data)\n }\n if (this.value) delete this.value[this.key]\n for(var k in this.stack)\n if (!Object.isFrozen(this.stack[k]))\n this.stack[k].value = null\n }\n parser._onToken = parser.onToken;\n\n parser.onToken = function (token, value) {\n parser._onToken(token, value);\n if (this.stack.length === 0) {\n if (stream.root) {\n if(!path)\n stream.queue(stream.root)\n count = 0;\n stream.root = null;\n }\n }\n }\n\n parser.onError = function (err) {\n if(err.message.indexOf(\"at position\") > -1)\n err.message = \"Invalid JSON (\" + err.message + \")\";\n stream.emit('error', err)\n }\n\n return stream\n\n function setHeaderFooter(key, value) {\n // header has not been emitted yet\n if (header !== false) {\n header = header || {}\n header[key] = value\n }\n\n // footer has not been emitted yet but header has\n if (footer !== false && header === false) {\n footer = footer || {}\n footer[key] = value\n }\n }\n}\n\nfunction check (x, y) {\n if ('string' === typeof x)\n return y == x\n else if (x && 'function' === typeof x.exec)\n return x.exec(y)\n else if ('boolean' === typeof x || 'object' === typeof x)\n return x\n else if ('function' === typeof x)\n return x(y)\n return false\n}\n\nexports.stringify = function (op, sep, cl, indent) {\n indent = indent || 0\n if (op === false){\n op = ''\n sep = '\\n'\n cl = ''\n } else if (op == null) {\n\n op = '[\\n'\n sep = '\\n,\\n'\n cl = '\\n]\\n'\n\n }\n\n //else, what ever you like\n\n var stream\n , first = true\n , anyData = false\n stream = through(function (data) {\n anyData = true\n try {\n var json = JSON.stringify(data, null, indent)\n } catch (err) {\n return stream.emit('error', err)\n }\n if(first) { first = false ; stream.queue(op + json)}\n else stream.queue(sep + json)\n },\n function (data) {\n if(!anyData)\n stream.queue(op)\n stream.queue(cl)\n stream.queue(null)\n })\n\n return stream\n}\n\nexports.stringifyObject = function (op, sep, cl, indent) {\n indent = indent || 0\n if (op === false){\n op = ''\n sep = '\\n'\n cl = ''\n } else if (op == null) {\n\n op = '{\\n'\n sep = '\\n,\\n'\n cl = '\\n}\\n'\n\n }\n\n //else, what ever you like\n\n var first = true\n var anyData = false\n var stream = through(function (data) {\n anyData = true\n var json = JSON.stringify(data[0]) + ':' + JSON.stringify(data[1], null, indent)\n if(first) { first = false ; this.queue(op + json)}\n else this.queue(sep + json)\n },\n function (data) {\n if(!anyData) this.queue(op)\n this.queue(cl)\n\n this.queue(null)\n })\n\n return stream\n}\n\n\n","/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n","\nconst DynamicNestedLoopJoin = require('./join/DynamicNestedLoopJoin');\nconst HashJoin = require('./join/HashJoin');\nconst NestedLoopJoin = require('./join/NestedLoopJoin');\nconst SymmetricHashJoin = require('./join/SymmetricHashJoin');\n\nconst MergeStream = require('./util/MergeIterator');\n\nmodule.exports = {\n DynamicNestedLoopJoin,\n HashJoin,\n NestedLoopJoin,\n SymmetricHashJoin,\n\n MergeStream\n};","\nlet AsyncIterator = require('asynciterator');\nlet MultiTransformIterator = AsyncIterator.MultiTransformIterator;\nlet SimpleTransformIterator = AsyncIterator.SimpleTransformIterator;\n\n// Nested Loop Join, but the values of the inner loop are determined by each value of the outer loop, possibly reducing the number of necessary checks\nclass DynamicNestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, funRight, funJoin, options)\n {\n super(left, options);\n\n this.funRight = funRight;\n this.funJoin = funJoin;\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.funRight(leftItem), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = DynamicNestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Hash_join\nclass HashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.addedDataListener = false;\n this.left = left;\n this.right = right;\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.leftMap = new Map();\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.readable = false;\n\n this.left.on('end', allowJoining.bind(this));\n\n function allowJoining ()\n {\n if (this.leftMap.size <= 0)\n return this.close();\n this.readable = true;\n this.right.on('readable', () => this.readable = true);\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n this.on('newListener', (eventName) =>\n {\n if (eventName === 'data' && !this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n })\n }\n\n hasResults ()\n {\n return !this.right.ended || this.matchIdx < this.matches.length;\n }\n\n close ()\n {\n super.close();\n this.left.close();\n this.right.close();\n }\n\n read ()\n {\n if (!this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n\n if (this.ended || !this.readable)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n this.match = this.right.read();\n\n if (this.match === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(this.match);\n this.matches = this.leftMap.get(hash) || [];\n this.matchIdx = 0;\n\n // array is filled again so recursive call can have results\n return this.read();\n }\n\n _addDataListener()\n {\n this.left.on('data', addItem.bind(this));\n\n function addItem(item)\n {\n let hash = this.funHash(item);\n if (!this.leftMap.has(hash))\n this.leftMap.set(hash, []);\n let arr = this.leftMap.get(hash);\n arr.push(item);\n }\n }\n}\n\nmodule.exports = HashJoin;\n","\nconst { MultiTransformIterator, SimpleTransformIterator, scheduleTask } = require('asynciterator');\n\n// https://en.wikipedia.org/wiki/Nested_loop_join\nclass NestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, right, funJoin, options)\n {\n super(left, options);\n\n this.right = right;\n this.funJoin = funJoin; // function that joins 2 elements or returns null if join is not possible\n this.on('end', () => this.right.close());\n }\n\n close ()\n {\n super.close();\n scheduleTask(() => this.right.close());\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.right.clone(), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = NestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Symmetric_Hash_Join\nclass SymmetricHashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.left = left;\n this.right = right;\n\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.usedLeft = false;\n this.leftMap = new Map();\n this.rightMap = new Map();\n\n this.on('end', () => this._cleanup() );\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n if (this.left.readable || this.right.readable)\n {\n this.readable = true;\n }\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.left.on('readable', () => this.readable = true);\n this.right.on('readable', () => this.readable = true);\n\n // this needs to be here since it's possible the left/right streams only get ended after there are no more results left\n this.left.on ('end', () => { if (!this.hasResults()) this._end(); });\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n hasResults()\n {\n // The \"!!this.match\" condition was added as a workaround to race\n // conditions and/or duplicate \"end\" events that may lead to premature\n // cleanups of the \"this.matches\" array.\n // See https://github.com/joachimvh/asyncjoin/issues/7\n return !this.left.ended || !this.right.ended || (!!this.matches && this.matchIdx < this.matches.length);\n }\n\n _cleanup ()\n {\n // motivate garbage collector to remove these\n this.leftMap = null;\n this.rightMap = null;\n this.matches = null;\n }\n\n close ()\n {\n super.close();\n this.left.close();\n this.right.close();\n }\n\n read ()\n {\n if (this.ended)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.usedLeft ? this.funJoin(this.match, item) : this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n let item = null;\n // try both streams if the first one has no value\n for (let i = 0; i < 2; ++i)\n {\n item = this.usedLeft ? this.right.read() : this.left.read();\n this.usedLeft = !this.usedLeft; // try other stream next time\n\n // found a result, no need to check the other stream this run\n if (item !== null)\n break;\n }\n\n if (item === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(item);\n let map = this.usedLeft ? this.leftMap : this.rightMap;\n if (!map.has(hash))\n map.set(hash, []);\n let arr = map.get(hash);\n arr.push(item);\n\n this.match = item;\n this.matches = (this.usedLeft ? this.rightMap : this.leftMap).get(hash) || [];\n this.matchIdx = 0;\n\n // array is filled again so recursive call can have results\n return this.read();\n }\n}\n\nmodule.exports = SymmetricHashJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// merges the contents of multiple streams\nclass MergeIterator extends AsyncIterator\n{\n constructor (streams)\n {\n super();\n \n if (!Array.isArray(streams))\n streams = Array.prototype.slice.call(arguments);\n \n this.streams = streams;\n \n for (let stream of streams)\n {\n stream.on('readable', () => this.emit('readable'));\n stream.on('end', () => this._removeStream(stream));\n }\n \n if (this.streams.length === 0)\n this.close();\n \n this.idx = this.streams.length-1;\n }\n \n _removeStream (stream)\n {\n let idx = this.streams.indexOf(stream);\n if (idx < 0)\n return;\n \n this.streams.splice(idx, 1);\n if (this.idx >= this.streams.length)\n --this.idx;\n \n if (this.streams.length === 0)\n this._end();\n }\n \n close ()\n {\n super.close();\n for (let stream of this.streams)\n stream.close();\n }\n \n read ()\n {\n for (let attempts = 0; attempts < this.streams.length; ++attempts)\n {\n this.idx = (this.idx + 1) % this.streams.length;\n let item = this.streams[this.idx].read();\n if (item !== null)\n return item;\n }\n \n return null;\n }\n}\n\nmodule.exports = MergeIterator;","const df_395_1 = new (require('@comunica/logger-void').LoggerVoid)();\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-init/^2.0.0/components/ActorInit.jsonld#ActorInit_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-context-preprocess/^2.0.0/components/ActorContextPreprocess.jsonld#ActorContextPreprocess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-bindings/^2.0.0/components/ActorHashBindings.jsonld#ActorHashBindings_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-query-operation/^2.0.0/components/ActorOptimizeQueryOperation.jsonld#ActorOptimizeQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus = new (require('@comunica/bus-query-operation').BusQueryOperation)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^2.0.0/components/ActorQueryOperation.jsonld#ActorQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-parse/^2.0.0/components/ActorQueryParse.jsonld#ActorQueryParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-result-serialize/^2.0.0/components/ActorQueryResultSerialize.jsonld#ActorQueryResultSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http-invalidate/^2.0.0/components/ActorHttpInvalidate.jsonld#ActorHttpInvalidate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-serialize/^2.0.0/components/ActorRdfSerialize.jsonld#ActorRdfSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^2.0.0/components/ActorHttp.jsonld#ActorHttp_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference/^2.0.0/components/ActorDereference.jsonld#ActorDereference_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse/^2.0.0/components/ActorRdfParse.jsonld#ActorRdfParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference-rdf/^2.0.0/components/ActorDereferenceRdf.jsonld#ActorDereferenceRdf_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-entries-sort/^2.0.0/components/ActorRdfJoinEntriesSort.jsonld#ActorRdfJoinEntriesSort_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-selectivity/^2.0.0/components/ActorRdfJoinSelectivity.jsonld#ActorRdfJoinSelectivity_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata/^2.0.0/components/ActorRdfMetadata.jsonld#ActorRdfMetadata_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-extract/^2.0.0/components/ActorRdfMetadataExtract.jsonld#ActorRdfMetadataExtract_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse-html/^2.0.0/components/ActorRdfParseHtml.jsonld#ActorRdfParseHtml_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia/^2.0.0/components/ActorRdfResolveHypermedia.jsonld#ActorRdfResolveHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links/^2.0.0/components/ActorRdfResolveHypermediaLinks.jsonld#ActorRdfResolveHypermediaLinks_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links-queue/^2.0.0/components/ActorRdfResolveHypermediaLinksQueue.jsonld#ActorRdfResolveHypermediaLinksQueue_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-hypermedia/^2.0.0/components/ActorRdfUpdateHypermedia.jsonld#ActorRdfUpdateHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads/^2.0.0/components/ActorRdfUpdateQuads.jsonld#ActorRdfUpdateQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^2.0.0/components/ActorRdfJoin.jsonld#ActorRdfJoin_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern_intercept__0_0_0_components_ActorRdfResolveQuadPatternIntercept_jsonld_ActorRdfResolveQuadPatternIntercept_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-quad-pattern-intercept/^0.0.0/components/ActorRdfResolveQuadPatternIntercept.jsonld#ActorRdfResolveQuadPatternIntercept_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-quad-pattern/^2.0.0/components/ActorRdfResolveQuadPattern.jsonld#ActorRdfResolveQuadPattern_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_rule__0_0_0_components_ActorOptimizeRule_jsonld_ActorOptimizeRule_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-rule/^0.0.0/components/ActorOptimizeRule.jsonld#ActorOptimizeRule_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_parse__0_0_0_components_ActorRuleParse_jsonld_ActorRuleParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rule-parse/^0.0.0/components/ActorRuleParse.jsonld#ActorRuleParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rule__0_0_0_components_ActorDereferenceRule_jsonld_ActorDereferenceRule_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference-rule/^0.0.0/components/ActorDereferenceRule.jsonld#ActorDereferenceRule_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_resolve__0_0_0_components_ActorRuleResolve_jsonld_ActorRuleResolve_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rule-resolve/^0.0.0/components/ActorRuleResolve.jsonld#ActorRuleResolve_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_reason__0_0_0_components_ActorRdfReason_jsonld_ActorRdfReason_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-reason/^0.0.0/components/ActorRdfReason.jsonld#ActorRdfReason_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads_intercept__0_0_0_components_ActorRdfUpdateQuadsIntercept_jsonld_ActorRdfUpdateQuadsIntercept_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads-intercept/^0.0.0/components/ActorRdfUpdateQuadsIntercept.jsonld#ActorRdfUpdateQuadsIntercept_default_bus'\n});\nconst urn_comunica_default_context_preprocess_actors_source_to_destination = new (require('@comunica/actor-context-preprocess-source-to-destination').ActorContextPreprocessSourceToDestination)({\n 'name': 'urn:comunica:default:context-preprocess/actors#source-to-destination',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:context-preprocess/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_hash_bindings_actors_sha1 = new (require('@comunica/actor-hash-bindings-sha1').ActorHashBindingsSha1)({\n 'name': 'urn:comunica:default:hash-bindings/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_bindings_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-bindings/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:optimize-query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_bgp = new (require('@comunica/actor-optimize-query-operation-join-bgp').ActorOptimizeQueryOperationJoinBgp)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_bgp_to_join = new (require('@comunica/actor-optimize-query-operation-bgp-to-join').ActorOptimizeQueryOperationBgpToJoin)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#bgp-to-join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_connected = new (require('@comunica/actor-optimize-query-operation-join-connected').ActorOptimizeQueryOperationJoinConnected)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-connected',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'httpRequests',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_values = new (require('@comunica/actor-query-operation-values').ActorQueryOperationValues)({\n 'name': 'urn:comunica:default:query-operation/actors#values',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_parse_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-parse/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_actors_sparql = new (require('@comunica/actor-query-parse-sparql').ActorQueryParseSparql)({\n 'prefixes': {\"dbpedia\":\"http://dbpedia.org/resource/\",\"dbpedia-owl\":\"http://dbpedia.org/ontology/\",\"dbpprop\":\"http://dbpedia.org/property/\",\"dc\":\"http://purl.org/dc/terms/\",\"dc11\":\"http://purl.org/dc/elements/1.1/\",\"dcterms\":\"http://purl.org/dc/terms/\",\"foaf\":\"http://xmlns.com/foaf/0.1/\",\"geo\":\"http://www.w3.org/2003/01/geo/wgs84_pos#\",\"owl\":\"http://www.w3.org/2002/07/owl#\",\"rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"rdfs\":\"http://www.w3.org/2000/01/rdf-schema#\",\"schema\":\"http://schema.org/\",\"skos\":\"http://www.w3.org/2008/05/skos#\",\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"},\n 'name': 'urn:comunica:default:query-parse/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_actors_graphql = new (require('@comunica/actor-query-parse-graphql').ActorQueryParseGraphql)({\n 'name': 'urn:comunica:default:query-parse/actors#graphql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-result-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_json = new (require('@comunica/actor-query-result-serialize-json').ActorQueryResultSerializeJson)({\n 'mediaTypePriorities': {\"application/json\":1},\n 'mediaTypeFormats': {\"application/json\":\"https://comunica.linkeddatafragments.org/#results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_simple = new (require('@comunica/actor-query-result-serialize-simple').ActorQueryResultSerializeSimple)({\n 'mediaTypePriorities': {\"simple\":0.9},\n 'mediaTypeFormats': {\"simple\":\"https://comunica.linkeddatafragments.org/#results_simple\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#simple',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_csv = new (require('@comunica/actor-query-result-serialize-sparql-csv').ActorQueryResultSerializeSparqlCsv)({\n 'mediaTypePriorities': {\"text/csv\":0.75},\n 'mediaTypeFormats': {\"text/csv\":\"http://www.w3.org/ns/formats/SPARQL_Results_CSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#csv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_json = new (require('@comunica/actor-query-result-serialize-sparql-json').ActorQueryResultSerializeSparqlJson)({\n 'mediaTypePriorities': {\"application/sparql-results+json\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+json\":\"http://www.w3.org/ns/formats/SPARQL_Results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_tsv = new (require('@comunica/actor-query-result-serialize-sparql-tsv').ActorQueryResultSerializeSparqlTsv)({\n 'mediaTypePriorities': {\"text/tab-separated-values\":0.75},\n 'mediaTypeFormats': {\"text/tab-separated-values\":\"http://www.w3.org/ns/formats/SPARQL_Results_TSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-tsv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_xml = new (require('@comunica/actor-query-result-serialize-sparql-xml').ActorQueryResultSerializeSparqlXml)({\n 'mediaTypePriorities': {\"application/sparql-results+xml\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+xml\":\"http://www.w3.org/ns/formats/SPARQL_Results_XML\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-xml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_table = new (require('@comunica/actor-query-result-serialize-table').ActorQueryResultSerializeTable)({\n 'columnWidth': 50,\n 'mediaTypePriorities': {\"table\":0.6},\n 'mediaTypeFormats': {\"table\":\"https://comunica.linkeddatafragments.org/#results_table\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#table',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_tree = new (require('@comunica/actor-query-result-serialize-tree').ActorQueryResultSerializeTree)({\n 'mediaTypePriorities': {\"tree\":0.5},\n 'mediaTypeFormats': {\"tree\":\"https://comunica.linkeddatafragments.org/#results_tree\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#tree',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_http_invalidate_mediators_main = new (require('@comunica/mediator-all').MediatorAll)({\n 'name': 'urn:comunica:default:http-invalidate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_update_quads_hypermedia__2_0_0_components_ActorRdfUpdateQuadsHypermedia_jsonld_IActorRdfUpdateQuadsHypermediaArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-update-quads-hypermedia/^2.0.0/components/ActorRdfUpdateQuadsHypermedia.jsonld#IActorRdfUpdateQuadsHypermediaArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_resolve_quad_pattern_hypermedia__2_0_0_components_ActorRdfResolveQuadPatternHypermedia_jsonld_IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-resolve-quad-pattern-hypermedia/^2.0.0/components/ActorRdfResolveQuadPatternHypermedia.jsonld#IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rule_resolve_hypermedia__0_0_0_components_ActorRuleResolveHypermedia_jsonld_IActorRuleResolveHypermediaArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rule-resolve-hypermedia/^0.0.0/components/ActorRuleResolveHypermedia.jsonld#IActorRuleResolveHypermediaArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_n3 = new (require('@comunica/actor-rdf-serialize-n3').ActorRdfSerializeN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'name': 'urn:comunica:default:rdf-serialize/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_jsonld = new (require('@comunica/actor-rdf-serialize-jsonld').ActorRdfSerializeJsonLd)({\n 'jsonStringifyIndentSpaces': 2,\n 'mediaTypePriorities': {\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-serialize/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__2_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer = new (require('@comunica/actor-query-result-serialize-stats').ActionObserverHttp)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^2.0.0/components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats_default_observer',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_http_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'time',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:http/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_http_actors_fetch = new (require('@comunica/actor-http-fetch').ActorHttpFetch)({\n 'agentOptions': {\"keepAlive\":true,\"maxSockets\":5},\n 'name': 'urn:comunica:default:http/actors#fetch',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_dereference_actors_fallback = new (require('@comunica/actor-dereference-fallback').ActorDereferenceFallback)({\n 'name': 'urn:comunica:default:dereference/actors#fallback',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_dereference_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_dereference_actors_constant_hylar_rdfs = new (require('@comunica/actor-dereference-constant-hylar-rdfs').ActorDereferenceConstantHylarRdfs)({\n 'name': 'urn:comunica:default:dereference/actors#constant-hylar-rdfs',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_dereference_actors_constant_hylar_owl2rl = new (require('@comunica/actor-dereference-constant-hylar-owl2rl').ActorDereferenceConstantHylarOwl2rl)({\n 'name': 'urn:comunica:default:dereference/actors#constant-hylar-owl2rl',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_rdf_parse_mediators_parse = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-parse/mediators#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-parse/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_n3 = new (require('@comunica/actor-rdf-parse-n3').ActorRdfParseN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'priorityScale': 1,\n 'name': 'urn:comunica:default:rdf-parse/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_rdfxml = new (require('@comunica/actor-rdf-parse-rdfxml').ActorRdfParseRdfXml)({\n 'mediaTypePriorities': {\"application/rdf+xml\":1},\n 'mediaTypeFormats': {\"application/rdf+xml\":\"http://www.w3.org/ns/formats/RDF_XML\"},\n 'priorityScale': 0.5,\n 'name': 'urn:comunica:default:rdf-parse/actors#rdfxml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_xmlrdfa = new (require('@comunica/actor-rdf-parse-xml-rdfa').ActorRdfParseXmlRdfa)({\n 'mediaTypePriorities': {\"application/xml\":1,\"image/svg+xml\":1,\"text/xml\":1},\n 'mediaTypeFormats': {\"application/xml\":\"http://www.w3.org/ns/formats/RDFa\",\"image/svg+xml\":\"http://www.w3.org/ns/formats/RDFa\",\"text/xml\":\"http://www.w3.org/ns/formats/RDFa\"},\n 'priorityScale': 0.3,\n 'name': 'urn:comunica:default:rdf-parse/actors#xmlrdfa',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_dereference_rdf_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference-rdf/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_actors_cardinality = new (require('@comunica/actor-rdf-join-entries-sort-cardinality').ActorRdfJoinEntriesSortCardinality)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_actors_variable_counting = new (require('@comunica/actor-rdf-join-selectivity-variable-counting').ActorRdfJoinSelectivityVariableCounting)({\n 'name': 'urn:comunica:default:rdf-join-selectivity/actors#variable-counting',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'accuracy',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-join-selectivity/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_metadata_actors_primary_topic = new (require('@comunica/actor-rdf-metadata-primary-topic').ActorRdfMetadataPrimaryTopic)({\n 'metadataToData': false,\n 'dataToMetadataOnInvalidMetadataGraph': true,\n 'name': 'urn:comunica:default:rdf-metadata/actors#primary-topic',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_actors_all = new (require('@comunica/actor-rdf-metadata-all').ActorRdfMetadataAll)({\n 'name': 'urn:comunica:default:rdf-metadata/actors#all',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-metadata/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_controls = new (require('@comunica/actor-rdf-metadata-extract-hydra-controls').ActorRdfMetadataExtractHydraControls)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-controls',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_count = new (require('@comunica/actor-rdf-metadata-extract-hydra-count').ActorRdfMetadataExtractHydraCount)({\n 'predicates': [\n 'http://www.w3.org/ns/hydra/core#totalItems',\n 'http://rdfs.org/ns/void#triples'\n],\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-count',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_pagesize = new (require('@comunica/actor-rdf-metadata-extract-hydra-pagesize').ActorRdfMetadataExtractHydraPagesize)({\n 'predicates': [\n 'http://www.w3.org/ns/hydra/core#itemsPerPage'\n],\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-pagesize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_request_time = new (require('@comunica/actor-rdf-metadata-extract-request-time').ActorRdfMetadataExtractRequestTime)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#request-time',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_allow_http_methods = new (require('@comunica/actor-rdf-metadata-extract-allow-http-methods').ActorRdfMetadataExtractAllowHttpMethods)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#allow-http-methods',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_put_accepted = new (require('@comunica/actor-rdf-metadata-extract-put-accepted').ActorRdfMetadataExtractPutAccepted)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#put-accepted',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_patch_sparql_update = new (require('@comunica/actor-rdf-metadata-extract-patch-sparql-update').ActorRdfMetadataExtractPatchSparqlUpdate)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#patch-sparql-update',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_sparql_service = new (require('@comunica/actor-rdf-metadata-extract-sparql-service').ActorRdfMetadataExtractSparqlService)({\n 'inferHttpsEndpoint': true,\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#sparql-service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-extract/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_html = new (require('@comunica/actor-rdf-parse-html').ActorRdfParseHtml)({\n 'busRdfParseHtml': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus,\n 'mediaTypePriorities': {\"application/xhtml+xml\":0.9,\"text/html\":1},\n 'mediaTypeFormats': {\"application/xhtml+xml\":\"http://www.w3.org/ns/formats/HTML\",\"text/html\":\"http://www.w3.org/ns/formats/HTML\"},\n 'priorityScale': 0.2,\n 'name': 'urn:comunica:default:rdf-parse/actors#html',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_microdata = new (require('@comunica/actor-rdf-parse-html-microdata').ActorRdfParseHtmlMicrodata)({\n 'name': 'urn:comunica:default:rdf-parse-html/actors#microdata',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_rdfa = new (require('@comunica/actor-rdf-parse-html-rdfa').ActorRdfParseHtmlRdfa)({\n 'name': 'urn:comunica:default:rdf-parse-html/actors#rdfa',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_actors_none = new (require('@comunica/actor-rdf-resolve-hypermedia-none').ActorRdfResolveHypermediaNone)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/actors#none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'filterFactor',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_actors_next = new (require('@comunica/actor-rdf-resolve-hypermedia-links-next').ActorRdfResolveHypermediaLinksNext)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/actors#next',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_actors_fifo = new (require('@comunica/actor-rdf-resolve-hypermedia-links-queue-fifo').ActorRdfResolveHypermediaLinksQueueFifo)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/actors#fifo',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_rdfjs_store = new (require('@comunica/actor-rdf-update-quads-rdfjs-store').ActorRdfUpdateQuadsRdfJsStore)({\n 'name': 'urn:comunica:default:rdf-update-quads/actors#rdfjs-store',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_join_mediators_main = new (require('@comunica/mediator-join-coefficients-fixed').MediatorJoinCoefficientsFixed)({\n 'cpuWeight': 1,\n 'memoryWeight': 1,\n 'timeWeight': 10,\n 'ioWeight': 100,\n 'name': 'urn:comunica:default:rdf-join/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_intercept_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern-intercept/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern_intercept__0_0_0_components_ActorRdfResolveQuadPatternIntercept_jsonld_ActorRdfResolveQuadPatternIntercept_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_rdfjs_source = new (require('@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source').ActorRdfResolveQuadPatternRdfJsSource)({\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#rdfjs-source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_optimize_rule_actors_remove_false_conclusion = new (require('@comunica/actor-optimize-rule-remove-false-conclusion').ActorOptimizeRuleRemoveFalseConclusion)({\n 'name': 'urn:comunica:default:optimize-rule/actors#remove-false-conclusion',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_rule__0_0_0_components_ActorOptimizeRule_jsonld_ActorOptimizeRule_default_bus\n});\nconst urn_comunica_default_optimize_rule_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:optimize-rule/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_rule__0_0_0_components_ActorOptimizeRule_jsonld_ActorOptimizeRule_default_bus\n});\nconst urn_comunica_default_rule_parse_actors_hylar = new (require('@comunica/actor-rule-parse-hylar').ActorRuleParseHylar)({\n 'mediaTypePriorities': {\"application/hylar\":1,\"text/hylar\":0.9},\n 'mediaTypeFormats': {\"application/hylar\":\"http://www.w3.org/ns/formats/Hylar\",\"text/hylar\":\"http://www.w3.org/ns/formats/Hylar\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rule-parse/actors#hylar',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_parse__0_0_0_components_ActorRuleParse_jsonld_ActorRuleParse_default_bus\n});\nconst urn_comunica_default_rule_parse_mediators_parse = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rule-parse/mediators#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_parse__0_0_0_components_ActorRuleParse_jsonld_ActorRuleParse_default_bus\n});\nconst urn_comunica_default_rule_parse_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rule-parse/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_parse__0_0_0_components_ActorRuleParse_jsonld_ActorRuleParse_default_bus\n});\nconst urn_comunica_default_dereference_rule_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference-rule/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rule__0_0_0_components_ActorDereferenceRule_jsonld_ActorDereferenceRule_default_bus\n});\nconst urn_comunica_default_rule_resolve_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rule-resolve/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_resolve__0_0_0_components_ActorRuleResolve_jsonld_ActorRuleResolve_default_bus\n});\nconst urn_comunica_default_rdf_reason_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-reason/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_reason__0_0_0_components_ActorRdfReason_jsonld_ActorRdfReason_default_bus\n});\nconst urn_comunica_default_query_operation_actors_ask = new (require('@comunica/actor-query-operation-ask').ActorQueryOperationAsk)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#ask',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_bgp = new (require('@comunica/actor-query-operation-bgp-join').ActorQueryOperationBgpJoin)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_construct = new (require('@comunica/actor-query-operation-construct').ActorQueryOperationConstruct)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#construct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_describe = new (require('@comunica/actor-query-operation-describe-subject').ActorQueryOperationDescribeSubject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#describe',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_distinct = new (require('@comunica/actor-query-operation-distinct-hash').ActorQueryOperationDistinctHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_extend = new (require('@comunica/actor-query-operation-extend').ActorQueryOperationExtend)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#extend',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_filter = new (require('@comunica/actor-query-operation-filter-sparqlee').ActorQueryOperationFilterSparqlee)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#filter',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_from = new (require('@comunica/actor-query-operation-from-quad').ActorQueryOperationFromQuad)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#from',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_group = new (require('@comunica/actor-query-operation-group').ActorQueryOperationGroup)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#group',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_nop = new (require('@comunica/actor-query-operation-nop').ActorQueryOperationNop)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#nop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_orderby = new (require('@comunica/actor-query-operation-orderby-sparqlee').ActorQueryOperationOrderBySparqlee)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#orderby',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_project = new (require('@comunica/actor-query-operation-project').ActorQueryOperationProject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#project',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_reduced = new (require('@comunica/actor-query-operation-reduced-hash').ActorQueryOperationReducedHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'cacheSize': 100,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#reduced',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_service = new (require('@comunica/actor-query-operation-service').ActorQueryOperationService)({\n 'forceSparqlEndpoint': false,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_slice = new (require('@comunica/actor-query-operation-slice').ActorQueryOperationSlice)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#slice',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_union = new (require('@comunica/actor-query-operation-union').ActorQueryOperationUnion)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#union',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_alt = new (require('@comunica/actor-query-operation-path-alt').ActorQueryOperationPathAlt)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-alt',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_inv = new (require('@comunica/actor-query-operation-path-inv').ActorQueryOperationPathInv)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-inv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_link = new (require('@comunica/actor-query-operation-path-link').ActorQueryOperationPathLink)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-link',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_nps = new (require('@comunica/actor-query-operation-path-nps').ActorQueryOperationPathNps)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-nps',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_one_or_more = new (require('@comunica/actor-query-operation-path-one-or-more').ActorQueryOperationPathOneOrMore)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-one-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_more = new (require('@comunica/actor-query-operation-path-zero-or-more').ActorQueryOperationPathZeroOrMore)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_one = new (require('@comunica/actor-query-operation-path-zero-or-one').ActorQueryOperationPathZeroOrOne)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-one',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_add = new (require('@comunica/actor-query-operation-update-add-rewrite').ActorQueryOperationAddRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-add',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_composite = new (require('@comunica/actor-query-operation-update-compositeupdate').ActorQueryOperationUpdateCompositeUpdate)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-composite',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_copy = new (require('@comunica/actor-query-operation-update-copy-rewrite').ActorQueryOperationCopyRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-copy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_move = new (require('@comunica/actor-query-operation-update-move-rewrite').ActorQueryOperationMoveRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-move',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_init_actors_query = new (require('@comunica/actor-init-query').ActorInitQuery)({\n 'mediatorOptimizeQueryOperation': urn_comunica_default_optimize_query_operation_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorQueryParse': urn_comunica_default_query_parse_mediators_main,\n 'mediatorQueryResultSerialize': urn_comunica_default_query_result_serialize_mediators_serialize,\n 'mediatorQueryResultSerializeMediaTypeCombiner': urn_comunica_default_query_result_serialize_mediators_mediaType,\n 'mediatorQueryResultSerializeMediaTypeFormatCombiner': urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat,\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'mediatorHttpInvalidate': urn_comunica_default_http_invalidate_mediators_main,\n 'logger': df_395_1,\n 'defaultQueryInputFormat': 'sparql',\n 'contextKeyShortcuts': {\"baseIRI\":\"@comunica/actor-init-query:baseIRI\",\"datetime\":\"@comunica/actor-http-memento:datetime\",\"destination\":\"@comunica/bus-rdf-update-quads:destination\",\"explain\":\"@comunica/actor-init-query:explain\",\"extensionFunctionCreator\":\"@comunica/actor-init-query:extensionFunctionCreator\",\"extensionFunctions\":\"@comunica/actor-init-query:extensionFunctions\",\"fetch\":\"@comunica/bus-http:fetch\",\"httpAuth\":\"@comunica/bus-http:auth\",\"httpIncludeCredentials\":\"@comunica/bus-http:include-credentials\",\"httpProxyHandler\":\"@comunica/actor-http-proxy:httpProxyHandler\",\"initialBindings\":\"@comunica/actor-init-query:initialBindings\",\"lenient\":\"@comunica/actor-init-query:lenient\",\"log\":\"@comunica/core:log\",\"queryFormat\":\"@comunica/actor-init-query:queryFormat\",\"queryTimestamp\":\"@comunica/actor-init-query:queryTimestamp\",\"readOnly\":\"@comunica/bus-query-operation:readOnly\",\"source\":\"@comunica/bus-rdf-resolve-quad-pattern:source\",\"sources\":\"@comunica/bus-rdf-resolve-quad-pattern:sources\"},\n 'name': 'urn:comunica:default:init/actors#query',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_rdf = new (require('@comunica/actor-query-result-serialize-rdf').ActorQueryResultSerializeRdf)({\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'mediatorMediaTypeCombiner': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorMediaTypeFormatCombiner': urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat,\n 'name': 'urn:comunica:default:query-result-serialize/actors#rdf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_stats = new (require('@comunica/actor-query-result-serialize-stats').ActorQueryResultSerializeStats)({\n 'httpObserver': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__2_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer,\n 'mediaTypePriorities': {\"stats\":0.5},\n 'mediaTypeFormats': {\"stats\":\"https://comunica.linkeddatafragments.org/#results_stats\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#stats',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_jsonld = new (require('@comunica/actor-rdf-parse-jsonld').ActorRdfParseJsonLd)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediaTypePriorities': {\"application/json\":0.5,\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/json\":\"http://www.w3.org/ns/formats/JSON-LD\",\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-parse/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql = new (require('@comunica/actor-rdf-resolve-hypermedia-sparql').ActorRdfResolveHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffix': true,\n 'forceHttpGet': false,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_patch_sparql_update = new (require('@comunica/actor-rdf-update-hypermedia-patch-sparql-update').ActorRdfUpdateHypermediaPatchSparqlUpdate)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#patch-sparql-update',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_put_ldp = new (require('@comunica/actor-rdf-update-hypermedia-put-ldp').ActorRdfUpdateHypermediaPutLdp)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediatorRdfSerializeMediatypes': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#put-ldp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_sparql = new (require('@comunica/actor-rdf-update-hypermedia-sparql').ActorRdfUpdateHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffixSparql': true,\n 'checkUrlSuffixUpdate': true,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_query_operation_actors_sparql_endpoint = new (require('@comunica/actor-query-operation-sparql-endpoint').ActorQueryOperationSparqlEndpoint)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffixSparql': true,\n 'checkUrlSuffixUpdate': true,\n 'forceHttpGet': false,\n 'name': 'urn:comunica:default:query-operation/actors#sparql-endpoint',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_dereference_rdf_actors_parse = new (require('@comunica/actor-dereference-rdf-parse').ActorDereferenceRdfParse)({\n 'mediatorDereference': urn_comunica_default_dereference_mediators_main,\n 'mediatorParse': urn_comunica_default_rdf_parse_mediators_parse,\n 'mediatorParseMediatypes': urn_comunica_default_rdf_parse_mediators_mediaType,\n 'mediaMappings': {\"htm\":\"text/html\",\"html\":\"text/html\",\"json\":\"application/json\",\"jsonld\":\"application/ld+json\",\"n3\":\"text/n3\",\"nq\":\"application/n-quads\",\"nquads\":\"application/n-quads\",\"nt\":\"application/n-triples\",\"ntriples\":\"application/n-triples\",\"owl\":\"application/rdf+xml\",\"rdf\":\"application/rdf+xml\",\"rdfxml\":\"application/rdf+xml\",\"svg\":\"image/svg+xml\",\"svgz\":\"image/svg+xml\",\"trig\":\"application/trig\",\"ttl\":\"text/turtle\",\"turtle\":\"text/turtle\",\"xht\":\"application/xhtml+xml\",\"xhtml\":\"application/xhtml+xml\",\"xml\":\"application/xml\"},\n 'name': 'urn:comunica:default:dereference-rdf/actors#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_script = new (require('@comunica/actor-rdf-parse-html-script').ActorRdfParseHtmlScript)({\n 'mediatorRdfParseMediatypes': urn_comunica_default_rdf_parse_mediators_mediaType,\n 'mediatorRdfParseHandle': urn_comunica_default_rdf_parse_mediators_parse,\n 'name': 'urn:comunica:default:rdf-parse-html/actors#script',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_none = new (require('@comunica/actor-rdf-join-inner-none').ActorRdfJoinNone)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_single = new (require('@comunica/actor-rdf-join-inner-single').ActorRdfJoinSingle)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-single',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_empty = new (require('@comunica/actor-rdf-join-inner-multi-empty').ActorRdfJoinMultiEmpty)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-empty',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind = new (require('@comunica/actor-rdf-join-inner-multi-bind').ActorRdfJoinMultiBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_hash = new (require('@comunica/actor-rdf-join-inner-hash').ActorRdfJoinHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_symmetric_hash = new (require('@comunica/actor-rdf-join-inner-symmetrichash').ActorRdfJoinSymmetricHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-symmetric-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_nested_loop = new (require('@comunica/actor-rdf-join-inner-nestedloop').ActorRdfJoinNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash = new (require('@comunica/actor-rdf-join-minus-hash').ActorRdfJoinMinusHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash_undef = new (require('@comunica/actor-rdf-join-minus-hash-undef').ActorRdfJoinMinusHashUndef)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash-undef',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_bind = new (require('@comunica/actor-rdf-join-optional-bind').ActorRdfJoinOptionalBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_nested_loop = new (require('@comunica/actor-rdf-join-optional-nestedloop').ActorRdfJoinOptionalNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_actors_qpf = new (require('@comunica/actor-rdf-resolve-hypermedia-qpf').ActorRdfResolveHypermediaQpf)({\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'subjectUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#subject',\n 'predicateUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate',\n 'objectUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#object',\n 'graphUri': 'http://www.w3.org/ns/sparql-service-description#graph',\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/actors#qpf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_hypermedia = new (require('@comunica/actor-rdf-resolve-quad-pattern-hypermedia').ActorRdfResolveQuadPatternHypermedia)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_resolve_quad_pattern_hypermedia__2_0_0_components_ActorRdfResolveQuadPatternHypermedia_jsonld_IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator,\n 'maxIterators': 64,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorRdfResolveHypermedia': urn_comunica_default_rdf_resolve_hypermedia_mediators_main,\n 'mediatorRdfResolveHypermediaLinks': urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main,\n 'mediatorRdfResolveHypermediaLinksQueue': urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_hypermedia = new (require('@comunica/actor-rdf-update-quads-hypermedia').ActorRdfUpdateQuadsHypermedia)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_update_quads_hypermedia__2_0_0_components_ActorRdfUpdateQuadsHypermedia_jsonld_IActorRdfUpdateQuadsHypermediaArgs_default_invalidator,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorRdfUpdateHypermedia': urn_comunica_default_rdf_update_hypermedia_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-quads/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_clear = new (require('@comunica/actor-query-operation-update-clear').ActorQueryOperationClear)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-clear',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_create = new (require('@comunica/actor-query-operation-update-create').ActorQueryOperationCreate)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-create',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_delete_insert = new (require('@comunica/actor-query-operation-update-deleteinsert').ActorQueryOperationUpdateDeleteInsert)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-delete-insert',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_drop = new (require('@comunica/actor-query-operation-update-drop').ActorQueryOperationDrop)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-drop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_load = new (require('@comunica/actor-query-operation-update-load').ActorQueryOperationLoad)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-load',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_join = new (require('@comunica/actor-query-operation-join').ActorQueryOperationJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_leftjoin = new (require('@comunica/actor-query-operation-leftjoin').ActorQueryOperationLeftJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#leftjoin',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_minus = new (require('@comunica/actor-query-operation-minus').ActorQueryOperationMinus)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#minus',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_seq = new (require('@comunica/actor-query-operation-path-seq').ActorQueryOperationPathSeq)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-seq',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest = new (require('@comunica/actor-rdf-join-inner-multi-smallest').ActorRdfJoinMultiSmallest)({\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_query_operation_actors_quadpattern = new (require('@comunica/actor-query-operation-quadpattern').ActorQueryOperationQuadpattern)({\n 'mediatorResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_intercept_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#quadpattern',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_federated = new (require('@comunica/actor-rdf-resolve-quad-pattern-federated').ActorRdfResolveQuadPatternFederated)({\n 'mediatorResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'skipEmptyPatterns': false,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#federated',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_dereference_rule_actors_parse = new (require('@comunica/actor-dereference-rule-parse').ActorDereferenceRuleParse)({\n 'mediatorDereference': urn_comunica_default_dereference_mediators_main,\n 'mediatorParse': urn_comunica_default_rule_parse_mediators_parse,\n 'mediatorParseMediatypes': urn_comunica_default_rule_parse_mediators_mediaType,\n 'mediaMappings': {\"htm\":\"text/html\",\"html\":\"text/html\",\"hylar\":\"text/hylar\",\"json\":\"application/json\",\"jsonld\":\"application/ld+json\",\"n3\":\"text/n3\",\"nq\":\"application/n-quads\",\"nquads\":\"application/n-quads\",\"nt\":\"application/n-triples\",\"ntriples\":\"application/n-triples\",\"owl\":\"application/rdf+xml\",\"rdf\":\"application/rdf+xml\",\"rdfxml\":\"application/rdf+xml\",\"svg\":\"image/svg+xml\",\"svgz\":\"image/svg+xml\",\"trig\":\"application/trig\",\"ttl\":\"text/turtle\",\"turtle\":\"text/turtle\",\"xht\":\"application/xhtml+xml\",\"xhtml\":\"application/xhtml+xml\",\"xml\":\"application/xml\"},\n 'name': 'urn:comunica:default:dereference-rule/actors#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rule__0_0_0_components_ActorDereferenceRule_jsonld_ActorDereferenceRule_default_bus\n});\nconst urn_comunica_default_rule_resolve_actors_hypermedia = new (require('@comunica/actor-rule-resolve-hypermedia').ActorRuleResolveHypermedia)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rule_resolve_hypermedia__0_0_0_components_ActorRuleResolveHypermedia_jsonld_IActorRuleResolveHypermediaArgs_default_invalidator,\n 'mediatorDereferenceRule': urn_comunica_default_dereference_rule_mediators_main,\n 'name': 'urn:comunica:default:rule-resolve/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rule_resolve__0_0_0_components_ActorRuleResolve_jsonld_ActorRuleResolve_default_bus\n});\nconst urn_comunica_default_rdf_reason_actors_rule_restriction = new (require('@comunica/actor-rdf-reason-rule-restriction').ActorRdfReasonRuleRestriction)({\n 'mediatorRdfUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorRdfResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'mediatorRuleResolve': urn_comunica_default_rule_resolve_mediators_main,\n 'mediatorOptimizeRule': urn_comunica_default_optimize_rule_mediators_main,\n 'name': 'urn:comunica:default:rdf-reason/actors#rule-restriction',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_reason__0_0_0_components_ActorRdfReason_jsonld_ActorRdfReason_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_intercept_actors_reasoned = new (require('@comunica/actor-rdf-resolve-quad-pattern-intercept-reasoned').ActorRdfResolveQuadPatternInterceptReasoned)({\n 'mediatorRdfReason': urn_comunica_default_rdf_reason_mediators_main,\n 'mediatorRdfResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern-intercept/actors#reasoned',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern_intercept__0_0_0_components_ActorRdfResolveQuadPatternIntercept_jsonld_ActorRdfResolveQuadPatternIntercept_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_intercept_actors_reasoned = new (require('@comunica/actor-rdf-update-quads-intercept-reasoned').ActorRdfUpdateQuadsInterceptReasoned)({\n 'mediatorRdfReason': urn_comunica_default_rdf_reason_mediators_main,\n 'mediatorRdfResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'mediatorRdfUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-quads-intercept/actors#reasoned',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads_intercept__0_0_0_components_ActorRdfUpdateQuadsIntercept_jsonld_ActorRdfUpdateQuadsIntercept_default_bus\n});\nconst urn_comunica_default_http_actors_proxy = new (require('@comunica/actor-http-proxy').ActorHttpProxy)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'name': 'urn:comunica:default:http/actors#proxy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus,\n 'beforeActors': [\n urn_comunica_default_http_actors_fetch\n]\n});\nconst urn_comunica_default_dereference_actors_http = new (require('@comunica/actor-dereference-http').ActorDereferenceHttp)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'maxAcceptHeaderLength': 1024,\n 'maxAcceptHeaderLengthBrowser': 128,\n 'name': 'urn:comunica:default:dereference/actors#http',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus,\n 'beforeActors': [\n urn_comunica_default_dereference_actors_fallback\n]\n});\nconst urn_comunica_default_optimize_rule_actors_pattern_restriction = new (require('@comunica/actor-optimize-rule-pattern-restriction').ActorOptimizeRulePatternRestriction)({\n 'name': 'urn:comunica:default:optimize-rule/actors#pattern-restriction',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_rule__0_0_0_components_ActorOptimizeRule_jsonld_ActorOptimizeRule_default_bus,\n 'beforeActors': [\n urn_comunica_default_optimize_rule_actors_remove_false_conclusion\n]\n});\nconst urn_comunica_default_Runner = (https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus, [\n urn_comunica_default_context_preprocess_actors_source_to_destination,\n urn_comunica_default_hash_bindings_actors_sha1,\n urn_comunica_default_init_actors_query,\n urn_comunica_default_optimize_query_operation_actors_join_bgp,\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join,\n urn_comunica_default_optimize_query_operation_actors_join_connected,\n urn_comunica_default_query_parse_actors_sparql,\n urn_comunica_default_query_parse_actors_graphql,\n urn_comunica_default_query_result_serialize_actors_json,\n urn_comunica_default_query_result_serialize_actors_rdf,\n urn_comunica_default_query_result_serialize_actors_simple,\n urn_comunica_default_query_result_serialize_actors_csv,\n urn_comunica_default_query_result_serialize_actors_sparql_json,\n urn_comunica_default_query_result_serialize_actors_sparql_tsv,\n urn_comunica_default_query_result_serialize_actors_sparql_xml,\n urn_comunica_default_query_result_serialize_actors_stats,\n urn_comunica_default_query_result_serialize_actors_table,\n urn_comunica_default_query_result_serialize_actors_tree,\n urn_comunica_default_dereference_actors_http,\n urn_comunica_default_dereference_actors_fallback,\n urn_comunica_default_dereference_rdf_actors_parse,\n urn_comunica_default_rdf_join_entries_sort_actors_cardinality,\n urn_comunica_default_rdf_join_selectivity_actors_variable_counting,\n urn_comunica_default_rdf_metadata_actors_primary_topic,\n urn_comunica_default_rdf_metadata_actors_all,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_controls,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_count,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_pagesize,\n urn_comunica_default_rdf_metadata_extract_actors_request_time,\n urn_comunica_default_rdf_metadata_extract_actors_allow_http_methods,\n urn_comunica_default_rdf_metadata_extract_actors_put_accepted,\n urn_comunica_default_rdf_metadata_extract_actors_patch_sparql_update,\n urn_comunica_default_rdf_metadata_extract_actors_sparql_service,\n urn_comunica_default_rdf_parse_actors_n3,\n urn_comunica_default_rdf_parse_actors_jsonld,\n urn_comunica_default_rdf_parse_actors_rdfxml,\n urn_comunica_default_rdf_parse_actors_xmlrdfa,\n urn_comunica_default_rdf_parse_actors_html,\n urn_comunica_default_rdf_parse_html_actors_microdata,\n urn_comunica_default_rdf_parse_html_actors_rdfa,\n urn_comunica_default_rdf_parse_html_actors_script,\n urn_comunica_default_rdf_resolve_hypermedia_actors_qpf,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql,\n urn_comunica_default_rdf_resolve_hypermedia_actors_none,\n urn_comunica_default_rdf_resolve_hypermedia_links_actors_next,\n urn_comunica_default_rdf_resolve_hypermedia_links_queue_actors_fifo,\n urn_comunica_default_rdf_serialize_actors_n3,\n urn_comunica_default_rdf_serialize_actors_jsonld,\n urn_comunica_default_rdf_update_hypermedia_actors_patch_sparql_update,\n urn_comunica_default_rdf_update_hypermedia_actors_put_ldp,\n urn_comunica_default_rdf_update_hypermedia_actors_sparql,\n urn_comunica_default_rdf_update_quads_actors_hypermedia,\n urn_comunica_default_rdf_update_quads_actors_rdfjs_store,\n urn_comunica_default_http_actors_proxy,\n urn_comunica_default_http_actors_fetch,\n urn_comunica_default_query_operation_actors_ask,\n urn_comunica_default_query_operation_actors_bgp,\n urn_comunica_default_query_operation_actors_construct,\n urn_comunica_default_query_operation_actors_describe,\n urn_comunica_default_query_operation_actors_distinct,\n urn_comunica_default_query_operation_actors_extend,\n urn_comunica_default_query_operation_actors_filter,\n urn_comunica_default_query_operation_actors_from,\n urn_comunica_default_query_operation_actors_group,\n urn_comunica_default_query_operation_actors_join,\n urn_comunica_default_query_operation_actors_leftjoin,\n urn_comunica_default_query_operation_actors_minus,\n urn_comunica_default_query_operation_actors_nop,\n urn_comunica_default_query_operation_actors_orderby,\n urn_comunica_default_query_operation_actors_project,\n urn_comunica_default_query_operation_actors_quadpattern,\n urn_comunica_default_query_operation_actors_reduced,\n urn_comunica_default_query_operation_actors_service,\n urn_comunica_default_query_operation_actors_slice,\n urn_comunica_default_query_operation_actors_sparql_endpoint,\n urn_comunica_default_query_operation_actors_union,\n urn_comunica_default_query_operation_actors_values,\n urn_comunica_default_query_operation_actors_path_alt,\n urn_comunica_default_query_operation_actors_path_inv,\n urn_comunica_default_query_operation_actors_path_link,\n urn_comunica_default_query_operation_actors_path_nps,\n urn_comunica_default_query_operation_actors_path_one_or_more,\n urn_comunica_default_query_operation_actors_path_seq,\n urn_comunica_default_query_operation_actors_path_zero_or_more,\n urn_comunica_default_query_operation_actors_path_zero_or_one,\n urn_comunica_default_query_operation_actors_update_add,\n urn_comunica_default_query_operation_actors_update_clear,\n urn_comunica_default_query_operation_actors_update_composite,\n urn_comunica_default_query_operation_actors_update_copy,\n urn_comunica_default_query_operation_actors_update_create,\n urn_comunica_default_query_operation_actors_update_delete_insert,\n urn_comunica_default_query_operation_actors_update_drop,\n urn_comunica_default_query_operation_actors_update_load,\n urn_comunica_default_query_operation_actors_update_move,\n urn_comunica_default_rdf_join_actors_inner_none,\n urn_comunica_default_rdf_join_actors_inner_single,\n urn_comunica_default_rdf_join_actors_inner_multi_empty,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_minus_hash,\n urn_comunica_default_rdf_join_actors_minus_hash_undef,\n urn_comunica_default_rdf_join_actors_optional_bind,\n urn_comunica_default_rdf_join_actors_optional_nested_loop,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_federated,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_hypermedia,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_rdfjs_source,\n urn_comunica_default_optimize_rule_actors_remove_false_conclusion,\n urn_comunica_default_optimize_rule_actors_pattern_restriction,\n urn_comunica_default_rule_parse_actors_hylar,\n urn_comunica_default_dereference_rule_actors_parse,\n urn_comunica_default_rule_resolve_actors_hypermedia,\n urn_comunica_default_rdf_reason_actors_rule_restriction,\n urn_comunica_default_rdf_resolve_quad_pattern_intercept_actors_reasoned,\n urn_comunica_default_rdf_update_quads_intercept_actors_reasoned,\n urn_comunica_default_dereference_actors_constant_hylar_rdfs,\n urn_comunica_default_dereference_actors_constant_hylar_owl2rl\n]);\nmodule.exports = urn_comunica_default_init_actors_query;\n\n","import type { IActionDereference, IActorDereferenceOutput, IActorDereferenceArgs } from '@comunica/bus-dereference';\nimport { ActorDereference } from '@comunica/bus-dereference';\nimport type { IActorTest } from '@comunica/core';\nimport { KeysRdfDereferenceConstantHylar } from '@comunica/reasoning-context-entries';\n\nconst Streamify = require('streamify-string');\n\n/**\n * A comunica Constant Hylar Owl2rl Dereference Actor.\n */\nexport class ActorDereferenceConstantHylarOwl2rl extends ActorDereference {\n public constructor(args: IActorDereferenceArgs) {\n super(args);\n }\n\n public async test(action: IActionDereference): Promise {\n if (action.url === KeysRdfDereferenceConstantHylar.owl2rl) {\n return true;\n }\n throw new Error(`This actor requires the url to be set to the constant ${KeysRdfDereferenceConstantHylar.owl2rl}`);\n }\n\n public async run(action: IActionDereference): Promise {\n return {\n data: Streamify(data),\n url: 'owl2rl.hylar',\n requestTime: 0,\n exists: true,\n };\n }\n}\n\nconst data = `\n(?p http://www.w3.org/2000/01/rdf-schema#domain ?c) ^ (?x ?p ?y) -> (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c)\n(?p http://www.w3.org/2000/01/rdf-schema#range ?c) ^ (?x ?p ?y) -> (?y http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#FunctionalProperty) ^ (?x ?p ?y1) ^ (?x ?p ?y2) -> (?y1 http://www.w3.org/2002/07/owl#sameAs ?y2)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#InverseFunctionalProperty) ^ (?x1 ?p ?y) ^ (?x2 ?p ?y) -> (?x1 http://www.w3.org/2002/07/owl#sameAs ?x2)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#IrreflexiveProperty) ^ (?x ?p ?x) -> false\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#SymmetricProperty) ^ (?x ?p ?y) -> (?y ?p ?x)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#AsymmetricProperty) ^ (?x ?p ?y) ^ (?y ?p ?x) -> false\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#TransitiveProperty) ^ (?x ?p ?y) ^ (?y ?p ?z) -> (?x ?p ?z)\n(?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) ^ (?x ?p1 ?y) -> (?x ?p2 ?y)\n(?x ?p1 ?y) ^ (?p2 http://www.w3.org/2002/07/owl#propertyChainAxiom ?n) ^ (?n http://www.w3.org/1999/02/22-rdf-syntax-ns#first ?p1) ^ (?n http://www.w3.org/1999/02/22-rdf-syntax-ns#rest ?n2) ^ (?n2 http://www.w3.org/1999/02/22-rdf-syntax-ns#first ?p2) ^ (?y ?p2 ?z) -> (?x ?p2 ?z)\n(?p1 http://www.w3.org/2002/07/owl#equivalentProperty ?p2) ^ (?x ?p1 ?y) -> (?x ?p2 ?y)\n(?p1 http://www.w3.org/2002/07/owl#equivalentProperty ?p2) ^ (?x ?p2 ?y) -> (?x ?p1 ?y)\n(?p1 http://www.w3.org/2002/07/owl#propertyDisjointWith ?p2) ^ (?x ?p1 ?y) ^ (?x ?p2 ?y) -> false\n(?p1 http://www.w3.org/2002/07/owl#inverseOf ?p2) ^ (?x ?p1 ?y) -> (?y ?p2 ?x)\n(?p1 http://www.w3.org/2002/07/owl#inverseOf ?p2) ^ (?x ?p2 ?y) -> (?y ?p1 ?x)\n(?x http://www.w3.org/2002/07/owl#sourceIndividual ?i1) ^ (?x http://www.w3.org/2002/07/owl#assertionProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#targetIndividual ?i2) ^ (?i1 ?p ?i2) -> false\n(?x http://www.w3.org/2002/07/owl#sourceIndividual ?i) ^ (?x http://www.w3.org/2002/07/owl#assertionProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#targetValue ?lt) ^ (?i ?p ?lt) -> false\n(?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#Nothing) -> false\n(?c1 http://www.w3.org/2002/07/owl#complementOf ?c2) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c1) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c2) -> false\n(?x http://www.w3.org/2002/07/owl#someValuesFrom ?y) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u ?p ?v) ^ (?v http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?y) -> (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x)\n(?x http://www.w3.org/2002/07/owl#someValuesFrom http://www.w3.org/2002/07/owl#Thing) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u ?p ?v) -> (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x)\n(?x http://www.w3.org/2002/07/owl#allValuesFrom ?y) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?v) -> (?v http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?y)\n(?x http://www.w3.org/2002/07/owl#hasValue ?y) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) -> (?u ?p ?y)\n(?x http://www.w3.org/2002/07/owl#hasValue ?y) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u ?p ?y) -> (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x)\n(?x http://www.w3.org/2002/07/owl#maxCardinality \"0\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y) -> false\n(?x http://www.w3.org/2002/07/owl#maxCardinality \"1\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y1) ^ (?u ?p ?y2) -> (?y1 http://www.w3.org/2002/07/owl#sameAs ?y2)\n(?x http://www.w3.org/2002/07/owl#maxQualifiedCardinality \"0\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#onClass ?c) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y) ^ (?y http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c) -> false\n(?x http://www.w3.org/2002/07/owl#maxQualifiedCardinality \"0\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#onClass http://www.w3.org/2002/07/owl#Thing) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y) -> false\n(?x http://www.w3.org/2002/07/owl#maxQualifiedCardinality \"1\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#onClass ?c) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y1) ^ (?y1 http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c) ^ (?u ?p ?y2) ^ (?y2 http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c) -> (?y1 http://www.w3.org/2002/07/owl#sameAs ?y2)\n(?x http://www.w3.org/2002/07/owl#maxQualifiedCardinality \"1\"^^xsd:nonNegativeInteger) ^ (?x http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?x http://www.w3.org/2002/07/owl#onClass http://www.w3.org/2002/07/owl#Thing) ^ (?u http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?x) ^ (?u ?p ?y1) ^ (?u ?p ?y2) -> (?y1 http://www.w3.org/2002/07/owl#sameAs ?y2)\n(?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c1) -> (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c2)\n(?c1 http://www.w3.org/2002/07/owl#equivalentClass ?c2) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c1) -> (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c2)\n(?c1 http://www.w3.org/2002/07/owl#equivalentClass ?c2) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c2) -> (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c1)\n(?c1 http://www.w3.org/2002/07/owl#disjointWith ?c2) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c1) ^ (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?c2) -> false\n(?c http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#Class) -> (?c http://www.w3.org/2000/01/rdf-schema#subClassOf ?c) ^ (?c http://www.w3.org/2002/07/owl#equivalentClass ?c) ^ (?c http://www.w3.org/2000/01/rdf-schema#subClassOf http://www.w3.org/2002/07/owl#Thing) ^ (http://www.w3.org/2002/07/owl#Nothing http://www.w3.org/2000/01/rdf-schema#subClassOf ?c)\n(?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) ^ (?c2 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c3) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c3)\n(?c1 http://www.w3.org/2002/07/owl#equivalentClass ?c2) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) ^ (?c2 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c1)\n(?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) ^ (?c2 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c1) -> (?c1 http://www.w3.org/2002/07/owl#equivalentClass ?c2)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#ObjectProperty) -> (?p http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p) ^ (?p http://www.w3.org/2002/07/owl#equivalentProperty ?p)\n(?p http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#DatatypeProperty) -> (?p http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p) ^ (?p http://www.w3.org/2002/07/owl#equivalentProperty ?p)\n(?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) ^ (?p2 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p3) -> (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p3)\n(?p1 http://www.w3.org/2002/07/owl#equivalentProperty ?p2) -> (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) ^ (?p2 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p1)\n(?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) ^ (?p2 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p1) -> (?p1 http://www.w3.org/2002/07/owl#equivalentProperty ?p2)\n(?p http://www.w3.org/2000/01/rdf-schema#domain ?c1) ^ (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) -> (?p http://www.w3.org/2000/01/rdf-schema#domain ?c2)\n(?p2 http://www.w3.org/2000/01/rdf-schema#domain ?c) ^ (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) -> (?p1 http://www.w3.org/2000/01/rdf-schema#domain ?c)\n(?p http://www.w3.org/2000/01/rdf-schema#range ?c1) ^ (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2) -> (?p http://www.w3.org/2000/01/rdf-schema#range ?c2)\n(?p2 http://www.w3.org/2000/01/rdf-schema#range ?c) ^ (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) -> (?p1 http://www.w3.org/2000/01/rdf-schema#range ?c)\n(?c1 http://www.w3.org/2002/07/owl#hasValue ?i) ^ (?c1 http://www.w3.org/2002/07/owl#onProperty ?p1) ^ (?c2 http://www.w3.org/2002/07/owl#hasValue ?i) ^ (?c2 http://www.w3.org/2002/07/owl#onProperty ?p2) ^ (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2)\n(?c1 http://www.w3.org/2002/07/owl#someValuesFrom ?y1) ^ (?c1 http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?c2 http://www.w3.org/2002/07/owl#someValuesFrom ?y2) ^ (?c2 http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?y1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?y2) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2)\n(?c1 http://www.w3.org/2002/07/owl#someValuesFrom ?y) ^ (?c1 http://www.w3.org/2002/07/owl#onProperty ?p1) ^ (?c2 http://www.w3.org/2002/07/owl#someValuesFrom ?y) ^ (?c2 http://www.w3.org/2002/07/owl#onProperty ?p2) ^ (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2)\n(?c1 http://www.w3.org/2002/07/owl#allValuesFrom ?y1) ^ (?c1 http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?c2 http://www.w3.org/2002/07/owl#allValuesFrom ?y2) ^ (?c2 http://www.w3.org/2002/07/owl#onProperty ?p) ^ (?y1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?y2) -> (?c1 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c2)\n(?c1 http://www.w3.org/2002/07/owl#allValuesFrom ?y) ^ (?c1 http://www.w3.org/2002/07/owl#onProperty ?p1) ^ (?c2 http://www.w3.org/2002/07/owl#allValuesFrom ?y) ^ (?c2 http://www.w3.org/2002/07/owl#onProperty ?p2) ^ (?p1 http://www.w3.org/2000/01/rdf-schema#subPropertyOf ?p2) -> (?c2 http://www.w3.org/2000/01/rdf-schema#subClassOf ?c1)\n`;\n","export * from './ActorDereferenceConstantHylarOwl2rl';\n","import type { IActionDereference, IActorDereferenceOutput, IActorDereferenceArgs } from '@comunica/bus-dereference';\nimport { ActorDereference } from '@comunica/bus-dereference';\nimport type { IActorTest } from '@comunica/core';\nimport { KeysRdfDereferenceConstantHylar } from '@comunica/reasoning-context-entries';\n\nconst Streamify = require('streamify-string');\n\n/**\n * A comunica Constant Hylar RDFs Dereference Actor.\n */\nexport class ActorDereferenceConstantHylarRdfs extends ActorDereference {\n public constructor(args: IActorDereferenceArgs) {\n super(args);\n }\n\n public async test(action: IActionDereference): Promise {\n if (action.url === KeysRdfDereferenceConstantHylar.rdfs) {\n return true;\n }\n throw new Error(`This actor requires the url to be set to the constant ${KeysRdfDereferenceConstantHylar.rdfs}`);\n }\n\n public async run(action: IActionDereference): Promise {\n return {\n data: Streamify(data),\n url: 'rdfs.hylar',\n requestTime: 0,\n exists: true,\n };\n }\n}\n\nconst data = `\n(?uuu ?aaa ?yyy) -> (?aaa rdf:type rdf:Property)\n(?aaa rdfs:domain ?xxx) ^ (?uuu ?aaa ?yyy) -> (?uuu rdf:type ?xxx)\n(?aaa rdfs:range ?xxx) ^ (?uuu ?aaa ?vvv) -> (?vvv rdf:type ?xxx)\n(?uuu ?aaa ?xxx) -> (?uuu rdf:type rdfs:Resource)\n(?uuu ?aaa ?vvv) -> (?vvv rdf:type rdfs:Resource)\n(?uuu rdfs:subPropertyOf ?vvv) ^ (?vvv rdfs:subPropertyOf ?xxx) -> (?uuu rdfs:subPropertyOf ?xxx)\n(?uuu rdf:type rdf:Property) -> (?uuu rdfs:subPropertyOf ?uuu)\n(?aaa rdfs:subPropertyOf ?bbb) ^ (?uuu ?aaa ?yyy) -> (?uuu ?bbb ?yyy)\n(?uuu rdf:type rdfs:Class) -> (?uuu rdfs:subClassOf rdfs:Resource)\n(?uuu rdfs:subClassOf ?xxx) ^ (?vvv rdf:type ?uuu) -> (?vvv rdf:type ?xxx)\n(?uuu rdf:type rdfs:Class) -> (?uuu rdfs:subClassOf ?uuu)\n(?uuu rdfs:subClassOf ?vvv) ^ (?vvv rdfs:subClassOf ?xxx) -> (?uuu rdfs:subClassOf ?xxx)\n(?uuu rdf:type rdfs:ContainerMembershipProperty) -> (?uuu rdfs:subPropertyOf rdfs:member)\n(?uuu rdf:type rdfs:Datatype) -> (?uuu rdfs:subClassOf rdfs:Literal)\n`;\n","import type { IActorDereferenceOutput } from '@comunica/bus-dereference';\nimport type { IActorDereferenceRuleArgs } from '@comunica/bus-dereference-rule';\nimport { ActorDereferenceRule } from '@comunica/bus-dereference-rule';\nimport type { IActionRuleParseMetadata } from '@comunica/bus-rule-parse';\n\n/**\n * A comunica Parse Dereference Rule Actor.\n */\nexport class ActorDereferenceRuleParse extends ActorDereferenceRule {\n /**\n * @param args - @defaultNested {{\n * \"hylar\": \"text/hylar\",\n * \"ttl\": \"text/turtle\",\n * \"turtle\": \"text/turtle\",\n * \"nt\": \"application/n-triples\",\n * \"ntriples\": \"application/n-triples\",\n * \"nq\": \"application/n-quads\",\n * \"nquads\": \"application/n-quads\",\n * \"rdf\": \"application/rdf+xml\",\n * \"rdfxml\": \"application/rdf+xml\",\n * \"owl\": \"application/rdf+xml\",\n * \"n3\": \"text/n3\",\n * \"trig\": \"application/trig\",\n * \"jsonld\": \"application/ld+json\",\n * \"json\": \"application/json\",\n * \"html\": \"text/html\",\n * \"htm\": \"text/html\",\n * \"xhtml\": \"application/xhtml+xml\",\n * \"xht\": \"application/xhtml+xml\",\n * \"xml\": \"application/xml\",\n * \"svg\": \"image/svg+xml\",\n * \"svgz\": \"image/svg+xml\"\n * }} mediaMappings\n */\n public constructor(args: IActorDereferenceRuleArgs) {\n super(args);\n }\n\n public async getMetadata(dereference: IActorDereferenceOutput): Promise {\n return { baseIRI: dereference.url };\n }\n}\n\nexport interface IActorDereferenceRuleParseArgs extends IActorDereferenceRuleArgs {\n}\n","import type {\n IActionOptimizeRule, IActorOptimizeRuleArgs, IActorOptimizeRuleOutput,\n} from '@comunica/bus-optimize-rule';\nimport { ActorOptimizeRule } from '@comunica/bus-optimize-rule';\nimport type { IActorTest } from '@comunica/core';\nimport type { IPremiseConclusionRule } from '@comunica/reasoning-types';\nimport type * as RDF from '@rdfjs/types';\nimport { fromArray } from 'asynciterator';\nimport { everyTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor that restricts rules to only those needed to produce data matching a particular pattern\n */\nexport class ActorOptimizeRulePatternRestriction extends ActorOptimizeRule {\n public constructor(args: IActorOptimizeRuleArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeRule): Promise {\n const { pattern } = action;\n\n if (!pattern) {\n throw new Error('A Pattern is required for ActorOptimizeRulePatternRestriction');\n }\n\n // This actor is not useful on the pattern ?s ?p ?o ?g\n const hash: Record = {};\n\n function uniqueVariable(term: RDF.Term): boolean {\n if (term.termType === 'Variable') {\n if (hash[term.value]) {\n return false;\n }\n hash[term.value] = true;\n return true;\n }\n return false;\n }\n\n if (everyTerms(pattern, uniqueVariable)) {\n throw new Error('Cannot optimise a pattern with all distinct variables');\n }\n\n // TODO: ADD THIS BACK IN\n // if (action.rules.some(rule => rule.conclusion === false)) {\n // throw new Error('Cannot restrict rules with a false conclusion');\n // }\n\n return true;\n }\n\n public async run(action: IActionOptimizeRule): Promise {\n // TODO: REMOVE THIS IN FUTURE\n const rules = action.rules.filter(\n (rule): rule is IPremiseConclusionRule => rule.conclusion !== false,\n );\n return { ...action, rules: fromArray(restrictNaive(await rules.toArray(), [ action.pattern! ])) };\n }\n}\n\n/**\n * @param rules The full rule set to be reasoned over\n * @param patterns The patterns that we are to match against in the rule set\n */\nfunction restrictNaive(rules: IPremiseConclusionRule[], patterns: (Algebra.Pattern | RDF.Quad)[]):\nIPremiseConclusionRule[] {\n let allPatterns = [ ...patterns ];\n let unusedRules = [ ...rules ];\n let unusedRulesNew: IPremiseConclusionRule[] = [];\n const allRules: IPremiseConclusionRule[] = [];\n let size = -1;\n while (unusedRules.length > 0 && size < allRules.length) {\n size = allRules.length;\n for (const rule of unusedRules) {\n // Test to see if there is any match\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n if (rule.conclusion.some(quad => allPatterns.some(pattern => matchPatternMappings(pattern, quad)))) {\n allRules.push(rule);\n allPatterns = allPatterns.concat(rule.premise);\n } else {\n unusedRulesNew.push(rule);\n }\n }\n unusedRules = unusedRulesNew;\n unusedRulesNew = [];\n }\n return allRules;\n}\n\n/**\n * Check if the base quad matches against all terms in the pattern.\n *\n * Each term in the quad must satisfy the following:\n * * The pattern term is a variable, and all other variables with the same value - map to the same terms in the quad\n * * Both the quad term and pattern term are quads - and they satisfy the same conditions\n * * The pattern and quad terms are equal and not variables or quads\n *\n * @param pattern A pattern - possibly containing variables\n * @param quad A quad - possibly containing variables\n */\nexport function matchPatternMappings(pattern: RDF.Quad | Algebra.Pattern, quad: Algebra.Pattern | RDF.Quad): boolean {\n const mapping: Record = {};\n return everyTerms(pattern, (term, key) => {\n if (quad[key].termType === 'Variable') {\n return true;\n }\n if (term.termType !== 'Variable') {\n return term.equals(quad[key]);\n }\n // eslint-disable-next-line no-return-assign\n return term.value in mapping ? mapping[term.value].equals(quad[key]) : (mapping[term.value] = quad[key]) && true;\n });\n}\n","import type {\n IActionOptimizeRule, IActorOptimizeRuleArgs, IActorOptimizeRuleOutput,\n} from '@comunica/bus-optimize-rule';\nimport { ActorOptimizeRule } from '@comunica/bus-optimize-rule';\nimport type { IActorTest } from '@comunica/core';\n\n/**\n * A comunica actor that optimizes rules by filtering out those with false conclusions\n */\nexport class ActorOptimizeRuleRemoveFalseConclusion extends ActorOptimizeRule {\n public constructor(args: IActorOptimizeRuleArgs) {\n super(args);\n }\n\n public async test(action: IActionOptimizeRule): Promise {\n // Console.log('test false conclusion', action.rules.length)\n return true;\n }\n\n public async run(action: IActionOptimizeRule): Promise {\n const rules = action.rules.filter(rule => rule.conclusion !== false);\n return { ...action, rules };\n }\n}\n","import type { IActionRdfReason, IActionRdfReasonExecute, IActorRdfReasonMediatedArgs } from '@comunica/bus-rdf-reason';\nimport { ActorRdfReasonMediated } from '@comunica/bus-rdf-reason';\nimport type { IActorTest } from '@comunica/core';\nimport { KeysRdfReason } from '@comunica/reasoning-context-entries';\nimport type { INestedPremiseConclusionRule, INestedPremiseConclusionRuleBase } from '@comunica/reasoning-types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { single, UnionIterator } from 'asynciterator';\nimport { promisifyEventEmitter } from 'event-emitter-promisify';\nimport { Store } from 'n3';\nimport { forEachTerms, mapTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor that\n */\nexport class ActorRdfReasonRuleRestriction extends ActorRdfReasonMediated {\n public constructor(args: IActorRdfReasonRuleRestrictionArgs) {\n super(args);\n }\n\n public async test(action: IActionRdfReason): Promise {\n if (!action.context.has(KeysRdfReason.data) || !action.context.has(KeysRdfReason.rules)) {\n throw new Error('Missing dataset or rule context');\n }\n return true;\n }\n\n public async execute(action: IActionRdfReasonExecute): Promise {\n const { context, rules } = action;\n const store = new Store();\n let size = 0;\n do {\n size = store.size;\n // TODO: Handle rule assertions better\n const quadStreamInsert = evaluateRuleSet( rules, this.unionQuadSource(context).match);\n const { execute } = await this.runImplicitUpdate({ quadStreamInsert: quadStreamInsert.clone(), context });\n await Promise.all([ execute(), await promisifyEventEmitter(store.import(quadStreamInsert.clone())) ]);\n } while (store.size > size);\n }\n}\n\ninterface IActorRdfReasonRuleRestrictionArgs extends IActorRdfReasonMediatedArgs {\n}\n\ntype Match = (pattern: Algebra.Pattern | RDF.Quad) => AsyncIterator;\n\ntype Mapping = Record;\n\nexport function evaluateRuleSet(\n rules: AsyncIterator | INestedPremiseConclusionRule[], match: Match,\n): AsyncIterator {\n // Autostart needs to be false to prevent the iterator from ending before being consumed by rdf-update-quads\n // https://github.com/comunica/comunica-feature-reasoning/issues/904\n // https://github.com/RubenVerborgh/AsyncIterator/issues/25\n return new UnionIterator(\n rules.map((rule: INestedPremiseConclusionRule) => evaluateNestedThroughRestriction(rule, match)),\n { autoStart: false },\n );\n}\n\n// We can probably use InitialBindings here to do a lot of optimizations\nexport function evaluateNestedThroughRestriction(nestedRule: INestedPremiseConclusionRule, match: Match):\nAsyncIterator {\n const iterators = single(nestedRule).transform<{ mappings: AsyncIterator; conclusion: RDF.Quad[] }>({\n autoStart: false,\n transform(rule: INestedPremiseConclusionRuleBase | undefined, done, push) {\n let mappings: AsyncIterator = single({});\n while (rule) {\n mappings = rule.premise.reduce(\n (iterator, premise) => new UnionIterator(iterator.map(\n mapping => {\n const cause = substituteQuad(premise, mapping);\n return match(cause).map(quad => {\n let localMapping: Mapping | undefined = {};\n\n forEachTerms(cause, (term, key) => {\n if (term.termType === 'Variable' && localMapping) {\n if (term.value in localMapping && !localMapping[term.value].equals(quad[key])) {\n localMapping = undefined;\n } else {\n localMapping[term.value] = quad[key];\n }\n }\n });\n\n return localMapping && Object.assign(localMapping, mapping);\n }).filter((_mapping): _mapping is Mapping => _mapping !== undefined);\n },\n ), { autoStart: false }),\n mappings,\n );\n push({\n conclusion: rule.conclusion,\n // The only time the mappings shouldn't be cloned is if the rules is\n // not nested at all\n mappings: nestedRule.next ? mappings.clone() : mappings,\n });\n // eslint-disable-next-line no-cond-assign\n if (rule = rule.next) {\n mappings = mappings.clone();\n }\n }\n done();\n },\n }).map(({ mappings, conclusion }) => new UnionIterator(\n conclusion.map(\n quad => (conclusion.length > 1 ? mappings.clone() : mappings).map(mapping => substituteQuad(quad, mapping)),\n ),\n { autoStart: false },\n ));\n return new UnionIterator(iterators, { autoStart: false });\n}\n\nexport function substituteQuad(term: RDF.Quad, mapping: Mapping): RDF.Quad {\n return mapTerms(term, elem => elem.termType === 'Variable' && elem.value in mapping ? mapping[elem.value] : elem);\n}\n","import type { MediatorRdfReason } from '@comunica/bus-rdf-reason';\nimport { getContextWithImplicitDataset, setUnionSource } from '@comunica/bus-rdf-reason';\nimport type {\n IActionRdfResolveQuadPatternIntercept, IActorRdfResolveQuadPatternInterceptArgs,\n} from '@comunica/bus-rdf-resolve-quad-pattern-intercept';\nimport { ActorRdfResolveQuadPatternIntercept } from '@comunica/bus-rdf-resolve-quad-pattern-intercept';\n\n/**\n * A comunica Reasoned RDF Resolve Quad Pattern Intercept Actor.\n */\nexport class ActorRdfResolveQuadPatternInterceptReasoned extends ActorRdfResolveQuadPatternIntercept {\n public readonly mediatorRdfReason: MediatorRdfReason;\n\n public constructor(args: IActorRdfResolveQuadPatternInterceptReasonedArgs) {\n super(args);\n }\n\n public async runIntercept(action: IActionRdfResolveQuadPatternIntercept):\n Promise {\n const context = getContextWithImplicitDataset(action.context);\n // TODO: Work out how to emit results from other sources while still reasoning\n // this will be done by including the\n const { execute } = await this.mediatorRdfReason.mediate({ context, pattern: action.pattern });\n // TODO: Put this in a lock\n await execute();\n return { ...action, context: setUnionSource(context) };\n }\n}\n\ninterface IActorRdfResolveQuadPatternInterceptReasonedArgs extends IActorRdfResolveQuadPatternInterceptArgs {\n mediatorRdfReason: MediatorRdfReason;\n}\n\n","import type { MediatorRdfReason } from '@comunica/bus-rdf-reason';\nimport { getContextWithImplicitDataset } from '@comunica/bus-rdf-reason';\nimport type { MediatorRdfResolveQuadPattern } from '@comunica/bus-rdf-resolve-quad-pattern';\nimport type { IActionRdfUpdateQuads } from '@comunica/bus-rdf-update-quads';\nimport type {\n IActorRdfUpdateQuadsInterceptArgs, IActorRdfUpdateQuadsInterceptOutput,\n} from '@comunica/bus-rdf-update-quads-intercept';\nimport { ActorRdfUpdateQuadsIntercept } from '@comunica/bus-rdf-update-quads-intercept';\nimport type { IActorTest } from '@comunica/core';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { UnionIterator } from 'asynciterator';\nimport { DataFactory } from 'n3';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst { defaultGraph, variable } = DataFactory;\n\nconst factory = new Factory();\n\n/**\n * A comunica Reasoned RDF Update Quads Intercept Actor.\n */\nexport class ActorRdfUpdateQuadsInterceptReasoned extends ActorRdfUpdateQuadsIntercept {\n public readonly mediatorRdfReason: MediatorRdfReason;\n public readonly mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n\n public constructor(args: IActorRdfUpdateQuadsInterceptReasonedArgs) {\n super(args);\n }\n\n public async test(action: IActionRdfUpdateQuads): Promise {\n const actor = await this.mediatorRdfUpdateQuads.mediateActor(action);\n return actor.test(action);\n }\n\n public async run(action: IActionRdfUpdateQuads): Promise {\n // TODO: Remove this logic into an actor on top of the update-quads bus that allows you to\n // view quad updates.\n const getQuadsFromGraph = async(graph: RDF.Quad_Graph): Promise> => {\n const { data } = await this.mediatorRdfResolveQuadPattern.mediate({\n context: action.context,\n pattern: factory.createPattern(variable('?s'), variable('?p'), variable('?o'), graph),\n });\n return data;\n };\n\n async function getGraphDeletedQuads(graphs: RDF.DefaultGraph | 'NAMED' | 'ALL' | RDF.NamedNode[]):\n Promise> {\n switch (graphs) {\n case 'ALL':\n return getQuadsFromGraph(defaultGraph());\n case 'NAMED':\n return (await getQuadsFromGraph(variable('?g'))).filter(quad => !quad.graph.equals(defaultGraph()));\n default:\n if (Array.isArray(graphs)) {\n // Remove Promise.all usage once https://github.com/RubenVerborgh/AsyncIterator/issues/42 is resolved\n const iterators = await Promise.all(graphs.map(graph => getQuadsFromGraph(graph)));\n return new UnionIterator(iterators, { autoStart: false });\n }\n return getQuadsFromGraph(graphs);\n }\n }\n\n return {\n execute: async() => {\n const quadStreamDelete = [\n action.deleteGraphs?.graphs && await getGraphDeletedQuads(action.deleteGraphs.graphs),\n action.quadStreamDelete?.clone(),\n ].filter((x): x is AsyncIterator => x !== undefined);\n\n const { execute: executeReasoning } = await this.mediatorRdfReason.mediate({\n context: getContextWithImplicitDataset(action.context),\n updates: {\n quadStreamDelete: new UnionIterator(quadStreamDelete, { autoStart: false }),\n quadStreamInsert: action.quadStreamInsert?.clone(),\n },\n });\n\n // Long term actor should start a reasoning lock\n await executeReasoning();\n // Long term the actor should disable a reasoning lock here\n\n const { execute } = await this.mediatorRdfUpdateQuads.mediate({\n ...action,\n // We need to clone the quad streams prior to the update\n // so that these streams can be used by the inferencing engine\n quadStreamInsert: action.quadStreamInsert?.clone(),\n quadStreamDelete: action.quadStreamDelete?.clone(),\n });\n\n // We may also need to start/stop an update lock here\n await execute();\n },\n };\n }\n}\n\nexport interface IActorRdfUpdateQuadsInterceptReasonedArgs extends IActorRdfUpdateQuadsInterceptArgs {\n mediatorRdfReason: MediatorRdfReason;\n mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n}\n","import type { Readable } from 'stream';\nimport type {\n IActionRuleParse, IActorRuleParseOutput, IActorRuleParseFixedMediaTypesArgs,\n} from '@comunica/bus-rule-parse';\nimport { ActorRuleParseFixedMediaTypes } from '@comunica/bus-rule-parse';\nimport type { Rule } from '@comunica/reasoning-types';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap } from 'asynciterator';\nimport { termAsQuad } from 'is-quad';\nimport { DataFactory, DefaultGraph } from 'n3';\nimport { stringToTerm } from 'rdf-string';\n\nconst { quad, variable } = DataFactory;\n\n/**\n * A comunica Hylar Rule Parse Actor.\n */\nexport class ActorRuleParseHylar extends ActorRuleParseFixedMediaTypes {\n /**\n * TODO: Check this\n * @param args -\n * \\ @defaultNested {{\n * \"application/hylar\": 1.0,\n * \"text/hylar\": 0.9\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"text/hylar\": \"http://www.w3.org/ns/formats/Hylar\",\n * \"application/hylar\": \"http://www.w3.org/ns/formats/Hylar\"\n * }} mediaTypeFormats\n */\n public constructor(args: IActorRuleParseFixedMediaTypesArgs) {\n super(args);\n }\n\n public async runHandle(action: IActionRuleParse, mediaType: string, context: IActionContext):\n Promise {\n let buffer = '';\n\n // TODO: Make this a module of its own right\n const ruleStrings = wrap(action.data).map(chunk => chunk.toString()).transform({\n transform(data, done, push) {\n for (const char of data) {\n if (char === '\\n') {\n if (buffer !== '') {\n push(buffer);\n buffer = '';\n }\n } else {\n buffer += char;\n }\n }\n // TODO: Fix this - it assumes 'clean' chunks\n // it is here to handle the case where there is\n // no line break at EOF\n if (buffer !== '') {\n push(buffer);\n buffer = '';\n }\n done();\n },\n });\n\n return { data: & Readable> ruleStrings.map(ruleString => parseRule(ruleString)) };\n }\n}\n\nconst TRIPLE = /((?<=\\()\\S+?\\s\\S+?\\s\\S+?(?=\\)))|false/gui;\n\nexport function parseRule(strRule: string): Rule {\n const [ premise, conclusion ] = strRule.split('->');\n const premiseQuads = premise.match(TRIPLE);\n const conclusionQuads = conclusion.match(TRIPLE);\n\n /* istanbul ignore next - remove with closure of https://github.com/comunica/comunica-feature-reasoning/issues/31 */\n if (premiseQuads === null || conclusionQuads === null) {\n throw new Error(`Invalid rule: ${strRule}`);\n }\n\n return {\n ruleType: 'rdfs',\n premise: parseTriples(premiseQuads),\n conclusion: conclusionQuads[0] === 'false' ? false : parseTriples(conclusionQuads),\n };\n}\n\nexport function parseTriples(triples: string[]): RDF.Quad[] {\n return triples.map(triple => parseTriple(triple));\n}\n\nexport function parseTriple(triple: string): RDF.Quad {\n const [ subject, predicate, object ] = triple.split(' ');\n return termAsQuad(\n quad(myStringToTerm(subject), myStringToTerm(predicate), myStringToTerm(object), new DefaultGraph()),\n );\n}\n\nconst prefixes: Record = {\n owl: 'http://www.w3.org/2002/07/owl#',\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n rdfs: 'http://www.w3.org/2000/01/rdf-schema#',\n hax: 'http://ucbl.github.io/HyLAR-Reasoner/axioms/',\n};\n\nfunction myStringToTerm(value: string): RDF.Term {\n const split = value.split(':');\n if (split.length >= 2) {\n const prefix = split[0];\n if (prefix in prefixes) {\n value = prefixes[prefix] + value.slice(prefix.length + 1);\n }\n }\n return stringToTerm(value);\n}\n","import type { MediatorDereferenceRule } from '@comunica/bus-dereference-rule';\nimport type { ActorHttpInvalidateListenable, IActionHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { IActionRuleResolve, IActorRuleResolveArgs, IRuleSource } from '@comunica/bus-rule-resolve';\nimport { ActorRuleResolveSource } from '@comunica/bus-rule-resolve';\nimport type { IActorTest } from '@comunica/core';\nimport { KeysRdfReason } from '@comunica/reasoning-context-entries';\nimport type { IActionContext } from '@comunica/types';\nimport LRUCache = require('lru-cache');\nimport { MediatedRuleSource } from './MediatedRuleSource';\n\n/**\n * A comunica Hypermedia Rule Resolve Actor.\n */\nexport class ActorRuleResolveHypermedia extends ActorRuleResolveSource\n implements IActorRuleResolveHypermediaArgs {\n public readonly mediatorDereferenceRule: MediatorDereferenceRule;\n public readonly httpInvalidator: ActorHttpInvalidateListenable;\n public readonly cacheSize: number;\n public readonly cache?: LRUCache;\n\n public constructor(args: IActorRuleResolveHypermediaArgs) {\n super(args);\n const cache = this.cache = this.cacheSize ?\n new LRUCache({ max: this.cacheSize }) :\n undefined;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(\n ({ url }: IActionHttpInvalidate) => url ? cache.delete(url) : cache.clear(),\n );\n }\n }\n\n public async test(action: IActionRuleResolve): Promise {\n // TODO: Add something like this back in when we have multiple sources\n // const sources = hasContextSingleSource(action.context);\n // if (!sources) {\n // throw new Error(`Actor ${this.name} can only resolve quad pattern queries against a single source.`);\n // }\n return true;\n }\n\n protected getSource(context: IActionContext): IRuleSource {\n const url = context.get(KeysRdfReason.rules);\n\n if (!url) {\n throw new Error('No rule found in context');\n }\n\n let source = this.cache?.get(url);\n\n if (!source) {\n // If not in cache, create a new source\n source = new MediatedRuleSource(context, url, this);\n // Set in cache\n this.cache?.set(url, source);\n }\n\n return source;\n }\n}\n\nexport interface IActorRuleResolveHypermediaArgs extends IActorRuleResolveArgs {\n /**\n * The maximum number of entries in the LRU cache, set to 0 to disable.\n * @range {integer}\n * @default {100}\n */\n cacheSize: number;\n /* eslint-disable max-len */\n /**\n * An actor that listens to HTTP invalidation events\n * @default { a }\n */\n httpInvalidator: ActorHttpInvalidateListenable;\n /* eslint-enable max-len */\n mediatorDereferenceRule: MediatorDereferenceRule;\n}\n","import type { MediatorDereferenceRule } from '@comunica/bus-dereference-rule';\nimport type { IRuleSource } from '@comunica/bus-rule-resolve';\nimport type { Rule } from '@comunica/reasoning-types';\nimport type { IActionContext } from '@comunica/types';\nimport { fromArray, wrap } from 'asynciterator';\nimport type { AsyncIterator } from 'asynciterator';\n\n/**\n * A lazy rule source\n */\nexport class MediatedRuleSource implements IRuleSource {\n private cache: Rule[] | undefined;\n\n public constructor(\n public readonly context: IActionContext,\n public readonly url: string,\n public readonly mediators: IMediatedRuleSourceArgs,\n ) {\n\n }\n\n public get(): AsyncIterator {\n if (this.cache) {\n return fromArray(this.cache);\n }\n\n const _data = wrap(this.mediators.mediatorDereferenceRule.mediate({\n url: this.url,\n context: this.context,\n }).then(({ data }) => data));\n\n this.cache = [];\n return _data.map(rule => {\n this.cache?.push(rule);\n return rule;\n });\n }\n}\n\nexport interface IMediatedRuleSourceArgs {\n mediatorDereferenceRule: MediatorDereferenceRule;\n}\n","import type {\n IActionDereferenceParse,\n IActorDereferenceParseArgs,\n IActorDereferenceParseOutput,\n} from '@comunica/bus-dereference';\nimport {\n ActorDereferenceParse,\n} from '@comunica/bus-dereference';\nimport type { IActionRuleParseMetadata, IActorRuleParseOutputMetadata } from '@comunica/bus-rule-parse';\nimport type { Mediate } from '@comunica/core';\nimport type { RuleStream } from '@comunica/reasoning-types';\n\n/**\n * A base actor for dereferencing URLs to rule streams.\n *\n * Actor types:\n * * Input: IActionDereferenceRule: A URL.\n * * Test: \n * * Output: IActorDereferenceRuleOutput: A rule stream.\n *\n * @see IActionDereferenceRule\n * @see IActorDereferenceRuleOutput\n */\nexport abstract class ActorDereferenceRule extends\n ActorDereferenceParse {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorDereferenceRuleArgs) {\n super(args);\n }\n}\n\nexport interface IActorDereferenceRuleArgs extends\n IActorDereferenceParseArgs {\n}\n\nexport type IActionDereferenceRule = IActionDereferenceParse;\n\nexport type IActorDereferenceRuleOutput = IActorDereferenceParseOutput;\n\nexport type MediatorDereferenceRule = Mediate;\n","import type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\nimport type { Rule } from '@comunica/reasoning-types';\nimport type { IActionContext } from '@comunica/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\n/**\n * A comunica actor for optimizing reasoning rules\n *\n * Actor types:\n * * Input: IActionOptimizeRule: TODO: fill in.\n * * Test: \n * * Output: IActorOptimizeRuleOutput: TODO: fill in.\n *\n * @see IActionOptimizeRule\n * @see IActorOptimizeRuleOutput\n */\nexport abstract class ActorOptimizeRule extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorOptimizeRuleArgs) {\n super(args);\n }\n}\n\nexport interface IActionOptimizeRule extends IAction {\n rules: AsyncIterator;\n /**\n * An optional pattern to to restrict the rules to infer for\n */\n pattern?: Algebra.Pattern;\n}\n\nexport interface IActorOptimizeRuleOutput extends IActorOutput {\n rules: AsyncIterator;\n pattern?: Algebra.Pattern;\n context: IActionContext;\n}\n\nexport type IActorOptimizeRuleArgs = IActorArgs;\n\nexport type MediatorOptimizeRule = Mediate;\n","import { KeysRdfUpdateQuads, KeysRdfResolveQuadPattern } from '@comunica/context-entries';\nimport type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport { Actor, ActionContext } from '@comunica/core';\nimport { KeysRdfReason } from '@comunica/reasoning-context-entries';\nimport type { IDatasetFactory, IReasonGroup } from '@comunica/reasoning-types';\nimport type { IActionContext, IDataDestination, IDataSource } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\n\nexport function implicitDatasetFactory(context: IActionContext): IDataSource & IDataDestination {\n const datasetFactory = context.get(KeysRdfReason.implicitDatasetFactory);\n if (!datasetFactory) {\n throw new Error(`Missing context entry for ${KeysRdfReason.implicitDatasetFactory.name}`);\n }\n return datasetFactory();\n}\n\nexport function implicitGroupFactory(context: IActionContext): IReasonGroup {\n return {\n dataset: implicitDatasetFactory(context),\n status: { type: 'full', reasoned: false },\n context: new ActionContext(),\n };\n}\n\n// TODO: Clean up after https://github.com/comunica/comunica-feature-reasoning/issues/945 is closed\nexport function getSafeData(context: IActionContext): IReasonGroup {\n const data: IReasonGroup | undefined = context.get(KeysRdfReason.data);\n if (!data) {\n throw new Error(`Context entry ${KeysRdfReason.data.name} is required but not available`);\n }\n return data;\n}\n\nexport function getImplicitSource(context: IActionContext): IDataSource & IDataDestination {\n return getSafeData(context).dataset;\n}\n\nexport function getExplicitSources(context: IActionContext): IDataSource[] {\n return context.has(KeysRdfResolveQuadPattern.source) ?\n [ context.get(KeysRdfResolveQuadPattern.source)! ] :\n context.get(KeysRdfResolveQuadPattern.sources) ?? [];\n}\n\nexport function getUnionSources(context: IActionContext): IDataSource[] {\n return [ ...getExplicitSources(context), getImplicitSource(context) ];\n}\n\nexport function setImplicitDestination(context: IActionContext): IActionContext {\n return context.set(KeysRdfUpdateQuads.destination, getImplicitSource(context));\n}\n\nexport function setImplicitSource(context: IActionContext): IActionContext {\n return context\n .delete(KeysRdfResolveQuadPattern.sources)\n .set(KeysRdfResolveQuadPattern.source, getImplicitSource(context));\n}\n\nexport function setUnionSource(context: IActionContext): IActionContext {\n return context.delete(KeysRdfResolveQuadPattern.source)\n .set(KeysRdfResolveQuadPattern.sources, getUnionSources(context));\n}\n\nexport function getContextWithImplicitDataset(context: IActionContext): IActionContext {\n // We cannot use 'setDefault' here because implicitGroupFactory will throw an error\n // if there is no implicit dataset factory *even if* we already have a data entry\n return context.has(KeysRdfReason.data) ? context : context.set(KeysRdfReason.data, implicitGroupFactory(context));\n}\n\nexport function setReasoningStatus(context: IActionContext, status: IReasonGroup['status']): IActionContext {\n getSafeData(context).status = status;\n return context;\n}\n\n/**\n * A comunica actor for reasoning over RDF data\n *\n * Actor types:\n * * Input: IActionRdfReason: TODO: fill in.\n * * Test: \n * * Output: IActorRdfReasonOutput: TODO: fill in.\n *\n * @see IActionRdfReason\n * @see IActorRdfReasonOutput\n */\nexport abstract class ActorRdfReason extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfReasonArgs) {\n super(args);\n }\n}\n\nexport interface IQuadUpdates {\n quadStreamInsert?: AsyncIterator;\n quadStreamDelete?: AsyncIterator;\n}\n\nexport interface IActionRdfReason extends IAction {\n /**\n * The patterns for which must have all inferred data\n *\n * If left undefined then all inferences on the data need to be made\n */\n pattern?: Algebra.Pattern;\n /**\n *\n */\n updates?: IQuadUpdates;\n}\n\nexport interface IActorRdfReasonOutput extends IActorOutput {\n /**\n * Async function that resolves when the reasoning is done.\n */\n execute: () => Promise;\n}\n\nexport type MediatorRdfReason = Mediate;\n\nexport type IActorRdfReasonArgs = IActorArgs;\n","import type { MediatorOptimizeRule } from '@comunica/bus-optimize-rule';\nimport type { MediatorRdfResolveQuadPattern } from '@comunica/bus-rdf-resolve-quad-pattern';\nimport type {\n IActionRdfUpdateQuads, IActorRdfUpdateQuadsOutput, MediatorRdfUpdateQuads,\n} from '@comunica/bus-rdf-update-quads';\nimport type { MediatorRuleResolve } from '@comunica/bus-rule-resolve';\nimport type { IActorArgs, IActorTest } from '@comunica/core';\nimport type { Rule, IReasonStatus } from '@comunica/reasoning-types';\nimport type { IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { wrap, type AsyncIterator } from 'asynciterator';\nimport { everyTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { IActionRdfReason, IActorRdfReasonOutput } from './ActorRdfReason';\nimport {\n getSafeData, setReasoningStatus, ActorRdfReason, setImplicitDestination, setUnionSource,\n} from './ActorRdfReason';\n\nexport abstract class ActorRdfReasonMediated extends ActorRdfReason {\n public readonly mediatorRdfUpdateQuads: MediatorRdfUpdateQuads;\n\n public readonly mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n\n public readonly mediatorRuleResolve: MediatorRuleResolve;\n\n public readonly mediatorOptimizeRule: MediatorOptimizeRule;\n\n public constructor(args: IActorRdfReasonMediatedArgs) {\n super(args);\n }\n\n protected async runExplicitUpdate(changes: IActionRdfUpdateQuads): Promise {\n return this.mediatorRdfUpdateQuads.mediate(changes);\n }\n\n protected async runImplicitUpdate(action: IActionRdfUpdateQuads): Promise {\n return this.runExplicitUpdate({ ...action, context: setImplicitDestination(action.context) });\n }\n\n protected explicitQuadSource(context: IActionContext): {\n match: (pattern: Algebra.Pattern) => AsyncIterator;\n } {\n return {\n match: (pattern: Algebra.Pattern): AsyncIterator => wrap(\n this.mediatorRdfResolveQuadPattern.mediate({ context, pattern }).then(({ data }) => data),\n ),\n };\n }\n\n // TODO: See if we need to add this back in\n // protected implicitQuadSource(context: IActionContext): {\n // match: (pattern: Algebra.Pattern) => AsyncIterator\n // } {\n // return this.explicitQuadSource(setImplicitSource(context));\n // }\n\n protected unionQuadSource(context: IActionContext): { match: (pattern: Algebra.Pattern) => AsyncIterator } {\n return this.explicitQuadSource(setUnionSource(context));\n }\n\n // TODO [FUTURE]: Push this into a specific abstract interface for language agnostic reasoners.\n public getRules(action: IActionRdfReason): AsyncIterator {\n const getRules = async(): Promise> => {\n const { data } = await this.mediatorRuleResolve.mediate(action);\n const { rules } = await this.mediatorOptimizeRule.mediate({ rules: data, ...action });\n return rules;\n };\n return wrap(getRules());\n }\n\n public async run(action: IActionRdfReason): Promise {\n return {\n execute: async(): Promise => {\n const { updates, pattern } = action;\n if (updates) {\n // If there is an update - forget everything we know about the current status of reasoning\n setReasoningStatus(action.context, { type: 'full', reasoned: false });\n }\n\n const { status } = getSafeData(action.context);\n\n // If full reasoning is already being applied then just use the data from that\n if (status.type === 'full' && status.reasoned) {\n return status.done;\n }\n\n // TODO: Import from rdf-terms.js once https://github.com/rubensworks/rdf-terms.js/pull/42 is merged\n /* istanbul ignore next */\n function matchBaseQuadPattern(__pattern: RDF.BaseQuad, quad: RDF.BaseQuad): boolean {\n const mapping: Record = {};\n function match(_pattern: RDF.BaseQuad, _quad: RDF.BaseQuad): boolean {\n return everyTerms(_pattern, (term, key) => {\n switch (term.termType) {\n case 'Quad':\n return _quad[key].termType === 'Quad' && match(term, _quad[key]);\n case 'Variable':\n // eslint-disable-next-line no-return-assign\n return term.value in mapping ?\n mapping[term.value].equals(_quad[key]) :\n (mapping[term.value] = _quad[key]) && true;\n default:\n return term.equals(_quad[key]);\n }\n });\n }\n return match(__pattern, quad);\n }\n\n // If we have already done partial reasoning and are only interested in a certain\n // pattern then maybe we can use that\n if (status.type === 'partial' && pattern) {\n for (const [ key, value ] of status.patterns) {\n if (value.reasoned && matchBaseQuadPattern(key, pattern)) {\n return value.done;\n }\n }\n }\n this.logInfo(action.context, 'Starting reasoning ...');\n const reasoningLock = this.execute({ ...action, rules: await this.getRules(action).toArray() });\n\n if (pattern) {\n // Set reasoning whole\n const patterns: Map = status.type === 'partial' ? status.patterns : new Map();\n setReasoningStatus(action.context, {\n type: 'partial',\n patterns: patterns.set(pattern, { type: 'full', reasoned: true, done: reasoningLock }),\n });\n } else {\n setReasoningStatus(action.context, { type: 'full', reasoned: true, done: reasoningLock });\n }\n\n return reasoningLock;\n },\n };\n }\n\n public abstract execute(action: IActionRdfReasonExecute): Promise;\n}\n\nexport interface IActionRdfReasonExecute extends IActionRdfReason {\n rules: Rule[];\n}\n\nexport interface IActorRdfReasonMediatedArgs\n extends IActorArgs {\n mediatorRdfUpdateQuads: MediatorRdfUpdateQuads;\n mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n mediatorRuleResolve: MediatorRuleResolve;\n mediatorOptimizeRule: MediatorOptimizeRule;\n}\n","import type {\n IActionRdfResolveQuadPattern, IActorRdfResolveQuadPatternOutput, MediatorRdfResolveQuadPattern,\n} from '@comunica/bus-rdf-resolve-quad-pattern';\nimport type { IActorArgs, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\n\n/**\n * A comunica actor for rdf-resolve-quad-pattern-intercept events.\n *\n * Actor types:\n * * Input: IActionRdfResolveQuadPatternIntercept: TODO: fill in.\n * * Test: \n * * Output: IActorRdfResolveQuadPatternInterceptOutput: TODO: fill in.\n *\n * @see IActionRdfResolveQuadPatternIntercept\n * @see IActorRdfResolveQuadPatternInterceptOutput\n */\nexport abstract class ActorRdfResolveQuadPatternIntercept extends\n Actor {\n public readonly mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfResolveQuadPatternInterceptArgs) {\n super(args);\n }\n\n public async test(action: IActionRdfResolveQuadPatternIntercept): Promise {\n return true;\n }\n\n public abstract runIntercept(action: IActionRdfResolveQuadPatternIntercept):\n Promise;\n\n public async run(action: IActionRdfResolveQuadPatternIntercept): Promise {\n return this.mediatorRdfResolveQuadPattern.mediate(await this.runIntercept(action));\n }\n}\n\nexport interface IActorRdfResolveQuadPatternInterceptArgs extends\n IActorArgs {\n mediatorRdfResolveQuadPattern: MediatorRdfResolveQuadPattern;\n}\n\n// Revert to type = pattern once https://github.com/LinkedSoftwareDependencies/Components.js/issues/90 is fixed\nexport interface IActionRdfResolveQuadPatternIntercept extends IActionRdfResolveQuadPattern {}\nexport interface IActorRdfResolveQuadPatternInterceptOutput extends IActorRdfResolveQuadPatternOutput {}\nexport type MediatorRdfResolveQuadPatternIntercept =\nMediate;\n","import type {\n IActionRdfUpdateQuads,\n IActorRdfUpdateQuadsOutput,\n MediatorRdfUpdateQuads,\n} from '@comunica/bus-rdf-update-quads';\nimport type { IActorArgs, IActorTest, Mediate } from '@comunica/core';\nimport { Actor } from '@comunica/core';\n\n// TODO: Remove this module my using something like 'reasoning groups'\n\n/**\n * A comunica actor for rdf-update-quads-intercept events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateQuadsIntercept: TODO: fill in.\n * * Test: \n * * Output: IActorRdfUpdateQuadsInterceptOutput: TODO: fill in.\n *\n * @see IActionRdfUpdateQuadsIntercept\n * @see IActorRdfUpdateQuadsInterceptOutput\n */\nexport abstract class ActorRdfUpdateQuadsIntercept extends\n Actor {\n public readonly mediatorRdfUpdateQuads: MediatorRdfUpdateQuads;\n\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRdfUpdateQuadsInterceptArgs) {\n super(args);\n }\n\n // Public abstract execute(action: IActionRdfUpdateQuadsIntercept, cb: () => void): Promise;\n\n // public async test(action: IActionRdfUpdateQuads): Promise {\n // return true;\n // }\n\n public abstract run(action: IActionRdfUpdateQuadsIntercept): Promise;\n\n // {\n // const { execute } = await this.mediatorRdfUpdateQuads.mediate(action);\n // return {\n // execute: () => this.execute(action, execute)\n // }\n\n // // return this.mediatorRdfUpdateQuads.mediate(await this.runIntercept(action));\n // }\n}\n\nexport interface IActorRdfUpdateQuadsInterceptArgs extends\n IActorArgs {\n mediatorRdfUpdateQuads: MediatorRdfUpdateQuads;\n}\n\n// Revert to type = pattern once https://github.com/LinkedSoftwareDependencies/Components.js/issues/90 is fixed\nexport interface IActionRdfUpdateQuadsIntercept extends IActionRdfUpdateQuads {}\nexport interface IActorRdfUpdateQuadsInterceptOutput extends IActorRdfUpdateQuadsOutput {}\nexport type MediatorRdfUpdateQuadsIntercept =\nMediate;\n","import type { IActionAbstractMediaTyped,\n IActionAbstractMediaTypedHandle, IActionAbstractMediaTypedMediaTypeFormats,\n IActionAbstractMediaTypedMediaTypes,\n IActorArgsMediaTyped,\n IActorOutputAbstractMediaTyped,\n IActorOutputAbstractMediaTypedHandle,\n IActorOutputAbstractMediaTypedMediaTypeFormats,\n IActorOutputAbstractMediaTypedMediaTypes,\n IActorTestAbstractMediaTyped,\n IActorTestAbstractMediaTypedHandle,\n IActorTestAbstractMediaTypedMediaTypeFormats,\n IActorTestAbstractMediaTypedMediaTypes } from '@comunica/actor-abstract-mediatyped';\nimport {\n ActorAbstractMediaTyped,\n} from '@comunica/actor-abstract-mediatyped';\nimport type { IActionParse, IActorParseOutput } from '@comunica/actor-abstract-parse';\nimport type { IActorTest, Mediate } from '@comunica/core';\nimport type { RuleStream } from '@comunica/reasoning-types';\n\n/**\n * A comunica actor for parsing reasoning rules\n *\n * Actor types:\n * * Input: IActionRuleParse: A parse input or a media type input.\n * * Test: \n * * Output: IActorRuleParseOutput: The parsed rules.\n *\n * @see IActionRuleParse\n * @see IActorRuleParseOutput\n */\nexport abstract class ActorRuleParse extends\n ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRuleParseArgs) {\n super(args);\n }\n}\n\nexport type IActionRootRuleParse = IActionAbstractMediaTyped;\nexport type IActorTestRootRuleParse = IActorTestAbstractMediaTyped;\nexport type IActorOutputRootRuleParse = IActorOutputAbstractMediaTyped;\n\nexport type IActionRuleParseHandle = IActionAbstractMediaTypedHandle;\nexport type IActorTestRuleParseHandle = IActorTestAbstractMediaTypedHandle;\nexport type IActorOutputRuleParseHandle = IActorOutputAbstractMediaTypedHandle;\n\nexport type IActionRuleParseMediaTypes = IActionAbstractMediaTypedMediaTypes;\nexport type IActorTestRuleParseMediaTypes = IActorTestAbstractMediaTypedMediaTypes;\nexport type IActorOutputRuleParseMediaTypes = IActorOutputAbstractMediaTypedMediaTypes;\n\nexport type IActionRuleParseMediaTypeFormats = IActionAbstractMediaTypedMediaTypeFormats;\nexport type IActorTestRuleParseMediaTypeFormats = IActorTestAbstractMediaTypedMediaTypeFormats;\nexport type IActorOutputRuleParseMediaTypeFormats = IActorOutputAbstractMediaTypedMediaTypeFormats;\n\nexport interface IActionRuleParseMetadata {\n /**\n * The base IRI for parsed rules.\n */\n baseIRI: string;\n}\n\nexport type IActorRuleParseOutputMetadata = undefined;\n\nexport type IActionRuleParse = IActionParse;\n\nexport type IActorRuleParseOutput = IActorParseOutput;\n\nexport type IActorRuleParseArgs = IActorArgsMediaTyped;\n\n// TODO: See if we can emove this\nexport type MediatorRdfParseHandle = Mediate<\nIActionRuleParseHandle, IActorOutputRuleParseHandle, IActorTestRuleParseHandle>;\n\nexport type MediatorRuleParseMediaTypes = Mediate<\nIActionRuleParseMediaTypes, IActorOutputRuleParseMediaTypes, IActorTestRuleParseMediaTypes>;\n\nexport type MediatorRuleParseMediaTypeFormats = Mediate<\nIActionRuleParseMediaTypeFormats, IActorOutputRuleParseMediaTypeFormats, IActorTestRuleParseMediaTypeFormats>;\n","import { type IActorArgsMediaTypedFixed, ActorAbstractMediaTypedFixed } from '@comunica/actor-abstract-mediatyped';\nimport type { IActorTest } from '@comunica/core';\nimport type { IActionRuleParse, IActorRuleParseOutput } from './ActorRuleParse';\n\n/**\n * A base actor for listening to Rule parse events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRuleParseOrMediaType: A parse input or a media type input.\n * * Test: \n * * Output: IActorOutputRuleParseOrMediaType: The parsed quads.\n *\n * @see IActionInit\n */\nexport abstract class ActorRuleParseFixedMediaTypes extends ActorAbstractMediaTypedFixed<\nIActionRuleParse, IActorTest, IActorRuleParseOutput> implements IActorRuleParseFixedMediaTypesArgs {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRuleParseFixedMediaTypesArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n public async testHandleChecked(action: IActionRuleParse): Promise {\n return true;\n }\n}\n\nexport interface IActorRuleParseFixedMediaTypesArgs\n extends IActorArgsMediaTypedFixed {}\n","import { Actor } from '@comunica/core';\nimport type { IAction, IActorArgs, IActorOutput, IActorTest, Mediate } from '@comunica/core';\nimport type { Rule } from '@comunica/reasoning-types';\nimport type { AsyncIterator } from 'asynciterator';\n\n/**\n * A comunica actor for resolving rules.\n *\n * Actor types:\n * * Input: IActionRuleResolve: A quad pattern and an optional context.\n * * Test: \n * * Output: IActorRuleResolveOutput: The resulting rule stream.\n *\n * @see IActionRuleResolve\n * @see IActorRuleResolveOutput\n */\nexport abstract class ActorRuleResolve extends Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n public constructor(args: IActorRuleResolveArgs) {\n super(args);\n }\n}\n\nexport interface IActionRuleResolve extends IAction {}\n\nexport interface IActorRuleResolveOutput extends IActorOutput {\n /**\n * The resulting rule stream.\n */\n data: AsyncIterator;\n}\n\nexport type IActorRuleResolveArgs = IActorArgs;\nexport type MediatorRuleResolve = Mediate;\n","import type { IActorTest } from '@comunica/core';\nimport type { Rule } from '@comunica/reasoning-types';\nimport type { IActionContext } from '@comunica/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { IActorRuleResolveArgs, IActionRuleResolve, IActorRuleResolveOutput } from './ActorRuleResolve';\nimport { ActorRuleResolve } from './ActorRuleResolve';\n\n/**\n * A base implementation for rdf-resolve-quad-pattern events\n * that wraps around an {@link IRuleSource}.\n *\n * @see IRuleSource\n */\nexport abstract class ActorRuleResolveSource extends ActorRuleResolve {\n public constructor(args: IActorRuleResolveArgs) {\n super(args);\n }\n\n public abstract test(action: IActionRuleResolve): Promise;\n\n public async run(action: IActionRuleResolve): Promise {\n return { data: this.getSource(action.context).get() };\n }\n\n /**\n * Get a source instance for the given context.\n */\n protected abstract getSource(context: IActionContext): IRuleSource;\n}\n\n/**\n * A lazy rule source.\n */\nexport interface IRuleSource {\n /**\n * Returns a (possibly lazy) stream that processes all quads matching the pattern.\n * @return {AsyncIterator} The resulting rule stream.\n */\n get: () => AsyncIterator;\n}\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2021 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (object === null || typeof object !== 'object' || object.toJSON != null) {\n return JSON.stringify(object);\n }\n\n if (Array.isArray(object)) {\n return '[' + object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return t + comma + serialize(value);\n }, '') + ']';\n }\n\n return '{' + Object.keys(object).sort().reduce((t, cv, ci) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return t + comma + serialize(cv) + ':' + serialize(object[cv]);\n }, '') + '}';\n};\n","(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(typeof self !== 'undefined' ? self : this);\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeNames = exports.elementNames = void 0;\nexports.elementNames = new Map([\n [\"altglyph\", \"altGlyph\"],\n [\"altglyphdef\", \"altGlyphDef\"],\n [\"altglyphitem\", \"altGlyphItem\"],\n [\"animatecolor\", \"animateColor\"],\n [\"animatemotion\", \"animateMotion\"],\n [\"animatetransform\", \"animateTransform\"],\n [\"clippath\", \"clipPath\"],\n [\"feblend\", \"feBlend\"],\n [\"fecolormatrix\", \"feColorMatrix\"],\n [\"fecomponenttransfer\", \"feComponentTransfer\"],\n [\"fecomposite\", \"feComposite\"],\n [\"feconvolvematrix\", \"feConvolveMatrix\"],\n [\"fediffuselighting\", \"feDiffuseLighting\"],\n [\"fedisplacementmap\", \"feDisplacementMap\"],\n [\"fedistantlight\", \"feDistantLight\"],\n [\"fedropshadow\", \"feDropShadow\"],\n [\"feflood\", \"feFlood\"],\n [\"fefunca\", \"feFuncA\"],\n [\"fefuncb\", \"feFuncB\"],\n [\"fefuncg\", \"feFuncG\"],\n [\"fefuncr\", \"feFuncR\"],\n [\"fegaussianblur\", \"feGaussianBlur\"],\n [\"feimage\", \"feImage\"],\n [\"femerge\", \"feMerge\"],\n [\"femergenode\", \"feMergeNode\"],\n [\"femorphology\", \"feMorphology\"],\n [\"feoffset\", \"feOffset\"],\n [\"fepointlight\", \"fePointLight\"],\n [\"fespecularlighting\", \"feSpecularLighting\"],\n [\"fespotlight\", \"feSpotLight\"],\n [\"fetile\", \"feTile\"],\n [\"feturbulence\", \"feTurbulence\"],\n [\"foreignobject\", \"foreignObject\"],\n [\"glyphref\", \"glyphRef\"],\n [\"lineargradient\", \"linearGradient\"],\n [\"radialgradient\", \"radialGradient\"],\n [\"textpath\", \"textPath\"],\n]);\nexports.attributeNames = new Map([\n [\"definitionurl\", \"definitionURL\"],\n [\"attributename\", \"attributeName\"],\n [\"attributetype\", \"attributeType\"],\n [\"basefrequency\", \"baseFrequency\"],\n [\"baseprofile\", \"baseProfile\"],\n [\"calcmode\", \"calcMode\"],\n [\"clippathunits\", \"clipPathUnits\"],\n [\"diffuseconstant\", \"diffuseConstant\"],\n [\"edgemode\", \"edgeMode\"],\n [\"filterunits\", \"filterUnits\"],\n [\"glyphref\", \"glyphRef\"],\n [\"gradienttransform\", \"gradientTransform\"],\n [\"gradientunits\", \"gradientUnits\"],\n [\"kernelmatrix\", \"kernelMatrix\"],\n [\"kernelunitlength\", \"kernelUnitLength\"],\n [\"keypoints\", \"keyPoints\"],\n [\"keysplines\", \"keySplines\"],\n [\"keytimes\", \"keyTimes\"],\n [\"lengthadjust\", \"lengthAdjust\"],\n [\"limitingconeangle\", \"limitingConeAngle\"],\n [\"markerheight\", \"markerHeight\"],\n [\"markerunits\", \"markerUnits\"],\n [\"markerwidth\", \"markerWidth\"],\n [\"maskcontentunits\", \"maskContentUnits\"],\n [\"maskunits\", \"maskUnits\"],\n [\"numoctaves\", \"numOctaves\"],\n [\"pathlength\", \"pathLength\"],\n [\"patterncontentunits\", \"patternContentUnits\"],\n [\"patterntransform\", \"patternTransform\"],\n [\"patternunits\", \"patternUnits\"],\n [\"pointsatx\", \"pointsAtX\"],\n [\"pointsaty\", \"pointsAtY\"],\n [\"pointsatz\", \"pointsAtZ\"],\n [\"preservealpha\", \"preserveAlpha\"],\n [\"preserveaspectratio\", \"preserveAspectRatio\"],\n [\"primitiveunits\", \"primitiveUnits\"],\n [\"refx\", \"refX\"],\n [\"refy\", \"refY\"],\n [\"repeatcount\", \"repeatCount\"],\n [\"repeatdur\", \"repeatDur\"],\n [\"requiredextensions\", \"requiredExtensions\"],\n [\"requiredfeatures\", \"requiredFeatures\"],\n [\"specularconstant\", \"specularConstant\"],\n [\"specularexponent\", \"specularExponent\"],\n [\"spreadmethod\", \"spreadMethod\"],\n [\"startoffset\", \"startOffset\"],\n [\"stddeviation\", \"stdDeviation\"],\n [\"stitchtiles\", \"stitchTiles\"],\n [\"surfacescale\", \"surfaceScale\"],\n [\"systemlanguage\", \"systemLanguage\"],\n [\"tablevalues\", \"tableValues\"],\n [\"targetx\", \"targetX\"],\n [\"targety\", \"targetY\"],\n [\"textlength\", \"textLength\"],\n [\"viewbox\", \"viewBox\"],\n [\"viewtarget\", \"viewTarget\"],\n [\"xchannelselector\", \"xChannelSelector\"],\n [\"ychannelselector\", \"yChannelSelector\"],\n [\"zoomandpan\", \"zoomAndPan\"],\n]);\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Module dependencies\n */\nvar ElementType = __importStar(require(\"domelementtype\"));\nvar entities_1 = require(\"entities\");\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nvar foreignNames_1 = require(\"./foreignNames\");\nvar unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n if (!attributes)\n return;\n return Object.keys(attributes)\n .map(function (key) {\n var _a, _b;\n var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = foreignNames_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return key + \"=\\\"\" + (opts.decodeEntities !== false\n ? entities_1.encodeXML(value)\n : value.replace(/\"/g, \""\")) + \"\\\"\";\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nvar singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nfunction render(node, options) {\n if (options === void 0) { options = {}; }\n var nodes = \"length\" in node ? node : [node];\n var output = \"\";\n for (var i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexports.default = render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n case ElementType.Directive:\n case ElementType.Doctype:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nvar foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = foreignNames_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: false });\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: \"foreign\" });\n }\n var tag = \"<\" + elem.name;\n var attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += \" \" + attribs;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += \"\";\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return \"<\" + elem.data + \">\";\n}\nfunction renderText(elem, opts) {\n var data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (opts.decodeEntities !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data = entities_1.encodeXML(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return \"\";\n}\nfunction renderComment(elem) {\n return \"\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for `.\n this.sequenceIndex = Number(c === 60 /* Lt */);\n }\n };\n Tokenizer.prototype.stateCDATASequence = function (c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this._state = 21 /* InCommentLike */;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this._index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this._state = 16 /* InDeclaration */;\n this.stateInDeclaration(c); // Reconsume the character\n }\n };\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n Tokenizer.prototype.fastForwardTo = function (c) {\n while (++this._index < this.buffer.length) {\n if (this.buffer.charCodeAt(this._index) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this._index = this.buffer.length - 1;\n return false;\n };\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n Tokenizer.prototype.stateInCommentLike = function (c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n // Remove 2 trailing chars\n var section = this.buffer.slice(this.sectionStart, this._index - 2);\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(section);\n }\n else {\n this.cbs.oncomment(section);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this._index + 1;\n this._state = 1 /* Text */;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n };\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n Tokenizer.prototype.isTagStartChar = function (c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n };\n Tokenizer.prototype.startSpecial = function (sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this._state = 23 /* SpecialStartSequence */;\n };\n Tokenizer.prototype.stateBeforeTagName = function (c) {\n if (c === 33 /* ExclamationMark */) {\n this._state = 15 /* BeforeDeclaration */;\n this.sectionStart = this._index + 1;\n }\n else if (c === 63 /* Questionmark */) {\n this._state = 17 /* InProcessingInstruction */;\n this.sectionStart = this._index + 1;\n }\n else if (this.isTagStartChar(c)) {\n var lower = c | 0x20;\n this.sectionStart = this._index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this._state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? 22 /* BeforeSpecialS */\n : 3 /* InTagName */;\n }\n }\n else if (c === 47 /* Slash */) {\n this._state = 5 /* BeforeClosingTagName */;\n }\n else {\n this._state = 1 /* Text */;\n this.stateText(c);\n }\n };\n Tokenizer.prototype.stateInTagName = function (c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.getSection());\n this.sectionStart = -1;\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateBeforeClosingTagName = function (c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === 62 /* Gt */) {\n this._state = 1 /* Text */;\n }\n else {\n this._state = this.isTagStartChar(c)\n ? 6 /* InClosingTagName */\n : 20 /* InSpecialComment */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInClosingTagName = function (c) {\n if (c === 62 /* Gt */ || isWhitespace(c)) {\n this.cbs.onclosetag(this.getSection());\n this.sectionStart = -1;\n this._state = 7 /* AfterClosingTagName */;\n this.stateAfterClosingTagName(c);\n }\n };\n Tokenizer.prototype.stateAfterClosingTagName = function (c) {\n // Skip everything until \">\"\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeName = function (c) {\n if (c === 62 /* Gt */) {\n this.cbs.onopentagend();\n if (this.isSpecial) {\n this._state = 24 /* InSpecialTag */;\n this.sequenceIndex = 0;\n }\n else {\n this._state = 1 /* Text */;\n }\n this.baseState = this._state;\n this.sectionStart = this._index + 1;\n }\n else if (c === 47 /* Slash */) {\n this._state = 4 /* InSelfClosingTag */;\n }\n else if (!isWhitespace(c)) {\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInSelfClosingTag = function (c) {\n if (c === 62 /* Gt */) {\n this.cbs.onselfclosingtag();\n this._state = 1 /* Text */;\n this.baseState = 1 /* Text */;\n this.sectionStart = this._index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateInAttributeName = function (c) {\n if (c === 61 /* Eq */ || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.getSection());\n this.sectionStart = -1;\n this._state = 10 /* AfterAttributeName */;\n this.stateAfterAttributeName(c);\n }\n };\n Tokenizer.prototype.stateAfterAttributeName = function (c) {\n if (c === 61 /* Eq */) {\n this._state = 11 /* BeforeAttributeValue */;\n }\n else if (c === 47 /* Slash */ || c === 62 /* Gt */) {\n this.cbs.onattribend(undefined);\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(undefined);\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeValue = function (c) {\n if (c === 34 /* DoubleQuote */) {\n this._state = 12 /* InAttributeValueDq */;\n this.sectionStart = this._index + 1;\n }\n else if (c === 39 /* SingleQuote */) {\n this._state = 13 /* InAttributeValueSq */;\n this.sectionStart = this._index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this._index;\n this._state = 14 /* InAttributeValueNq */;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n };\n Tokenizer.prototype.handleInAttributeValue = function (c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.getSection());\n this.sectionStart = -1;\n this.cbs.onattribend(String.fromCharCode(quote));\n this._state = 8 /* BeforeAttributeName */;\n }\n else if (this.decodeEntities && c === 38 /* Amp */) {\n this.baseState = this._state;\n this._state = 25 /* BeforeEntity */;\n }\n };\n Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {\n this.handleInAttributeValue(c, 34 /* DoubleQuote */);\n };\n Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {\n this.handleInAttributeValue(c, 39 /* SingleQuote */);\n };\n Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {\n if (isWhitespace(c) || c === 62 /* Gt */) {\n this.cbs.onattribdata(this.getSection());\n this.sectionStart = -1;\n this.cbs.onattribend(null);\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === 38 /* Amp */) {\n this.baseState = this._state;\n this._state = 25 /* BeforeEntity */;\n }\n };\n Tokenizer.prototype.stateBeforeDeclaration = function (c) {\n if (c === 91 /* OpeningSquareBracket */) {\n this._state = 19 /* CDATASequence */;\n this.sequenceIndex = 0;\n }\n else {\n this._state =\n c === 45 /* Dash */\n ? 18 /* BeforeComment */\n : 16 /* InDeclaration */;\n }\n };\n Tokenizer.prototype.stateInDeclaration = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.ondeclaration(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateInProcessingInstruction = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.onprocessinginstruction(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeComment = function (c) {\n if (c === 45 /* Dash */) {\n this._state = 21 /* InCommentLike */;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this._index + 1;\n }\n else {\n this._state = 16 /* InDeclaration */;\n }\n };\n Tokenizer.prototype.stateInSpecialComment = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.oncomment(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeSpecialS = function (c) {\n var lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this._state = 3 /* InTagName */;\n this.stateInTagName(c); // Consume the token again\n }\n };\n Tokenizer.prototype.stateBeforeEntity = function (c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n if (c === 35 /* Num */) {\n this._state = 26 /* BeforeNumericEntity */;\n }\n else if (c === 38 /* Amp */) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.trieResult = null;\n this._state = 27 /* InNamedEntity */;\n this.stateInNamedEntity(c);\n }\n };\n Tokenizer.prototype.stateInNamedEntity = function (c) {\n this.entityExcess += 1;\n this.trieIndex = (0, decode_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this._index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n // If the branch is a value, store it and continue\n if (this.trieCurrent & decode_1.BinTrieFlags.HAS_VALUE) {\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== 59 /* Semi */) {\n // No need to consider multi-byte values, as the legacy entity is always a single byte\n this.trieIndex += 1;\n }\n else {\n // Add 1 as we have already incremented the excess\n var entityStart = this._index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));\n }\n // If this is a surrogate pair, combine the higher bits from the node with the next byte\n this.trieResult =\n this.trieCurrent & decode_1.BinTrieFlags.MULTI_BYTE\n ? String.fromCharCode(this.entityTrie[++this.trieIndex], this.entityTrie[++this.trieIndex])\n : String.fromCharCode(this.entityTrie[++this.trieIndex]);\n this.entityExcess = 0;\n this.sectionStart = this._index + 1;\n }\n }\n };\n Tokenizer.prototype.emitNamedEntity = function () {\n if (this.trieResult) {\n this.emitPartial(this.trieResult);\n }\n this._state = this.baseState;\n };\n Tokenizer.prototype.stateBeforeNumericEntity = function (c) {\n if ((c | 0x20) === 120 /* LowerX */) {\n this.entityExcess++;\n this._state = 29 /* InHexEntity */;\n }\n else {\n this._state = 28 /* InNumericEntity */;\n this.stateInNumericEntity(c);\n }\n };\n Tokenizer.prototype.decodeNumericEntity = function (base, strict) {\n var entityStart = this._index - this.entityExcess - 1;\n var numberStart = entityStart + 2 + (base >> 4);\n if (numberStart !== this._index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));\n }\n // Parse entity\n var entity = this.buffer.substring(numberStart, this._index);\n var parsed = parseInt(entity, base);\n this.emitPartial((0, decode_codepoint_1.default)(parsed));\n this.sectionStart = this._index + Number(strict);\n }\n this._state = this.baseState;\n };\n Tokenizer.prototype.stateInNumericEntity = function (c) {\n if (c === 59 /* Semi */) {\n this.decodeNumericEntity(10, true);\n }\n else if (!isNumber(c)) {\n if (this.allowLegacyEntity()) {\n this.decodeNumericEntity(10, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n else {\n this.entityExcess++;\n }\n };\n Tokenizer.prototype.stateInHexEntity = function (c) {\n if (c === 59 /* Semi */) {\n this.decodeNumericEntity(16, true);\n }\n else if ((c < 97 /* LowerA */ || c > 102 /* LowerF */) &&\n (c < 65 /* UpperA */ || c > 70 /* UpperF */) &&\n !isNumber(c)) {\n if (this.allowLegacyEntity()) {\n this.decodeNumericEntity(16, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n else {\n this.entityExcess++;\n }\n };\n Tokenizer.prototype.allowLegacyEntity = function () {\n return (!this.xmlMode &&\n (this.baseState === 1 /* Text */ ||\n this.baseState === 24 /* InSpecialTag */));\n };\n /**\n * Remove data that has already been consumed from the buffer.\n */\n Tokenizer.prototype.cleanup = function () {\n // If we are inside of text, emit what we already have.\n if (this.running &&\n this.sectionStart !== this._index &&\n (this._state === 1 /* Text */ ||\n (this._state === 24 /* InSpecialTag */ &&\n this.sequenceIndex === 0))) {\n // TODO: We could emit attribute data here as well.\n this.cbs.ontext(this.buffer.substr(this.sectionStart));\n this.sectionStart = this._index;\n }\n var start = this.sectionStart < 0 ? this._index : this.sectionStart;\n this.buffer =\n start === this.buffer.length ? \"\" : this.buffer.substr(start);\n this._index -= start;\n this.bufferOffset += start;\n if (this.sectionStart > 0) {\n this.sectionStart = 0;\n }\n };\n Tokenizer.prototype.shouldContinue = function () {\n return this._index < this.buffer.length && this.running;\n };\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n Tokenizer.prototype.parse = function () {\n while (this.shouldContinue()) {\n var c = this.buffer.charCodeAt(this._index);\n if (this._state === 1 /* Text */) {\n this.stateText(c);\n }\n else if (this._state === 23 /* SpecialStartSequence */) {\n this.stateSpecialStartSequence(c);\n }\n else if (this._state === 24 /* InSpecialTag */) {\n this.stateInSpecialTag(c);\n }\n else if (this._state === 19 /* CDATASequence */) {\n this.stateCDATASequence(c);\n }\n else if (this._state === 12 /* InAttributeValueDq */) {\n this.stateInAttributeValueDoubleQuotes(c);\n }\n else if (this._state === 9 /* InAttributeName */) {\n this.stateInAttributeName(c);\n }\n else if (this._state === 21 /* InCommentLike */) {\n this.stateInCommentLike(c);\n }\n else if (this._state === 20 /* InSpecialComment */) {\n this.stateInSpecialComment(c);\n }\n else if (this._state === 8 /* BeforeAttributeName */) {\n this.stateBeforeAttributeName(c);\n }\n else if (this._state === 3 /* InTagName */) {\n this.stateInTagName(c);\n }\n else if (this._state === 6 /* InClosingTagName */) {\n this.stateInClosingTagName(c);\n }\n else if (this._state === 2 /* BeforeTagName */) {\n this.stateBeforeTagName(c);\n }\n else if (this._state === 10 /* AfterAttributeName */) {\n this.stateAfterAttributeName(c);\n }\n else if (this._state === 13 /* InAttributeValueSq */) {\n this.stateInAttributeValueSingleQuotes(c);\n }\n else if (this._state === 11 /* BeforeAttributeValue */) {\n this.stateBeforeAttributeValue(c);\n }\n else if (this._state === 5 /* BeforeClosingTagName */) {\n this.stateBeforeClosingTagName(c);\n }\n else if (this._state === 7 /* AfterClosingTagName */) {\n this.stateAfterClosingTagName(c);\n }\n else if (this._state === 22 /* BeforeSpecialS */) {\n this.stateBeforeSpecialS(c);\n }\n else if (this._state === 14 /* InAttributeValueNq */) {\n this.stateInAttributeValueNoQuotes(c);\n }\n else if (this._state === 4 /* InSelfClosingTag */) {\n this.stateInSelfClosingTag(c);\n }\n else if (this._state === 16 /* InDeclaration */) {\n this.stateInDeclaration(c);\n }\n else if (this._state === 15 /* BeforeDeclaration */) {\n this.stateBeforeDeclaration(c);\n }\n else if (this._state === 18 /* BeforeComment */) {\n this.stateBeforeComment(c);\n }\n else if (this._state === 17 /* InProcessingInstruction */) {\n this.stateInProcessingInstruction(c);\n }\n else if (this._state === 27 /* InNamedEntity */) {\n this.stateInNamedEntity(c);\n }\n else if (this._state === 25 /* BeforeEntity */) {\n this.stateBeforeEntity(c);\n }\n else if (this._state === 29 /* InHexEntity */) {\n this.stateInHexEntity(c);\n }\n else if (this._state === 28 /* InNumericEntity */) {\n this.stateInNumericEntity(c);\n }\n else {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n this._index++;\n }\n this.cleanup();\n };\n Tokenizer.prototype.finish = function () {\n if (this._state === 27 /* InNamedEntity */) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this._index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n };\n /** Handle any trailing data. */\n Tokenizer.prototype.handleTrailingData = function () {\n var data = this.buffer.substr(this.sectionStart);\n if (this._state === 21 /* InCommentLike */) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(data);\n }\n else {\n this.cbs.oncomment(data);\n }\n }\n else if (this._state === 28 /* InNumericEntity */ &&\n this.allowLegacyEntity()) {\n this.decodeNumericEntity(10, false);\n // All trailing data will have been consumed\n }\n else if (this._state === 29 /* InHexEntity */ &&\n this.allowLegacyEntity()) {\n this.decodeNumericEntity(16, false);\n // All trailing data will have been consumed\n }\n else if (this._state === 3 /* InTagName */ ||\n this._state === 8 /* BeforeAttributeName */ ||\n this._state === 11 /* BeforeAttributeValue */ ||\n this._state === 10 /* AfterAttributeName */ ||\n this._state === 9 /* InAttributeName */ ||\n this._state === 13 /* InAttributeValueSq */ ||\n this._state === 12 /* InAttributeValueDq */ ||\n this._state === 14 /* InAttributeValueNq */ ||\n this._state === 6 /* InClosingTagName */) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(data);\n }\n };\n Tokenizer.prototype.getSection = function () {\n return this.buffer.substring(this.sectionStart, this._index);\n };\n Tokenizer.prototype.emitPartial = function (value) {\n if (this.baseState !== 1 /* Text */ &&\n this.baseState !== 24 /* InSpecialTag */) {\n this.cbs.onattribdata(value);\n }\n else {\n this.cbs.ontext(value);\n }\n };\n return Tokenizer;\n}());\nexports.default = Tokenizer;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WritableStream = void 0;\nvar Parser_1 = require(\"./Parser\");\n/*\n * NOTE: If either of these two imports produces a type error,\n * please update your @types/node dependency!\n */\nvar stream_1 = require(\"stream\");\nvar string_decoder_1 = require(\"string_decoder\");\n// Following the example in https://nodejs.org/api/stream.html#stream_decoding_buffers_in_a_writable_stream\nfunction isBuffer(_chunk, encoding) {\n return encoding === \"buffer\";\n}\n/**\n * WritableStream makes the `Parser` interface available as a NodeJS stream.\n *\n * @see Parser\n */\nvar WritableStream = /** @class */ (function (_super) {\n __extends(WritableStream, _super);\n function WritableStream(cbs, options) {\n var _this = _super.call(this, { decodeStrings: false }) || this;\n _this._decoder = new string_decoder_1.StringDecoder();\n _this._parser = new Parser_1.Parser(cbs, options);\n return _this;\n }\n WritableStream.prototype._write = function (chunk, encoding, cb) {\n this._parser.write(isBuffer(chunk, encoding) ? this._decoder.write(chunk) : chunk);\n cb();\n };\n WritableStream.prototype._final = function (cb) {\n this._parser.end(this._decoder.end());\n cb();\n };\n return WritableStream;\n}(stream_1.Writable));\nexports.WritableStream = WritableStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseJsonLd = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst jsonld_streaming_parser_1 = require(\"jsonld-streaming-parser\");\nconst DocumentLoaderMediated_1 = require(\"./DocumentLoaderMediated\");\n/**\n * A JSON-LD RDF Parse actor that listens on the 'rdf-parse' bus.\n *\n * It is able to parse JSON-LD-based RDF serializations and announce the presence of them by media type.\n */\nclass ActorRdfParseJsonLd extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/ld+json\": 1.0,\n * \"application/json\": 0.5\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/ld+json\": \"http://www.w3.org/ns/formats/JSON-LD\",\n * \"application/json\": \"http://www.w3.org/ns/formats/JSON-LD\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async testHandle(action, mediaType, context) {\n if (context.has(context_entries_1.KeysRdfParseHtmlScript.processingHtmlScript) && mediaType !== 'application/ld+json') {\n throw new Error(`JSON-LD in script tags can only have media type 'application/ld+json'`);\n }\n if (!(mediaType in this.mediaTypePriorities) && !mediaType.endsWith('+json')) {\n throw new Error(`Unrecognized media type: ${mediaType}`);\n }\n return await this.testHandleChecked(action);\n }\n async runHandle(action, mediaType, actionContext) {\n const parser = jsonld_streaming_parser_1.JsonLdParser.fromHttpResponse(action.metadata?.baseIRI ?? '', mediaType, action.headers, {\n documentLoader: actionContext.get(context_entries_1.KeysRdfParseJsonLd.documentLoader) ||\n new DocumentLoaderMediated_1.DocumentLoaderMediated(this.mediatorHttp, actionContext),\n strictValues: actionContext.get(context_entries_1.KeysRdfParseJsonLd.strictValues),\n ...actionContext.get(context_entries_1.KeysRdfParseJsonLd.parserOptions),\n });\n const data = parser.import(action.data);\n return { data };\n }\n}\nexports.ActorRdfParseJsonLd = ActorRdfParseJsonLd;\n//# sourceMappingURL=ActorRdfParseJsonLd.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentLoaderMediated = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst stringifyStream = require(\"stream-to-string\");\n/**\n * A JSON-LD document loader that fetches over an HTTP bus using a given mediator.\n */\nclass DocumentLoaderMediated extends jsonld_context_parser_1.FetchDocumentLoader {\n constructor(mediatorHttp, context) {\n super(DocumentLoaderMediated.createFetcher(mediatorHttp, context));\n this.mediatorHttp = mediatorHttp;\n this.context = context;\n }\n static createFetcher(mediatorHttp, context) {\n return async (url, init) => {\n const response = await mediatorHttp.mediate({ input: url, init, context });\n response.json = async () => JSON.parse(await stringifyStream(bus_http_1.ActorHttp.toNodeReadable(response.body)));\n return response;\n };\n }\n}\nexports.DocumentLoaderMediated = DocumentLoaderMediated;\n//# sourceMappingURL=DocumentLoaderMediated.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseJsonLd\"), exports);\n__exportStar(require(\"./DocumentLoaderMediated\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseN3 = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst n3_1 = require(\"n3\");\n/**\n * An N3 RDF Parse actor that listens on the 'rdf-parse' bus.\n *\n * It is able to parse N3-based RDF serializations and announce the presence of them by media type.\n */\nclass ActorRdfParseN3 extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/n-quads\": 1.0,\n * \"application/trig\": 0.95,\n * \"application/n-triples\": 0.8,\n * \"text/turtle\": 0.6,\n * \"text/n3\": 0.35\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/n-quads\": \"http://www.w3.org/ns/formats/N-Quads\",\n * \"application/trig\": \"http://www.w3.org/ns/formats/TriG\",\n * \"application/n-triples\": \"http://www.w3.org/ns/formats/N-Triples\",\n * \"text/turtle\": \"http://www.w3.org/ns/formats/Turtle\",\n * \"text/n3\": \"http://www.w3.org/ns/formats/N3\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new n3_1.StreamParser({ baseIRI: action.metadata?.baseIRI }));\n return {\n data,\n metadata: {\n triples: mediaType === 'text/turtle' ||\n mediaType === 'application/n-triples' ||\n mediaType === 'text/n3',\n },\n };\n }\n}\nexports.ActorRdfParseN3 = ActorRdfParseN3;\n//# sourceMappingURL=ActorRdfParseN3.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseN3\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseRdfXml = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst rdfxml_streaming_parser_1 = require(\"rdfxml-streaming-parser\");\n/**\n * A comunica RDF/XML RDF Parse Actor.\n */\nclass ActorRdfParseRdfXml extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/rdf+xml\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/rdf+xml\": \"http://www.w3.org/ns/formats/RDF_XML\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new rdfxml_streaming_parser_1.RdfXmlParser({ baseIRI: action.metadata?.baseIRI }));\n return {\n data,\n metadata: { triples: true },\n };\n }\n}\nexports.ActorRdfParseRdfXml = ActorRdfParseRdfXml;\n//# sourceMappingURL=ActorRdfParseRdfXml.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseRdfXml\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseXmlRdfa = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst rdfa_streaming_parser_1 = require(\"rdfa-streaming-parser\");\n/**\n * A comunica XML RDFa RDF Parse Actor.\n */\nclass ActorRdfParseXmlRdfa extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/xml\": 1.0,\n * \"text/xml\": 1.0,\n * \"image/svg+xml\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/xml\": \"http://www.w3.org/ns/formats/RDFa\",\n * \"text/xml\": \"http://www.w3.org/ns/formats/RDFa\",\n * \"image/svg+xml\": \"http://www.w3.org/ns/formats/RDFa\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const language = (action.headers && action.headers.get('content-language')) ?? undefined;\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new rdfa_streaming_parser_1.RdfaParser({ baseIRI: action.metadata?.baseIRI, profile: 'xml', language }));\n return { data, metadata: { triples: true } };\n }\n}\nexports.ActorRdfParseXmlRdfa = ActorRdfParseXmlRdfa;\n//# sourceMappingURL=ActorRdfParseXmlRdfa.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseXmlRdfa\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksNext = void 0;\nconst bus_rdf_resolve_hypermedia_links_1 = require(\"@comunica/bus-rdf-resolve-hypermedia-links\");\n/**\n * A comunica Next RDF Resolve Hypermedia Links Actor.\n */\nclass ActorRdfResolveHypermediaLinksNext extends bus_rdf_resolve_hypermedia_links_1.ActorRdfResolveHypermediaLinks {\n constructor(args) {\n super(args);\n }\n async test(action) {\n if (!action.metadata.next) {\n throw new Error(`Actor ${this.name} requires a 'next' metadata entry.`);\n }\n return true;\n }\n async run(action) {\n return { links: [{ url: action.metadata.next }] };\n }\n}\nexports.ActorRdfResolveHypermediaLinksNext = ActorRdfResolveHypermediaLinksNext;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksNext.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksNext\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksQueueFifo = void 0;\nconst bus_rdf_resolve_hypermedia_links_queue_1 = require(\"@comunica/bus-rdf-resolve-hypermedia-links-queue\");\nconst LinkQueueFifo_1 = require(\"./LinkQueueFifo\");\n/**\n * A comunica FIFO RDF Resolve Hypermedia Links Queue Actor.\n */\nclass ActorRdfResolveHypermediaLinksQueueFifo extends bus_rdf_resolve_hypermedia_links_queue_1.ActorRdfResolveHypermediaLinksQueue {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n return { linkQueue: new LinkQueueFifo_1.LinkQueueFifo() };\n }\n}\nexports.ActorRdfResolveHypermediaLinksQueueFifo = ActorRdfResolveHypermediaLinksQueueFifo;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksQueueFifo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkQueueFifo = void 0;\n/**\n * A link queue in FIFO (first-in first-out) order.\n */\nclass LinkQueueFifo {\n constructor() {\n this.links = [];\n }\n push(link) {\n this.links.push(link);\n return true;\n }\n getSize() {\n return this.links.length;\n }\n isEmpty() {\n return this.links.length === 0;\n }\n pop() {\n return this.links.shift();\n }\n peek() {\n return this.links[0];\n }\n}\nexports.LinkQueueFifo = LinkQueueFifo;\n//# sourceMappingURL=LinkQueueFifo.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksQueueFifo\"), exports);\n__exportStar(require(\"./LinkQueueFifo\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaNone = void 0;\nconst actor_rdf_resolve_quad_pattern_rdfjs_source_1 = require(\"@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source\");\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst rdf_store_stream_1 = require(\"rdf-store-stream\");\n/**\n * A comunica None RDF Resolve Hypermedia Actor.\n */\nclass ActorRdfResolveHypermediaNone extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'file');\n }\n async testMetadata(action) {\n return { filterFactor: 0 };\n }\n async run(action) {\n this.logInfo(action.context, `Identified as file source: ${action.url}`);\n return { source: new actor_rdf_resolve_quad_pattern_rdfjs_source_1.RdfJsQuadSource(await (0, rdf_store_stream_1.storeStream)(action.quads)) };\n }\n}\nexports.ActorRdfResolveHypermediaNone = ActorRdfResolveHypermediaNone;\n//# sourceMappingURL=ActorRdfResolveHypermediaNone.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaNone\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaQpf = void 0;\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst RdfSourceQpf_1 = require(\"./RdfSourceQpf\");\n/**\n * A comunica QPF RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveHypermediaQpf extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'qpf');\n }\n async testMetadata(action) {\n const { searchForm } = this.createSource(action.metadata, action.context);\n if (action.handledDatasets && action.handledDatasets[searchForm.dataset]) {\n throw new Error(`Actor ${this.name} can only be applied for the first page of a QPF dataset.`);\n }\n return { filterFactor: 1 };\n }\n /**\n * Look for the search form\n * @param {IActionRdfResolveHypermedia} action the metadata to look for the form.\n * @return {Promise} A promise resolving to a hypermedia form.\n */\n async run(action) {\n this.logInfo(action.context, `Identified as qpf source: ${action.url}`);\n const source = this.createSource(action.metadata, action.context, action.quads);\n return { source, dataset: source.searchForm.dataset };\n }\n createSource(metadata, context, quads) {\n return new RdfSourceQpf_1.RdfSourceQpf(this.mediatorMetadata, this.mediatorMetadataExtract, this.mediatorDereferenceRdf, this.subjectUri, this.predicateUri, this.objectUri, this.graphUri, metadata, context, quads);\n }\n}\nexports.ActorRdfResolveHypermediaQpf = ActorRdfResolveHypermediaQpf;\n//# sourceMappingURL=ActorRdfResolveHypermediaQpf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfSourceQpf = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * An RDF source that executes a quad pattern over a QPF interface and fetches its first page.\n */\nclass RdfSourceQpf {\n constructor(mediatorMetadata, mediatorMetadataExtract, mediatorDereferenceRdf, subjectUri, predicateUri, objectUri, graphUri, metadata, context, initialQuads) {\n this.mediatorMetadata = mediatorMetadata;\n this.mediatorMetadataExtract = mediatorMetadataExtract;\n this.mediatorDereferenceRdf = mediatorDereferenceRdf;\n this.subjectUri = subjectUri;\n this.predicateUri = predicateUri;\n this.objectUri = objectUri;\n this.graphUri = graphUri;\n this.context = context;\n this.cachedQuads = {};\n const searchForm = this.getSearchForm(metadata);\n if (!searchForm) {\n throw new Error('Illegal state: found no TPF/QPF search form anymore in metadata.');\n }\n this.searchForm = searchForm;\n this.defaultGraph = metadata.defaultGraph ? DF.namedNode(metadata.defaultGraph) : undefined;\n if (initialQuads) {\n let wrappedQuads = (0, asynciterator_1.wrap)(initialQuads);\n if (this.defaultGraph) {\n wrappedQuads = this.reverseMapQuadsToDefaultGraph(wrappedQuads);\n }\n wrappedQuads.setProperty('metadata', metadata);\n this.cacheQuads(wrappedQuads, DF.variable(''), DF.variable(''), DF.variable(''), DF.variable(''));\n }\n }\n /**\n * Get a first QPF search form.\n * @param {{[p: string]: any}} metadata A metadata object.\n * @return {ISearchForm} A search form, or null if none could be found.\n */\n getSearchForm(metadata) {\n if (!metadata.searchForms || !metadata.searchForms.values) {\n return;\n }\n // Find a quad pattern or triple pattern search form\n const { searchForms } = metadata;\n for (const searchForm of searchForms.values) {\n if (this.graphUri &&\n this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n this.graphUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 4) {\n return searchForm;\n }\n if (this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 3) {\n return searchForm;\n }\n }\n }\n /**\n * Create a QPF fragment IRI for the given quad pattern.\n * @param {ISearchForm} searchForm A search form.\n * @param {Term} subject A term.\n * @param {Term} predicate A term.\n * @param {Term} object A term.\n * @param {Term} graph A term.\n * @return {string} A URI.\n */\n createFragmentUri(searchForm, subject, predicate, object, graph) {\n const entries = {};\n const input = [\n { uri: this.subjectUri, term: subject },\n { uri: this.predicateUri, term: predicate },\n { uri: this.objectUri, term: object },\n { uri: this.graphUri, term: graph },\n ];\n for (const entry of input) {\n if (entry.uri && entry.term.termType !== 'Variable') {\n entries[entry.uri] = (0, rdf_string_1.termToString)(entry.term);\n }\n }\n return searchForm.getUri(entries);\n }\n match(subject, predicate, object, graph) {\n // If we are querying the default graph,\n // and the source has an overridden value for the default graph (such as QPF can provide),\n // we override the graph parameter with that value.\n let modifiedGraph = false;\n if (this.defaultGraph && graph.termType === 'DefaultGraph') {\n modifiedGraph = true;\n graph = this.defaultGraph;\n }\n // Try to emit from cache\n const cached = this.getCachedQuads(subject, predicate, object, graph);\n if (cached) {\n return cached;\n }\n const quads = new asynciterator_1.TransformIterator(async () => {\n let url = this.createFragmentUri(this.searchForm, subject, predicate, object, graph);\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf.mediate({ context: this.context, url });\n url = dereferenceRdfOutput.url;\n // Determine the metadata and emit it\n const rdfMetadataOuput = await this.mediatorMetadata.mediate({ context: this.context,\n url,\n quads: dereferenceRdfOutput.data,\n triples: dereferenceRdfOutput.metadata?.triples });\n const metadataExtractPromise = this.mediatorMetadataExtract\n .mediate({\n context: this.context,\n url,\n metadata: rdfMetadataOuput.metadata,\n requestTime: dereferenceRdfOutput.requestTime,\n })\n .then(({ metadata }) => quads\n .setProperty('metadata', { ...metadata, canContainUndefs: false }));\n // The server is free to send any data in its response (such as metadata),\n // including quads that do not match the given matter.\n // Therefore, we have to filter away all non-matching quads here.\n const actualDefaultGraph = DF.defaultGraph();\n let filteredOutput = (0, asynciterator_1.wrap)(rdfMetadataOuput.data)\n .transform({\n filter(quad) {\n if ((0, rdf_terms_1.matchPattern)(quad, subject, predicate, object, graph)) {\n return true;\n }\n // Special case: if we are querying in the default graph, and we had an overridden default graph,\n // also accept that incoming triples may be defined in the actual default graph\n return modifiedGraph && (0, rdf_terms_1.matchPattern)(quad, subject, predicate, object, actualDefaultGraph);\n },\n });\n if (modifiedGraph || graph.termType === 'Variable') {\n // Reverse-map the overridden default graph back to the actual default graph\n filteredOutput = this.reverseMapQuadsToDefaultGraph(filteredOutput);\n }\n // Swallow error events, as they will be emitted in the metadata stream as well,\n // and therefore thrown async next.\n filteredOutput.on('error', () => {\n // Do nothing\n });\n // Ensures metadata event is emitted before end-event\n await metadataExtractPromise;\n return filteredOutput;\n }, { autoStart: false });\n this.cacheQuads(quads, subject, predicate, object, graph);\n return this.getCachedQuads(subject, predicate, object, graph);\n }\n reverseMapQuadsToDefaultGraph(quads) {\n const actualDefaultGraph = DF.defaultGraph();\n return quads.map(quad => (0, rdf_terms_1.mapTerms)(quad, (term, key) => key === 'graph' && term.equals(this.defaultGraph) ? actualDefaultGraph : term));\n }\n getPatternId(subject, predicate, object, graph) {\n /* eslint-disable id-length */\n return JSON.stringify({\n s: subject.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(subject),\n p: predicate.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(predicate),\n o: object.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(object),\n g: graph.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(graph),\n });\n /* eslint-enable id-length */\n }\n cacheQuads(quads, subject, predicate, object, graph) {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n this.cachedQuads[patternId] = quads.clone();\n }\n getCachedQuads(subject, predicate, object, graph) {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n const quads = this.cachedQuads[patternId];\n if (quads) {\n return quads.clone();\n }\n }\n}\nexports.RdfSourceQpf = RdfSourceQpf;\n//# sourceMappingURL=RdfSourceQpf.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaQpf\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaSparql = void 0;\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst RdfSourceSparql_1 = require(\"./RdfSourceSparql\");\n/**\n * A comunica SPARQL RDF Resolve Hypermedia Actor.\n */\nclass ActorRdfResolveHypermediaSparql extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'sparql');\n }\n async testMetadata(action) {\n if (!action.forceSourceType && !action.metadata.sparqlService &&\n !(this.checkUrlSuffix && action.url.endsWith('/sparql'))) {\n throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql.`);\n }\n return { filterFactor: 1 };\n }\n async run(action) {\n this.logInfo(action.context, `Identified as sparql source: ${action.url}`);\n const source = new RdfSourceSparql_1.RdfSourceSparql(action.metadata.sparqlService || action.url, action.context, this.mediatorHttp, this.forceHttpGet);\n return { source };\n }\n}\nexports.ActorRdfResolveHypermediaSparql = ActorRdfResolveHypermediaSparql;\n//# sourceMappingURL=ActorRdfResolveHypermediaSparql.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfSourceSparql = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst fetch_sparql_endpoint_1 = require(\"fetch-sparql-endpoint\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\nconst BF = new bindings_factory_1.BindingsFactory();\nconst VAR_COUNT = DF.variable('count');\nclass RdfSourceSparql {\n constructor(url, context, mediatorHttp, forceHttpGet) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n this.endpointFetcher = new fetch_sparql_endpoint_1.SparqlEndpointFetcher({\n method: forceHttpGet ? 'GET' : 'POST',\n fetch: (input, init) => this.mediatorHttp.mediate({ input, init, context: this.context }),\n prefixVariableQuestionMark: true,\n });\n }\n /**\n * Replace all blank nodes in a pattern with variables.\n * If the pattern contains no blank nodes the original pattern gets returned.\n * @param {RDF.BaseQuad} pattern A quad pattern.\n * @return {RDF.BaseQuad} A quad pattern with no blank nodes.\n */\n static replaceBlankNodes(pattern) {\n const variableNames = (0, rdf_terms_1.getVariables)((0, rdf_terms_1.getTerms)(pattern)).map(variableTerm => variableTerm.value);\n // Track the names the blank nodes get mapped to (required if the name has to change)\n const blankMap = {};\n let changed = false;\n // For every position, convert to a variable if there is a blank node\n const result = (0, rdf_terms_1.mapTerms)(pattern, term => {\n if (term.termType === 'BlankNode') {\n let name = term.value;\n if (blankMap[name]) {\n name = blankMap[name];\n }\n else {\n if (variableNames.includes(name)) {\n // Increase index added to name until we find one that is available (2 loops at most)\n let idx = 0;\n while (variableNames.includes(`${name}${idx}`)) {\n ++idx;\n }\n name += idx;\n }\n blankMap[term.value] = name;\n variableNames.push(name);\n }\n changed = true;\n return DF.variable(name);\n }\n return term;\n });\n return changed ? result : pattern;\n }\n /**\n * Convert a quad pattern to a BGP with only that pattern.\n * @param {RDF.pattern} quad A quad pattern.\n * @return {Bgp} A BGP.\n */\n static patternToBgp(pattern) {\n return RdfSourceSparql.FACTORY.createBgp([RdfSourceSparql.FACTORY\n .createPattern(pattern.subject, pattern.predicate, pattern.object, pattern.graph)]);\n }\n /**\n * Convert a quad pattern to a select query for this pattern.\n * @param {RDF.Quad} pattern A quad pattern.\n * @return {string} A select query string.\n */\n static patternToSelectQuery(pattern) {\n const variables = (0, rdf_terms_1.getVariables)((0, rdf_terms_1.getTerms)(pattern));\n return (0, sparqlalgebrajs_1.toSparql)(RdfSourceSparql.FACTORY.createProject(RdfSourceSparql.patternToBgp(pattern), variables));\n }\n /**\n * Convert a quad pattern to a count query for the number of matching triples for this pattern.\n * @param {RDF.Quad} pattern A quad pattern.\n * @return {string} A count query string.\n */\n static patternToCountQuery(pattern) {\n return (0, sparqlalgebrajs_1.toSparql)(RdfSourceSparql.FACTORY.createProject(RdfSourceSparql.FACTORY.createExtend(RdfSourceSparql.FACTORY.createGroup(RdfSourceSparql.patternToBgp(pattern), [], [RdfSourceSparql.FACTORY.createBoundAggregate(DF.variable('var0'), 'count', RdfSourceSparql.FACTORY.createWildcardExpression(), false)]), DF.variable('count'), RdfSourceSparql.FACTORY.createTermExpression(DF.variable('var0'))), [DF.variable('count')]));\n }\n /**\n * Send a SPARQL query to a SPARQL endpoint and retrieve its bindings as a stream.\n * @param {string} endpoint A SPARQL endpoint URL.\n * @param {string} query A SPARQL query string.\n * @return {BindingsStream} A stream of bindings.\n */\n queryBindings(endpoint, query) {\n const rawStream = this.endpointFetcher.fetchBindings(endpoint, query);\n return (0, asynciterator_1.wrap)(rawStream, { autoStart: false, maxBufferSize: Number.POSITIVE_INFINITY })\n .map((rawData) => BF.bindings(Object.entries(rawData)\n .map(([key, value]) => [DF.variable(key.slice(1)), value])));\n }\n match(subject, predicate, object, graph) {\n const pattern = RdfSourceSparql.replaceBlankNodes(RdfSourceSparql.FACTORY.createPattern(subject, predicate, object, graph));\n const countQuery = RdfSourceSparql.patternToCountQuery(pattern);\n const selectQuery = RdfSourceSparql.patternToSelectQuery(pattern);\n // Emit metadata containing the estimated count (reject is never called)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n new Promise(resolve => {\n const bindingsStream = this.queryBindings(this.url, countQuery);\n bindingsStream.on('data', (bindings) => {\n const count = bindings.get(VAR_COUNT);\n if (count) {\n const cardinality = Number.parseInt(count.value, 10);\n if (Number.isNaN(cardinality)) {\n return resolve({ cardinality: Number.POSITIVE_INFINITY });\n }\n return resolve({ cardinality });\n }\n return resolve({ cardinality: Number.POSITIVE_INFINITY });\n });\n bindingsStream.on('error', () => resolve({ cardinality: Number.POSITIVE_INFINITY }));\n bindingsStream.on('end', () => resolve({ cardinality: Number.POSITIVE_INFINITY }));\n })\n .then(metadata => quads.setProperty('metadata', { ...metadata, canContainUndefs: true }));\n // Materialize the queried pattern using each found binding.\n const quads = this.queryBindings(this.url, selectQuery)\n .map((bindings) => (0, rdf_terms_1.mapTerms)(pattern, (value) => {\n if (value.termType === 'Variable') {\n const boundValue = bindings.get(value);\n if (!boundValue) {\n quads.destroy(new Error(`The endpoint ${this.url} failed to provide a binding for ${value.value}.`));\n }\n return boundValue;\n }\n return value;\n }));\n return quads;\n }\n}\nexports.RdfSourceSparql = RdfSourceSparql;\nRdfSourceSparql.FACTORY = new sparqlalgebrajs_1.Factory();\n//# sourceMappingURL=RdfSourceSparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaSparql\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternFederated = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst FederatedQuadSource_1 = require(\"./FederatedQuadSource\");\n/**\n * A comunica Federated RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternFederated extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n this.emptyPatterns = new Map();\n }\n async test(action) {\n const sources = (0, bus_rdf_resolve_quad_pattern_1.getContextSources)(action.context);\n if (!sources) {\n throw new Error(`Actor ${this.name} can only resolve quad pattern queries against a sources array.`);\n }\n return true;\n }\n async getSource(context) {\n return new FederatedQuadSource_1.FederatedQuadSource(this.mediatorResolveQuadPattern, context, this.emptyPatterns, this.skipEmptyPatterns);\n }\n}\nexports.ActorRdfResolveQuadPatternFederated = ActorRdfResolveQuadPatternFederated;\n//# sourceMappingURL=ActorRdfResolveQuadPatternFederated.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FederatedQuadSource = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst data_factory_1 = require(\"@comunica/data-factory\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A FederatedQuadSource can evaluate quad pattern queries over the union of different heterogeneous sources.\n * It will call the given mediator to evaluate each quad pattern query separately.\n */\nclass FederatedQuadSource {\n constructor(mediatorResolveQuadPattern, context, emptyPatterns, skipEmptyPatterns) {\n this.mediatorResolveQuadPattern = mediatorResolveQuadPattern;\n this.sources = context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n this.contextDefault = context.delete(context_entries_1.KeysRdfResolveQuadPattern.sources);\n this.emptyPatterns = emptyPatterns;\n this.sourceIds = context.get(context_entries_1.KeysRdfResolveQuadPattern.sourceIds) ?? new Map();\n this.skipEmptyPatterns = skipEmptyPatterns;\n this.algebraFactory = new sparqlalgebrajs_1.Factory();\n // Initialize sources in the emptyPatterns datastructure\n if (this.skipEmptyPatterns) {\n for (const source of this.sources) {\n if (!this.emptyPatterns.has(source)) {\n this.emptyPatterns.set(source, []);\n }\n }\n }\n }\n /**\n * Check if the given RDF term is not bound to an exact value.\n * I.e., if it is not a Variable.\n * @param {RDF.Term} term An RDF term.\n * @return {boolean} If it is not bound.\n */\n static isTermBound(term) {\n return term.termType !== 'Variable';\n }\n /**\n * Checks if the given (child) pattern is a more bound version of the given (parent) pattern.\n * This will also return true if the patterns are equal.\n * @param {RDF.BaseQuad} child A child pattern.\n * @param {RDF.BaseQuad} parent A parent pattern.\n * @return {boolean} If child is a sub-pattern of parent\n */\n static isSubPatternOf(child, parent) {\n return (!FederatedQuadSource.isTermBound(parent.subject) || parent.subject.equals(child.subject)) &&\n (!FederatedQuadSource.isTermBound(parent.predicate) || parent.predicate.equals(child.predicate)) &&\n (!FederatedQuadSource.isTermBound(parent.object) || parent.object.equals(child.object)) &&\n (!FederatedQuadSource.isTermBound(parent.graph) || parent.graph.equals(child.graph));\n }\n /**\n * If the given term is a blank node, return a deterministic named node for it\n * based on the source id and the blank node value.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n * @return If the given term was a blank node, this will return a skolemized named node, otherwise the original term.\n */\n static skolemizeTerm(term, sourceId) {\n if (term.termType === 'BlankNode') {\n return new data_factory_1.BlankNodeScoped(`bc_${sourceId}_${term.value}`, DF.namedNode(`${FederatedQuadSource.SKOLEM_PREFIX}${sourceId}:${term.value}`));\n }\n return term;\n }\n /**\n * Skolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The skolemized quad.\n */\n static skolemizeQuad(quad, sourceId) {\n return (0, rdf_terms_1.mapTerms)(quad, term => FederatedQuadSource.skolemizeTerm(term, sourceId));\n }\n /**\n * If a given term was a skolemized named node for the given source id,\n * deskolemize it again to a blank node.\n * If the given term was a skolemized named node for another source, return false.\n * If the given term was not a skolemized named node, return the original term.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n */\n static deskolemizeTerm(term, sourceId) {\n if (term.termType === 'BlankNode' && 'skolemized' in term) {\n term = term.skolemized;\n }\n if (term.termType === 'NamedNode' && term.value.startsWith(FederatedQuadSource.SKOLEM_PREFIX)) {\n const colonSeparator = term.value.indexOf(':', FederatedQuadSource.SKOLEM_PREFIX.length);\n const termSourceId = term.value.slice(FederatedQuadSource.SKOLEM_PREFIX.length, colonSeparator);\n // We had a skolemized term\n if (termSourceId === sourceId) {\n // It came from the correct source\n const termLabel = term.value.slice(colonSeparator + 1, term.value.length);\n return DF.blankNode(termLabel);\n }\n // It came from a different source\n return null;\n }\n return term;\n }\n /**\n * Deskolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The deskolemized quad.\n */\n static deskolemizeQuad(quad, sourceId) {\n return (0, rdf_terms_1.mapTerms)(quad, (term) => {\n const newTerm = FederatedQuadSource.deskolemizeTerm(term, sourceId);\n // If the term was skolemized in a different source then dont deskolemize it\n return !newTerm ? term : newTerm;\n });\n }\n /**\n * If the given source is guaranteed to produce an empty result for the given pattern.\n *\n * This prediction is done based on the 'emptyPatterns' datastructure that is stored within this actor.\n * Every time an empty pattern is passed, this pattern is stored in this datastructure for this source.\n * If this pattern (or a more bound pattern) is queried, we know for certain that it will be empty again.\n * This is under the assumption that sources will remain static during query evaluation.\n *\n * @param {IQuerySource} source\n * @param {RDF.BaseQuad} pattern\n * @return {boolean}\n */\n isSourceEmpty(source, pattern) {\n if (!this.skipEmptyPatterns) {\n return false;\n }\n const emptyPatterns = this.emptyPatterns.get(source);\n if (emptyPatterns) {\n for (const emptyPattern of emptyPatterns) {\n if (FederatedQuadSource.isSubPatternOf(pattern, emptyPattern)) {\n return true;\n }\n }\n }\n return false;\n }\n /**\n * Get the unique, deterministic id for the given source.\n * @param source A data source.\n * @return The id of the given source.\n */\n getSourceId(source) {\n let sourceId = this.sourceIds.get(source);\n if (sourceId === undefined) {\n sourceId = `${this.sourceIds.size}`;\n this.sourceIds.set(source, sourceId);\n }\n return sourceId;\n }\n match(subject, predicate, object, graph) {\n // Counters for our metadata\n const metadata = { cardinality: { type: 'exact', value: 0 }, canContainUndefs: false };\n let remainingSources = this.sources.length;\n // Anonymous function to handle cardinality from metadata\n const checkEmitMetadata = (currentTotalItems, source, pattern, lastMetadata) => {\n if (this.skipEmptyPatterns && !currentTotalItems && pattern && !this.isSourceEmpty(source, pattern)) {\n this.emptyPatterns.get(source).push(pattern);\n }\n if (!remainingSources) {\n if (lastMetadata && this.sources.length === 1) {\n // If we only had one source, emit the metadata as-is.\n it.setProperty('metadata', lastMetadata);\n }\n else {\n it.setProperty('metadata', metadata);\n }\n }\n };\n const proxyIt = Promise.all(this.sources.map(async (source) => {\n const sourceId = this.getSourceId(source);\n // Deskolemize terms, so we send the original blank nodes to each source.\n // Note that some sources may not match bnodes by label. SPARQL endpoints for example consider them variables.\n const patternS = FederatedQuadSource.deskolemizeTerm(subject, sourceId);\n const patternP = FederatedQuadSource.deskolemizeTerm(predicate, sourceId);\n const patternO = FederatedQuadSource.deskolemizeTerm(object, sourceId);\n const patternG = FederatedQuadSource.deskolemizeTerm(graph, sourceId);\n let pattern;\n // Prepare the context for this specific source\n let context = (0, bus_rdf_resolve_quad_pattern_1.getDataSourceContext)(source, this.contextDefault);\n context = context.set(context_entries_1.KeysRdfResolveQuadPattern.source, { type: (0, bus_rdf_resolve_quad_pattern_1.getDataSourceType)(source), value: (0, bus_rdf_resolve_quad_pattern_1.getDataSourceValue)(source) });\n let output;\n // If any of the deskolemized blank nodes originate from another source,\n // or if we can predict that the given source will have no bindings for the given pattern,\n // return an empty iterator.\n if (!patternS || !patternP || !patternO || !patternG ||\n // eslint-disable-next-line no-cond-assign\n this.isSourceEmpty(source, pattern = this.algebraFactory\n .createPattern(patternS, patternP, patternO, patternG))) {\n output = { data: new asynciterator_1.ArrayIterator([], { autoStart: false }) };\n output.data.setProperty('metadata', { cardinality: 0, canContainUndefs: false });\n }\n else {\n output = await this.mediatorResolveQuadPattern.mediate({ pattern, context });\n }\n // Handle the metadata from this source\n output.data.getProperty('metadata', (subMetadata) => {\n if (!subMetadata.cardinality || !Number.isFinite(subMetadata.cardinality.value)) {\n // We're already at infinite, so ignore any later metadata\n metadata.cardinality.type = 'estimate';\n metadata.cardinality.value = Number.POSITIVE_INFINITY;\n remainingSources = 0;\n }\n else {\n if (subMetadata.cardinality.type === 'estimate') {\n metadata.cardinality.type = 'estimate';\n }\n metadata.cardinality.value += subMetadata.cardinality.value;\n remainingSources--;\n }\n if (metadata.requestTime || subMetadata.requestTime) {\n metadata.requestTime = metadata.requestTime || 0;\n subMetadata.requestTime = subMetadata.requestTime || 0;\n metadata.requestTime += subMetadata.requestTime;\n }\n if (metadata.pageSize || subMetadata.pageSize) {\n metadata.pageSize = metadata.pageSize || 0;\n subMetadata.pageSize = subMetadata.pageSize || 0;\n metadata.pageSize += subMetadata.pageSize;\n }\n if (subMetadata.canContainUndefs) {\n metadata.canContainUndefs = true;\n }\n checkEmitMetadata(metadata.cardinality.value, source, pattern, subMetadata);\n });\n // Determine the data stream from this source\n let data = output.data.map(quad => FederatedQuadSource.skolemizeQuad(quad, sourceId));\n // SPARQL query semantics allow graph variables to only match with named graphs, excluding the default graph\n if (graph.termType === 'Variable') {\n data = data.filter(quad => quad.graph.termType !== 'DefaultGraph');\n }\n // Forward errors to our final iterator\n data.on('error', error => it.emit('error', error));\n return data;\n }));\n // Take the union of all source streams\n const it = new asynciterator_1.TransformIterator(async () => new asynciterator_1.UnionIterator(await proxyIt), { autoStart: false });\n // If we have 0 sources, immediately emit metadata\n if (this.sources.length === 0) {\n it.setProperty('metadata', metadata);\n }\n return it;\n }\n}\nexports.FederatedQuadSource = FederatedQuadSource;\nFederatedQuadSource.SKOLEM_PREFIX = 'urn:comunica_skolem:source_';\n//# sourceMappingURL=FederatedQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternFederated\"), exports);\n__exportStar(require(\"./FederatedQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternHypermedia = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst LRUCache = require(\"lru-cache\");\nconst MediatedQuadSource_1 = require(\"./MediatedQuadSource\");\n/**\n * A comunica Hypermedia RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternHypermedia extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(({ url }) => url ? cache.del(url) : cache.reset());\n }\n }\n async test(action) {\n const sources = (0, bus_rdf_resolve_quad_pattern_1.hasContextSingleSource)(action.context);\n if (!sources) {\n throw new Error(`Actor ${this.name} can only resolve quad pattern queries against a single source.`);\n }\n return true;\n }\n getSource(context, operation) {\n const contextSource = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(context);\n const url = (0, bus_rdf_resolve_quad_pattern_1.getContextSourceUrl)(contextSource);\n let source;\n // Try to read from cache\n if (this.cache && this.cache.has(url)) {\n source = this.cache.get(url);\n }\n else {\n // If not in cache, create a new source\n source = new MediatedQuadSource_1.MediatedQuadSource(this.cacheSize, context, url, (0, bus_rdf_resolve_quad_pattern_1.getDataSourceType)(contextSource), this.maxIterators, {\n mediatorMetadata: this.mediatorMetadata,\n mediatorMetadataExtract: this.mediatorMetadataExtract,\n mediatorDereferenceRdf: this.mediatorDereferenceRdf,\n mediatorRdfResolveHypermedia: this.mediatorRdfResolveHypermedia,\n mediatorRdfResolveHypermediaLinks: this.mediatorRdfResolveHypermediaLinks,\n mediatorRdfResolveHypermediaLinksQueue: this.mediatorRdfResolveHypermediaLinksQueue,\n });\n // Set in cache\n if (this.cache) {\n this.cache.set(url, source);\n }\n }\n return Promise.resolve(source);\n }\n}\nexports.ActorRdfResolveQuadPatternHypermedia = ActorRdfResolveQuadPatternHypermedia;\n//# sourceMappingURL=ActorRdfResolveQuadPatternHypermedia.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedRdfSourcesAsyncRdfIterator = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\nconst LRUCache = require(\"lru-cache\");\nclass LinkedRdfSourcesAsyncRdfIterator extends asynciterator_1.BufferedIterator {\n constructor(cacheSize, subject, predicate, object, graph, firstUrl, maxIterators) {\n super({ autoStart: true });\n this.started = false;\n this.cacheSize = cacheSize;\n this.subject = subject;\n this.predicate = predicate;\n this.object = object;\n this.graph = graph;\n this.firstUrl = firstUrl;\n this.maxIterators = maxIterators;\n if (this.maxIterators <= 0) {\n throw new Error(`LinkedRdfSourcesAsyncRdfIterator.maxIterators must be larger than zero, but got ${this.maxIterators}`);\n }\n this.currentIterators = [];\n this.iteratorsPendingCreation = 0;\n }\n /**\n * This method can optionally called after constructing an instance\n * for allowing the sources state to be cached.\n *\n * When calling without args, then the default logic will be followed to determine the sources state.\n * When calling with an arg, then the given sources state will be set instead of following the default logic.\n *\n * After calling this method, the `sourcesState` field can be retrieved and optionally cached.\n *\n * This sources state also contains a hash of all handled datasets that will be copied upon first use.\n *\n * @param {ISourcesState} sourcesState An optional sources state.\n */\n setSourcesState(sourcesState) {\n if (sourcesState) {\n this.sourcesState = sourcesState;\n }\n else {\n this.sourcesState = {\n sources: new LRUCache({ max: this.cacheSize }),\n };\n // Ignore the response, we just want the promise to be cached\n this.getSourceCached({ url: this.firstUrl }, {})\n .catch(error => this.destroy(error));\n }\n }\n /**\n * Resolve a source for the given URL.\n * This will first try to retrieve the source from cache.\n * @param link A source ILink.\n * @param handledDatasets A hash of dataset identifiers that have already been handled.\n */\n getSourceCached(link, handledDatasets) {\n let source = this.sourcesState.sources.get(link.url);\n if (source) {\n return source;\n }\n source = this.getSource(link, handledDatasets);\n this.sourcesState.sources.set(link.url, source);\n return source;\n }\n _read(count, done) {\n if (!this.started) {\n // The first time this is called, prepare the first source\n this.started = true;\n // Create a sources state if needed (can be defined if set from actor cache)\n if (!this.sourcesState) {\n this.setSourcesState();\n }\n // Await the source to be set, and start the source iterator\n this.getSourceCached({ url: this.firstUrl }, {})\n .then(sourceState => {\n this.startIterator(sourceState, true);\n done();\n })\n .catch(error => {\n // We can safely ignore this error, since it handled in setSourcesState\n done();\n });\n }\n else {\n // Read from all current iterators\n for (const iterator of this.currentIterators) {\n while (count > 0) {\n const read = iterator.read();\n if (read !== null) {\n count--;\n this._push(read);\n }\n else {\n break;\n }\n }\n if (count <= 0) {\n break;\n }\n }\n // Schedule new iterators if needed\n if (count >= 0 && this.canStartNewIterator()) {\n this.getSourceCached({ url: this.firstUrl }, {})\n .then(sourceState => {\n this.startIteratorsForNextUrls(sourceState.handledDatasets, false);\n done();\n })\n .catch(error => this.destroy(error));\n }\n else {\n done();\n }\n }\n }\n canStartNewIterator() {\n return (this.currentIterators.length + this.iteratorsPendingCreation) < this.maxIterators && !this.readable;\n }\n areIteratorsRunning() {\n return (this.currentIterators.length + this.iteratorsPendingCreation) > 0;\n }\n /**\n * Start a new iterator for the given source.\n * Once the iterator is done, it will either determine a new source, or it will close the linked iterator.\n * @param {ISourceState} startSource The start source state.\n * @param {boolean} emitMetadata If the metadata event should be emitted.\n */\n startIterator(startSource, emitMetadata) {\n // Delegate the quad pattern query to the given source\n const iterator = startSource.source\n .match(this.subject, this.predicate, this.object, this.graph);\n this.currentIterators.push(iterator);\n let receivedMetadata = false;\n // Attach readers to the newly created iterator\n iterator._destination = this;\n iterator.on('error', (error) => this.destroy(error));\n iterator.on('readable', () => this._fillBuffer());\n iterator.on('end', () => {\n this.currentIterators.splice(this.currentIterators.indexOf(iterator), 1);\n // If the metadata was already received, handle the next URL in the queue\n if (receivedMetadata) {\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }\n });\n // Listen for the metadata of the source\n // The metadata property is guaranteed to be set\n iterator.getProperty('metadata', (metadata) => {\n startSource.metadata = { ...startSource.metadata, ...metadata };\n // Emit metadata if needed\n if (emitMetadata) {\n this.setProperty('metadata', startSource.metadata);\n }\n // Determine next urls, which will eventually become a next-next source.\n this.getSourceLinks(startSource.metadata)\n .then((nextUrls) => Promise.all(nextUrls))\n .then(async (nextUrls) => {\n // Append all next URLs to our queue\n const linkQueue = await this.getLinkQueue();\n for (const nextUrl of nextUrls) {\n linkQueue.push(nextUrl, startSource.link);\n }\n receivedMetadata = true;\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }).catch(error => this.destroy(error));\n });\n }\n /**\n * Check if a next URL is in the queue.\n * If yes, start a new iterator.\n * If no, close this iterator.\n * @param handledDatasets\n * @param canClose\n */\n startIteratorsForNextUrls(handledDatasets, canClose) {\n this.getLinkQueue()\n .then(linkQueue => {\n // Create as many new iterators as possible\n while (this.canStartNewIterator() && !this.done) {\n const nextLink = linkQueue.pop();\n if (nextLink) {\n this.iteratorsPendingCreation++;\n this.getSourceCached(nextLink, handledDatasets)\n .then(nextSourceState => {\n this.iteratorsPendingCreation--;\n this.startIterator(nextSourceState, false);\n })\n .catch(error => this.destroy(error));\n }\n else {\n break;\n }\n }\n // Close, only if no other iterators are still running\n if (canClose && linkQueue.isEmpty() && !this.areIteratorsRunning()) {\n this.close();\n }\n })\n .catch(error => this.destroy(error));\n }\n}\nexports.LinkedRdfSourcesAsyncRdfIterator = LinkedRdfSourcesAsyncRdfIterator;\n//# sourceMappingURL=LinkedRdfSourcesAsyncRdfIterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatedLinkedRdfSourcesAsyncRdfIterator = void 0;\nconst stream_1 = require(\"stream\");\nconst LinkedRdfSourcesAsyncRdfIterator_1 = require(\"./LinkedRdfSourcesAsyncRdfIterator\");\n/**\n * An quad iterator that can iterate over consecutive RDF sources\n * that are determined using the rdf-resolve-hypermedia-links bus.\n *\n * @see LinkedRdfSourcesAsyncRdfIterator\n */\nclass MediatedLinkedRdfSourcesAsyncRdfIterator extends LinkedRdfSourcesAsyncRdfIterator_1.LinkedRdfSourcesAsyncRdfIterator {\n constructor(cacheSize, context, forceSourceType, subject, predicate, object, graph, firstUrl, maxIterators, mediators) {\n super(cacheSize, subject, predicate, object, graph, firstUrl, maxIterators);\n this.context = context;\n this.forceSourceType = forceSourceType;\n this.mediatorDereferenceRdf = mediators.mediatorDereferenceRdf;\n this.mediatorMetadata = mediators.mediatorMetadata;\n this.mediatorMetadataExtract = mediators.mediatorMetadataExtract;\n this.mediatorRdfResolveHypermedia = mediators.mediatorRdfResolveHypermedia;\n this.mediatorRdfResolveHypermediaLinks = mediators.mediatorRdfResolveHypermediaLinks;\n this.mediatorRdfResolveHypermediaLinksQueue = mediators.mediatorRdfResolveHypermediaLinksQueue;\n this.handledUrls = { [firstUrl]: true };\n }\n getLinkQueue() {\n if (!this.linkQueue) {\n this.linkQueue = this.mediatorRdfResolveHypermediaLinksQueue\n .mediate({ firstUrl: this.firstUrl, context: this.context })\n .then(result => result.linkQueue);\n }\n return this.linkQueue;\n }\n async getSourceLinks(metadata) {\n try {\n const { links } = await this.mediatorRdfResolveHypermediaLinks.mediate({ context: this.context, metadata });\n // Filter URLs to avoid cyclic next-page loops\n return links.filter(link => {\n if (this.handledUrls[link.url]) {\n return false;\n }\n this.handledUrls[link.url] = true;\n return true;\n });\n }\n catch {\n // No next URLs may be available, for example when we've reached the end of a Hydra next-page sequence.\n return [];\n }\n }\n async getSource(link, handledDatasets) {\n // Include context entries from link\n let context = this.context;\n if (link.context) {\n context = context.merge(link.context);\n }\n // Get the RDF representation of the given document\n let url = link.url;\n let quads;\n let metadata;\n try {\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf\n .mediate({ context, url });\n url = dereferenceRdfOutput.url;\n // Determine the metadata\n const rdfMetadataOutput = await this.mediatorMetadata.mediate({ context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples });\n rdfMetadataOutput.data.on('error', () => {\n // Silence errors in the data stream,\n // as they will be emitted again in the metadata stream,\n // and will result in a promise rejection anyways.\n // If we don't do this, we end up with an unhandled error message\n });\n metadata = (await this.mediatorMetadataExtract.mediate({\n context,\n url,\n // The problem appears to be conflicting metadata keys here\n metadata: rdfMetadataOutput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n quads = rdfMetadataOutput.data;\n // Optionally filter the resulting data\n if (link.transform) {\n quads = await link.transform(quads);\n }\n }\n catch (error) {\n // Make sure that dereference errors are only emitted once an actor really needs the read quads\n // This for example allows SPARQL endpoints that error on service description fetching to still be source-forcible\n quads = new stream_1.Readable();\n quads.read = () => {\n quads.emit('error', error);\n return null;\n };\n metadata = {};\n }\n // Determine the source\n const { source, dataset } = await this.mediatorRdfResolveHypermedia.mediate({\n context,\n forceSourceType: this.forceSourceType,\n handledDatasets,\n metadata,\n quads,\n url,\n });\n if (dataset) {\n // Mark the dataset as applied\n // This is needed to make sure that things like QPF search forms are only applied once,\n // and next page links are followed after that.\n handledDatasets[dataset] = true;\n }\n return { link, source, metadata, handledDatasets };\n }\n}\nexports.MediatedLinkedRdfSourcesAsyncRdfIterator = MediatedLinkedRdfSourcesAsyncRdfIterator;\n//# sourceMappingURL=MediatedLinkedRdfSourcesAsyncRdfIterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatedQuadSource = void 0;\nconst MediatedLinkedRdfSourcesAsyncRdfIterator_1 = require(\"./MediatedLinkedRdfSourcesAsyncRdfIterator\");\n/**\n * A lazy quad source that creates {@link MediatedLinkedRdfSourcesAsyncRdfIterator} instances when matching quads.\n *\n * @see MediatedLinkedRdfSourcesAsyncRdfIterator\n */\nclass MediatedQuadSource {\n constructor(cacheSize, context, firstUrl, forceSourceType, maxIterators, mediators) {\n this.cacheSize = cacheSize;\n this.context = context;\n this.firstUrl = firstUrl;\n this.forceSourceType = forceSourceType;\n this.maxIterators = maxIterators;\n this.mediators = mediators;\n }\n match(subject, predicate, object, graph) {\n const it = new MediatedLinkedRdfSourcesAsyncRdfIterator_1.MediatedLinkedRdfSourcesAsyncRdfIterator(this.cacheSize, this.context, this.forceSourceType, subject, predicate, object, graph, this.firstUrl, this.maxIterators, this.mediators);\n if (!this.sourcesState) {\n it.setSourcesState();\n this.sourcesState = it.sourcesState;\n }\n else {\n it.setSourcesState(this.sourcesState);\n }\n return it;\n }\n}\nexports.MediatedQuadSource = MediatedQuadSource;\n//# sourceMappingURL=MediatedQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternHypermedia\"), exports);\n__exportStar(require(\"./MediatedQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternRdfJsSource = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst RdfJsQuadSource_1 = require(\"./RdfJsQuadSource\");\n/**\n * A comunica RDFJS Source RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternRdfJsSource extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n }\n async test(action) {\n if (!(0, bus_rdf_resolve_quad_pattern_1.hasContextSingleSourceOfType)('rdfjsSource', action.context)) {\n throw new Error(`${this.name} requires a single source with an rdfjsSource to be present in the context.`);\n }\n const source = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(action.context);\n if (!source || typeof source === 'string' || (!('match' in source) && !source.value.match)) {\n throw new Error(`${this.name} received an invalid rdfjsSource.`);\n }\n return true;\n }\n async getSource(context) {\n const source = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(context);\n return new RdfJsQuadSource_1.RdfJsQuadSource('match' in source ? source : source.value);\n }\n}\nexports.ActorRdfResolveQuadPatternRdfJsSource = ActorRdfResolveQuadPatternRdfJsSource;\n//# sourceMappingURL=ActorRdfResolveQuadPatternRdfJsSource.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IRdfJsSourceExtended.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfJsQuadSource = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\n/**\n * A quad source that wraps over an {@link RDF.Source}.\n */\nclass RdfJsQuadSource {\n constructor(source) {\n this.source = source;\n }\n static nullifyVariables(term) {\n return !term || term.termType === 'Variable' ? undefined : term;\n }\n match(subject, predicate, object, graph) {\n // Create an async iterator from the matched quad stream\n const rawStream = this.source.match(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n const it = (0, asynciterator_1.wrap)(rawStream, { autoStart: false });\n // Determine metadata\n this.setMetadata(it, subject, predicate, object, graph)\n .catch(error => it.destroy(error));\n return it;\n }\n async setMetadata(it, subject, predicate, object, graph) {\n let cardinality;\n if (this.source.countQuads) {\n // If the source provides a dedicated method for determining cardinality, use that.\n cardinality = await this.source.countQuads(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n }\n else {\n // Otherwise, fallback to a sub-optimal alternative where we just call match again to count the quads.\n // WARNING: we can NOT reuse the original data stream here,\n // because we may loose data elements due to things happening async.\n let i = 0;\n cardinality = await new Promise((resolve, reject) => {\n const matches = this.source.match(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n matches.on('error', reject);\n matches.on('end', () => resolve(i));\n matches.on('data', () => i++);\n });\n }\n it.setProperty('metadata', { cardinality: { type: 'exact', value: cardinality }, canContainUndefs: false });\n }\n}\nexports.RdfJsQuadSource = RdfJsQuadSource;\n//# sourceMappingURL=RdfJsQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternRdfJsSource\"), exports);\n__exportStar(require(\"./IRdfJsSourceExtended\"), exports);\n__exportStar(require(\"./RdfJsQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeJsonLd = void 0;\nconst bus_rdf_serialize_1 = require(\"@comunica/bus-rdf-serialize\");\nconst jsonld_streaming_serializer_1 = require(\"jsonld-streaming-serializer\");\n/**\n * A comunica Jsonld RDF Serialize Actor.\n */\nclass ActorRdfSerializeJsonLd extends bus_rdf_serialize_1.ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/ld+json\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/ld+json\": \"http://www.w3.org/ns/formats/JSON-LD\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const data = new jsonld_streaming_serializer_1.JsonLdSerializer({ space: ' '.repeat(this.jsonStringifyIndentSpaces) }).import(action.quadStream);\n return { data };\n }\n}\nexports.ActorRdfSerializeJsonLd = ActorRdfSerializeJsonLd;\n//# sourceMappingURL=ActorRdfSerializeJsonLd.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerializeJsonLd\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeN3 = void 0;\nconst bus_rdf_serialize_1 = require(\"@comunica/bus-rdf-serialize\");\nconst n3_1 = require(\"n3\");\n/**\n * A comunica N3 RDF Serialize Actor.\n */\nclass ActorRdfSerializeN3 extends bus_rdf_serialize_1.ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/n-quads\": 1.0,\n * \"application/trig\": 0.95,\n * \"application/n-triples\": 0.8,\n * \"text/turtle\": 0.6,\n * \"text/n3\": 0.35\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/n-quads\": \"http://www.w3.org/ns/formats/N-Quads\",\n * \"application/trig\": \"http://www.w3.org/ns/formats/TriG\",\n * \"application/n-triples\": \"http://www.w3.org/ns/formats/N-Triples\",\n * \"text/turtle\": \"http://www.w3.org/ns/formats/Turtle\",\n * \"text/n3\": \"http://www.w3.org/ns/formats/N3\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const data = new n3_1.StreamWriter({ format: mediaType }).import(action.quadStream);\n return { data,\n triples: mediaType === 'text/turtle' ||\n mediaType === 'application/n-triples' ||\n mediaType === 'text/n3' };\n }\n}\nexports.ActorRdfSerializeN3 = ActorRdfSerializeN3;\n//# sourceMappingURL=ActorRdfSerializeN3.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerializeN3\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaPatchSparqlUpdate = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationPatchSparqlUpdate_1 = require(\"./QuadDestinationPatchSparqlUpdate\");\n/**\n * A comunica Patch SPARQL Update RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaPatchSparqlUpdate extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'patchSparqlUpdate');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType && !action.metadata.patchSparqlUpdate) {\n throw new Error(`Actor ${this.name} could not detect a destination with 'application/sparql-update' as 'Accept-Patch' header.`);\n }\n if (!action.forceDestinationType && !action.exists) {\n throw new Error(`Actor ${this.name} can only patch a destination that already exists.`);\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as patchSparqlUpdate destination: ${action.url}`);\n return {\n destination: new QuadDestinationPatchSparqlUpdate_1.QuadDestinationPatchSparqlUpdate(action.url, action.context, this.mediatorHttp),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaPatchSparqlUpdate = ActorRdfUpdateHypermediaPatchSparqlUpdate;\n//# sourceMappingURL=ActorRdfUpdateHypermediaPatchSparqlUpdate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationPatchSparqlUpdate = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst cross_fetch_1 = require(\"cross-fetch\");\nconst rdf_string_ttl_1 = require(\"rdf-string-ttl\");\n/**\n * A quad destination that represents a resource that is patchable via SPARQL Update.\n */\nclass QuadDestinationPatchSparqlUpdate {\n constructor(url, context, mediatorHttp) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n }\n insert(quads) {\n return this.wrapSparqlUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n return this.wrapSparqlUpdateRequest('DELETE', quads);\n }\n async wrapSparqlUpdateRequest(type, quads) {\n // Wrap triples in DATA block\n const dataWrapped = quads\n .map((quad) => {\n let stringQuad = `${(0, rdf_string_ttl_1.termToString)(quad.subject)} ${(0, rdf_string_ttl_1.termToString)(quad.predicate)} ${(0, rdf_string_ttl_1.termToString)(quad.object)} .`;\n if (quad.graph.termType !== 'DefaultGraph') {\n stringQuad = ` GRAPH ${(0, rdf_string_ttl_1.termToString)(quad.graph)} { ${stringQuad} }\\n`;\n }\n else {\n stringQuad = ` ${stringQuad}\\n`;\n }\n return stringQuad;\n })\n .prepend([`${type} DATA {\\n`])\n .append(['}']);\n const readable = new stream_1.Readable();\n readable._read = () => true;\n dataWrapped.on('data', (quad) => readable.push(quad));\n dataWrapped.on('end', () => readable.push(null));\n // Send data in PUT request\n const headers = new cross_fetch_1.Headers({ 'content-type': 'application/sparql-update' });\n const httpResponse = await this.mediatorHttp.mediate({\n context: this.context,\n init: {\n headers,\n method: 'PATCH',\n body: bus_http_1.ActorHttp.toWebReadableStream(readable),\n },\n input: this.url,\n });\n await (0, bus_rdf_update_quads_1.validateHttpResponse)(this.url, httpResponse);\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n throw new Error(`Patch-based SPARQL Update destinations don't support named graphs`);\n }\n async createGraphs(graphs, requireNonExistence) {\n throw new Error(`Patch-based SPARQL Update destinations don't support named graphs`);\n }\n}\nexports.QuadDestinationPatchSparqlUpdate = QuadDestinationPatchSparqlUpdate;\n//# sourceMappingURL=QuadDestinationPatchSparqlUpdate.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaPatchSparqlUpdate\"), exports);\n__exportStar(require(\"./QuadDestinationPatchSparqlUpdate\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaPutLdp = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationPutLdp_1 = require(\"./QuadDestinationPutLdp\");\n/**\n * A comunica Post LDP RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaPutLdp extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'putLdp');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType) {\n if (!action.metadata.allowHttpMethods || !action.metadata.allowHttpMethods.includes('PUT')) {\n throw new Error(`Actor ${this.name} could not detect a destination with 'Allow: PUT' header.`);\n }\n if (action.exists) {\n throw new Error(`Actor ${this.name} can only put on a destination that does not already exists.`);\n }\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as putLdp destination: ${action.url}`);\n return {\n destination: new QuadDestinationPutLdp_1.QuadDestinationPutLdp(action.url, action.context, action.metadata.putAccepted || [], this.mediatorHttp, this.mediatorRdfSerializeMediatypes, this.mediatorRdfSerialize),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaPutLdp = ActorRdfUpdateHypermediaPutLdp;\n//# sourceMappingURL=ActorRdfUpdateHypermediaPutLdp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationPutLdp = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst cross_fetch_1 = require(\"cross-fetch\");\n/**\n * A quad destination that represents a resource that can be PUT.\n */\nclass QuadDestinationPutLdp {\n constructor(url, context, mediaTypes, mediatorHttp, mediatorRdfSerializeMediatypes, mediatorRdfSerialize) {\n this.url = url;\n this.context = context;\n this.mediaTypes = mediaTypes;\n this.mediatorHttp = mediatorHttp;\n this.mediatorRdfSerializeMediatypes = mediatorRdfSerializeMediatypes;\n this.mediatorRdfSerialize = mediatorRdfSerialize;\n }\n insert(quads) {\n return this.wrapRdfUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n throw new Error(`Put-based LDP destinations don't support deletions`);\n }\n async wrapRdfUpdateRequest(type, quads) {\n // Determine media type for serialization\n const { mediaTypes } = await this.mediatorRdfSerializeMediatypes.mediate({ context: this.context, mediaTypes: true });\n const availableMediaTypes = this.mediaTypes\n .filter(mediaType => mediaType in mediaTypes);\n // Fallback to our own preferred media type\n const mediaType = availableMediaTypes.length > 0 ?\n availableMediaTypes[0] :\n Object.keys(mediaTypes).sort((typeA, typeB) => mediaTypes[typeB] - mediaTypes[typeA])[0];\n // Serialize quads\n const { handle: { data } } = await this.mediatorRdfSerialize.mediate({\n context: this.context,\n handle: { quadStream: quads, context: this.context },\n handleMediaType: mediaType,\n });\n // Send data in (LDP) PUT request\n const headers = new cross_fetch_1.Headers({ 'content-type': mediaType });\n const httpResponse = await this.mediatorHttp.mediate({\n context: this.context,\n init: {\n headers,\n method: 'PUT',\n body: bus_http_1.ActorHttp.toWebReadableStream(data),\n },\n input: this.url,\n });\n await (0, bus_rdf_update_quads_1.validateHttpResponse)(this.url, httpResponse);\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n throw new Error(`Put-based LDP destinations don't support named graphs`);\n }\n async createGraphs(graphs, requireNonExistence) {\n throw new Error(`Put-based LDP destinations don't support named graphs`);\n }\n}\nexports.QuadDestinationPutLdp = QuadDestinationPutLdp;\n//# sourceMappingURL=QuadDestinationPutLdp.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaPutLdp\"), exports);\n__exportStar(require(\"./QuadDestinationPutLdp\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaSparql = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationSparql_1 = require(\"./QuadDestinationSparql\");\n/**\n * A comunica SPARQL RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaSparql extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'sparql');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType && !action.metadata.sparqlService &&\n !(this.checkUrlSuffixSparql && action.url.endsWith('/sparql')) &&\n !(this.checkUrlSuffixUpdate && action.url.endsWith('/update'))) {\n throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql or /update.`);\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as sparql destination: ${action.url}`);\n return {\n destination: new QuadDestinationSparql_1.QuadDestinationSparql(action.metadata.sparqlService || action.url, action.context, this.mediatorHttp),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaSparql = ActorRdfUpdateHypermediaSparql;\n//# sourceMappingURL=ActorRdfUpdateHypermediaSparql.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationSparql = void 0;\nconst fetch_sparql_endpoint_1 = require(\"fetch-sparql-endpoint\");\nconst rdf_string_ttl_1 = require(\"rdf-string-ttl\");\nconst stringifyStream = require('stream-to-string');\n/**\n * A quad destination that represents an LDP resource.\n */\nclass QuadDestinationSparql {\n constructor(url, context, mediatorHttp) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n this.endpointFetcher = new fetch_sparql_endpoint_1.SparqlEndpointFetcher({\n fetch: (input, init) => this.mediatorHttp.mediate({ input, init, context: this.context }),\n prefixVariableQuestionMark: true,\n });\n }\n insert(quads) {\n return this.wrapSparqlUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n return this.wrapSparqlUpdateRequest('DELETE', quads);\n }\n async wrapSparqlUpdateRequest(type, quads) {\n // Wrap triples in DATA block\n const dataWrapped = quads\n .map((quad) => {\n let stringQuad = `${(0, rdf_string_ttl_1.termToString)(quad.subject)} ${(0, rdf_string_ttl_1.termToString)(quad.predicate)} ${(0, rdf_string_ttl_1.termToString)(quad.object)} .`;\n if (quad.graph.termType !== 'DefaultGraph') {\n stringQuad = ` GRAPH ${(0, rdf_string_ttl_1.termToString)(quad.graph)} { ${stringQuad} }\\n`;\n }\n else {\n stringQuad = ` ${stringQuad}\\n`;\n }\n return stringQuad;\n })\n .prepend([`${type} DATA {\\n`])\n .append(['}']);\n // Serialize query stream to string\n const query = await stringifyStream(dataWrapped);\n // Send update query to endpoint\n await this.endpointFetcher.fetchUpdate(this.url, query);\n }\n async deleteGraphs(graphsIn, requireExistence, dropGraphs) {\n const graphs = Array.isArray(graphsIn) ?\n graphsIn :\n [graphsIn];\n const queries = [];\n for (const graph of graphs) {\n let graphValue;\n if (typeof graph === 'string') {\n graphValue = graph;\n }\n else if (graph.termType === 'DefaultGraph') {\n graphValue = 'DEFAULT';\n }\n else {\n graphValue = `GRAPH <${graph.value}>`;\n }\n queries.push(`${dropGraphs ? 'DROP' : 'CLEAR'} ${requireExistence ? '' : 'SILENT '}${graphValue}`);\n }\n await this.endpointFetcher.fetchUpdate(this.url, queries.join('; '));\n }\n async createGraphs(graphs, requireNonExistence) {\n const queries = [];\n for (const graph of graphs) {\n queries.push(`CREATE${requireNonExistence ? '' : ' SILENT'} GRAPH <${graph.value}>`);\n }\n await this.endpointFetcher.fetchUpdate(this.url, queries.join('; '));\n }\n}\nexports.QuadDestinationSparql = QuadDestinationSparql;\n//# sourceMappingURL=QuadDestinationSparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaSparql\"), exports);\n__exportStar(require(\"./QuadDestinationSparql\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsHypermedia = void 0;\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst LRUCache = require(\"lru-cache\");\n/**\n * A comunica Hypermedia RDF Update Quads Actor.\n */\nclass ActorRdfUpdateQuadsHypermedia extends bus_rdf_update_quads_1.ActorRdfUpdateQuadsDestination {\n constructor(args) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(({ url }) => url ? cache.del(url) : cache.reset());\n }\n }\n async test(action) {\n const url = (0, bus_rdf_update_quads_1.getContextDestinationUrl)((0, bus_rdf_update_quads_1.getContextDestination)(action.context));\n if (!url) {\n throw new Error(`Actor ${this.name} can only update quads against a single destination URL.`);\n }\n return true;\n }\n getDestination(context) {\n const dataDestination = (0, bus_rdf_update_quads_1.getContextDestination)(context);\n let url = (0, bus_rdf_update_quads_1.getContextDestinationUrl)(dataDestination);\n // Try to read from cache\n if (this.cache && this.cache.has(url)) {\n return this.cache.get(url);\n }\n // Otherwise, call mediators\n const ret = (async () => {\n let metadata;\n let exists;\n try {\n // Dereference destination URL\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf\n .mediate({ context, url, acceptErrors: true });\n exists = dereferenceRdfOutput.exists;\n url = dereferenceRdfOutput.url;\n // Determine the metadata\n const rdfMetadataOuput = await this.mediatorMetadata.mediate({ context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples });\n metadata = (await this.mediatorMetadataExtract.mediate({\n context,\n url,\n metadata: rdfMetadataOuput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n }\n catch {\n metadata = {};\n exists = false;\n }\n // Obtain destination\n const { destination } = await this.mediatorRdfUpdateHypermedia.mediate({\n context,\n url,\n metadata,\n exists,\n forceDestinationType: (0, bus_rdf_update_quads_1.getDataDestinationType)(dataDestination),\n });\n return destination;\n })();\n if (this.cache) {\n this.cache.set(url, ret);\n }\n return ret;\n }\n}\nexports.ActorRdfUpdateQuadsHypermedia = ActorRdfUpdateQuadsHypermedia;\n//# sourceMappingURL=ActorRdfUpdateQuadsHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuadsHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsRdfJsStore = void 0;\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst RdfJsQuadDestination_1 = require(\"./RdfJsQuadDestination\");\n/**\n * A comunica RDFJS Store RDF Update Quads Actor.\n */\nclass ActorRdfUpdateQuadsRdfJsStore extends bus_rdf_update_quads_1.ActorRdfUpdateQuadsDestination {\n constructor(args) {\n super(args);\n }\n async test(action) {\n const destination = (0, bus_rdf_update_quads_1.getContextDestination)(action.context);\n if (!destination || typeof destination === 'string' ||\n (!('remove' in destination) && 'value' in destination && !destination.value.remove)) {\n throw new Error(`${this.name} received an invalid rdfjsStore.`);\n }\n return true;\n }\n async getDestination(context) {\n const destination = (0, bus_rdf_update_quads_1.getContextDestination)(context);\n return new RdfJsQuadDestination_1.RdfJsQuadDestination('remove' in destination ? destination : destination.value);\n }\n}\nexports.ActorRdfUpdateQuadsRdfJsStore = ActorRdfUpdateQuadsRdfJsStore;\n//# sourceMappingURL=ActorRdfUpdateQuadsRdfJsStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfJsQuadDestination = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A quad destination that wraps around an {@link RDF.Store}.\n */\nclass RdfJsQuadDestination {\n constructor(store) {\n this.store = store;\n }\n promisifyEventEmitter(eventEmitter) {\n return new Promise((resolve, reject) => {\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n delete(quads) {\n return this.promisifyEventEmitter(this.store.remove(quads));\n }\n insert(quads) {\n return this.promisifyEventEmitter(this.store.import(quads));\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n switch (graphs) {\n case 'ALL':\n /* eslint-disable no-fallthrough */\n // Remove the default graph\n await this.promisifyEventEmitter(this.store.deleteGraph(DF.defaultGraph()));\n // Drop through to remove all named graphs\n case 'NAMED':\n /* eslint-enable no-fallthrough */\n // Warning: this is sub-optimal!\n // Query ALL quads to determine all named graphs\n // eslint-disable-next-line no-case-declarations\n const allQuads = this.store.match();\n // eslint-disable-next-line no-case-declarations\n const namedGraphs = {};\n allQuads.on('data', (quad) => {\n if (quad.graph.termType !== 'DefaultGraph') {\n namedGraphs[(0, rdf_string_1.termToString)(quad.graph)] = true;\n }\n });\n await this.promisifyEventEmitter(allQuads);\n // Delete all named graphs\n await Promise.all(Object.keys(namedGraphs)\n .map(namedGraph => this.promisifyEventEmitter(this.store\n .deleteGraph((0, rdf_string_1.stringToTerm)(namedGraph)))));\n break;\n default:\n // Delete the default graph or a named graph\n for (const graph of Array.isArray(graphs) ? graphs : [graphs]) {\n await this.promisifyEventEmitter(this.store.deleteGraph(graph));\n }\n }\n }\n async createGraphs(graphs, requireNonExistence) {\n // We don't have to create anything, since RDF/JS stores don't record empty graphs.\n // The only check we have to do is error on existence\n if (requireNonExistence) {\n for (const graph of graphs) {\n const eventEmitter = this.store.match(undefined, undefined, undefined, graph);\n await new Promise((resolve, reject) => {\n eventEmitter.once('data', () => {\n reject(new Error(`Unable to create graph ${graph.value} as it already exists`));\n });\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n }\n }\n}\nexports.RdfJsQuadDestination = RdfJsQuadDestination;\n//# sourceMappingURL=RdfJsQuadDestination.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuadsRdfJsStore\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bindings = void 0;\nconst immutable_1 = require(\"immutable\");\nconst bindingsToString_1 = require(\"./bindingsToString\");\n/**\n * An immutable.js-based Bindings object.\n */\nclass Bindings {\n constructor(dataFactory, entries) {\n this.type = 'bindings';\n this.dataFactory = dataFactory;\n this.entries = entries;\n }\n has(key) {\n return this.entries.has(typeof key === 'string' ? key : key.value);\n }\n get(key) {\n return this.entries.get(typeof key === 'string' ? key : key.value);\n }\n set(key, value) {\n return new Bindings(this.dataFactory, this.entries.set(typeof key === 'string' ? key : key.value, value));\n }\n delete(key) {\n return new Bindings(this.dataFactory, this.entries.delete(typeof key === 'string' ? key : key.value));\n }\n keys() {\n return this.mapIterable(this.iteratorToIterable(this.entries.keys()), key => this.dataFactory.variable(key));\n }\n values() {\n return this.iteratorToIterable(this.entries.values());\n }\n forEach(fn) {\n this.entries.forEach((value, key) => fn(value, this.dataFactory.variable(key)));\n }\n get size() {\n return this.entries.size;\n }\n [Symbol.iterator]() {\n return this.mapIterable(this.iteratorToIterable(this.entries.entries()), ([key, value]) => [this.dataFactory.variable(key), value])[Symbol.iterator]();\n }\n equals(other) {\n if (!other) {\n return false;\n }\n if (this === other) {\n return true;\n }\n // First check if size is equal\n if (this.size !== other.size) {\n return false;\n }\n // Then check if keys and values are equal\n for (const key of this.keys()) {\n if (!this.get(key)?.equals(other.get(key))) {\n return false;\n }\n }\n return true;\n }\n filter(fn) {\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(this.entries\n .filter((value, key) => fn(value, this.dataFactory.variable(key)))));\n }\n map(fn) {\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(this.entries\n .map((value, key) => fn(value, this.dataFactory.variable(key)))));\n }\n merge(other) {\n // Determine the union of keys\n const keys = new Set([\n ...this.iteratorToIterable(this.entries.keys()),\n ...[...other.keys()].map(key => key.value),\n ]);\n // Collect entries\n const entries = [];\n for (const key of keys) {\n const left = this.entries.get(key);\n const right = other.get(this.dataFactory.variable(key));\n if (left && right && !left.equals(right)) {\n return;\n }\n const value = left || right;\n entries.push([key, value]);\n }\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(entries));\n }\n mergeWith(merger, other) {\n // Determine the union of keys\n const keys = new Set([\n ...this.iteratorToIterable(this.entries.keys()),\n ...[...other.keys()].map(key => key.value),\n ]);\n // Collect entries\n const entries = [];\n for (const key of keys) {\n const variable = this.dataFactory.variable(key);\n const left = this.entries.get(key);\n const right = other.get(variable);\n let value;\n if (left && right && !left.equals(right)) {\n value = merger(left, right, variable);\n }\n else {\n value = left || right;\n }\n entries.push([key, value]);\n }\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(entries));\n }\n toString() {\n return (0, bindingsToString_1.bindingsToString)(this);\n }\n *mapIterable(iterable, callback) {\n for (const x of iterable) {\n // eslint-disable-next-line callback-return\n yield callback(x);\n }\n }\n iteratorToIterable(iterator) {\n return {\n [Symbol.iterator]: () => iterator,\n };\n }\n}\nexports.Bindings = Bindings;\n//# sourceMappingURL=Bindings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingsFactory = void 0;\nconst immutable_1 = require(\"immutable\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst Bindings_1 = require(\"./Bindings\");\n/**\n * A Bindings factory that provides Bindings backed by immutable.js.\n */\nclass BindingsFactory {\n constructor(dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.dataFactory = dataFactory;\n }\n bindings(entries = []) {\n return new Bindings_1.Bindings(this.dataFactory, (0, immutable_1.Map)(entries.map(([key, value]) => [key.value, value])));\n }\n fromBindings(bindings) {\n return this.bindings([...bindings]);\n }\n fromRecord(record) {\n return this.bindings(Object.entries(record).map(([key, value]) => [this.dataFactory.variable(key), value]));\n }\n}\nexports.BindingsFactory = BindingsFactory;\n//# sourceMappingURL=BindingsFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindingsToString = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * Stringify a bindings object.\n * @param bindings A bindings object.\n */\nfunction bindingsToString(bindings) {\n const raw = {};\n for (const key of bindings.keys()) {\n raw[key.value] = (0, rdf_string_1.termToString)(bindings.get(key));\n }\n return JSON.stringify(raw, null, ' ');\n}\nexports.bindingsToString = bindingsToString;\n//# sourceMappingURL=bindingsToString.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Bindings\"), exports);\n__exportStar(require(\"./BindingsFactory\"), exports);\n__exportStar(require(\"./bindingsToString\"), exports);\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorContextPreprocess = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for context-preprocess events.\n *\n * Actor types:\n * * Input: IAction: A context that will be processed.\n * * Test: \n * * Output: IActorContextPreprocessOutput: The resulting context.\n *\n * @see IActionContextPreprocess\n * @see IActorContextPreprocessOutput\n */\nclass ActorContextPreprocess extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorContextPreprocess = ActorContextPreprocess;\n//# sourceMappingURL=ActorContextPreprocess.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorContextPreprocess\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceRdf = void 0;\nconst bus_dereference_1 = require(\"@comunica/bus-dereference\");\n/**\n * A base actor for dereferencing URLs to quad streams.\n *\n * Actor types:\n * * Input: IActionDereferenceRdf: A URL.\n * * Test: \n * * Output: IActorDereferenceRdfOutput: A quad stream.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorDereferenceRdf extends bus_dereference_1.ActorDereferenceParse {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorDereferenceRdf = ActorDereferenceRdf;\n//# sourceMappingURL=ActorDereferenceRdf.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorDereferenceRdf\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereference = void 0;\nconst ActorDereferenceBase_1 = require(\"./ActorDereferenceBase\");\n/**\n * A base actor for dereferencing URLs to (generic) streams.\n *\n * Actor types:\n * * Input: IActionDereference: A URL.\n * * Test: \n * * Output: IActorDereferenceOutput: A Readable stream\n *\n * @see IActionDereference\n * @see IActorDereferenceOutput\n */\nclass ActorDereference extends ActorDereferenceBase_1.ActorDereferenceBase {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Handle the given error as a rejection or delegate it to the logger,\n * depending on whether or not hard errors are enabled.\n * @param {IActionDereference} action A dereference action.\n * @param {Error} error An error that has occurred.\n * @param headers Optional HTTP headers to pass.\n * @param {number} requestTime The time it took to request the page in milliseconds.\n * @return {Promise} A promise that rejects or resolves to an empty output.\n */\n async handleDereferenceErrors(action, error, headers, requestTime = 0) {\n return this.dereferenceErrorHandler(action, error, { url: action.url, exists: false, headers, requestTime });\n }\n}\nexports.ActorDereference = ActorDereference;\n//# sourceMappingURL=ActorDereference.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceBase = exports.isHardError = exports.emptyReadable = void 0;\nconst stream_1 = require(\"stream\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nfunction emptyReadable() {\n const data = new stream_1.Readable();\n data.push(null);\n return data;\n}\nexports.emptyReadable = emptyReadable;\n/**\n * Check if hard errors should occur on HTTP or parse errors.\n * @param {IActionDereference} action A dereference action.\n * @return {boolean} If hard errors are enabled.\n */\nfunction isHardError(context) {\n return !context.get(context_entries_1.KeysInitQuery.lenient);\n}\nexports.isHardError = isHardError;\n/**\n * A base actor for dereferencing URLs to (generic) streams.\n *\n * Actor types:\n * * Input: IActionDereference: A URL.\n * * Test: \n * * Output: IActorDereferenceOutput: A Readable stream\n *\n * @see IActionDereference\n * @see IActorDereferenceOutput\n */\nclass ActorDereferenceBase extends core_1.Actor {\n constructor(args) {\n super(args);\n }\n /**\n * Handle the given error as a rejection or delegate it to the logger,\n * depending on whether or not hard errors are enabled.\n * @param {I} action An action.\n * @param {Error} error An error that has occurred.\n * @param {N} output Data to add to the output\n */\n async dereferenceErrorHandler(action, error, output) {\n if (isHardError(action.context)) {\n throw error;\n }\n this.logError(action.context, error.message);\n return { ...output, data: emptyReadable() };\n }\n}\nexports.ActorDereferenceBase = ActorDereferenceBase;\n//# sourceMappingURL=ActorDereferenceBase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceParse = exports.getMediaTypeFromExtension = void 0;\nconst stream_1 = require(\"stream\");\nconst ActorDereferenceBase_1 = require(\"./ActorDereferenceBase\");\n/**\n * Get the media type based on the extension of the given path,\n * which can be an URL or file path.\n * @param {string} path A path.\n * @param {Record} mediaMappings A collection of mappings,\n * mapping file extensions to their corresponding media type.\n * @return {string} A media type or the empty string.\n */\nfunction getMediaTypeFromExtension(path, mediaMappings) {\n const dotIndex = path.lastIndexOf('.');\n // Get extension after last dot and map to media\n return (dotIndex >= 0 && mediaMappings?.[path.slice(dotIndex + 1)]) || '';\n}\nexports.getMediaTypeFromExtension = getMediaTypeFromExtension;\n/**\n * An abstract actor that handles dereference and parse actions.\n *\n * Actor types:\n * Input: IActionDereferenceParse: A URL.\n * Test: \n * Output: IActorDereferenceParseOutput: A data stream of type output by the Parser.\n *\n */\nclass ActorDereferenceParse extends ActorDereferenceBase_1.ActorDereferenceBase {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n /**\n * If hard errors are disabled, modify the given stream so that errors are delegated to the logger.\n * @param {IActionDereferenceParse} action A dereference action.\n * @param {Readable} data A data stream.\n * @return {Readable} The resulting data stream.\n */\n handleDereferenceStreamErrors(action, data) {\n // If we don't emit hard errors, make parsing error events log instead, and silence them downstream.\n if (!(0, ActorDereferenceBase_1.isHardError)(action.context)) {\n data.on('error', error => {\n this.logError(action.context, error.message, () => ({ url: action.url }));\n // Make sure the errored stream is ended.\n data.push(null);\n });\n data = data.pipe(new stream_1.PassThrough({ objectMode: true }));\n }\n return data;\n }\n async run(action) {\n const { context } = action;\n const dereference = await this.mediatorDereference.mediate({\n ...action,\n mediaTypes: async () => (await this.mediatorParseMediatypes?.mediate({ context, mediaTypes: true }))?.mediaTypes,\n });\n let result;\n try {\n result = (await this.mediatorParse.mediate({\n context,\n handle: { context, ...dereference, metadata: await this.getMetadata(dereference) },\n handleMediaType: dereference.mediaType ||\n getMediaTypeFromExtension(dereference.url, this.mediaMappings) ||\n action.mediaType,\n })).handle;\n result.data = this.handleDereferenceStreamErrors(action, result.data);\n }\n catch (error) {\n // Close the body, to avoid process to hang\n await dereference.data.close?.();\n result = await this.dereferenceErrorHandler(action, error, {});\n }\n // Return the parsed stream and any metadata\n return { ...dereference, ...result };\n }\n}\nexports.ActorDereferenceParse = ActorDereferenceParse;\n//# sourceMappingURL=ActorDereferenceParse.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorDereference\"), exports);\n__exportStar(require(\"./ActorDereferenceParse\"), exports);\n__exportStar(require(\"./ActorDereferenceBase\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHashBindings = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for hash-bindings events.\n *\n * Actor types:\n * * Input: IActionHashBindings: Metadata for selecting a hash function.\n * * Test: IActorTest:\n * * Output: IActorHashBindingsOutput: The resulting hash function.\n *\n * @see IActionHashBindings\n * @see IActorHashBindingsTest\n * @see IActorHashBindingsOutput\n */\nclass ActorHashBindings extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorHashBindings = ActorHashBindings;\n//# sourceMappingURL=ActorHashBindings.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHashBindings\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttpInvalidate = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for http-invalidate events.\n *\n * Actor types:\n * * Input: IActionHttpInvalidate: An action for invalidating the cached contents of given URL.\n * * Test: \n * * Output: IActorHttpInvalidateOutput: An empty response.\n *\n * @see IActionHttpInvalidate\n * @see IActorHttpInvalidateOutput\n */\nclass ActorHttpInvalidate extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorHttpInvalidate = ActorHttpInvalidate;\n//# sourceMappingURL=ActorHttpInvalidate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttpInvalidateListenable = void 0;\nconst ActorHttpInvalidate_1 = require(\"./ActorHttpInvalidate\");\n/**\n * An ActorHttpInvalidate actor that allows listeners to be attached.\n *\n * @see ActorHttpInvalidate\n */\nclass ActorHttpInvalidateListenable extends ActorHttpInvalidate_1.ActorHttpInvalidate {\n constructor(args) {\n super(args);\n this.invalidateListeners = [];\n this.invalidateListeners = [];\n }\n addInvalidateListener(listener) {\n this.invalidateListeners.push(listener);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n for (const listener of this.invalidateListeners) {\n listener(action);\n }\n return {};\n }\n}\nexports.ActorHttpInvalidateListenable = ActorHttpInvalidateListenable;\n//# sourceMappingURL=ActorHttpInvalidateListenable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttpInvalidate\"), exports);\n__exportStar(require(\"./ActorHttpInvalidateListenable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttp = void 0;\nconst core_1 = require(\"@comunica/core\");\nconst readable_web_to_node_stream_1 = require(\"readable-web-to-node-stream\");\nconst isStream = require('is-stream');\nconst toWebReadableStream = require('web-streams-node').toWebReadableStream;\n/**\n * A base actor for listening to HTTP events.\n *\n * Actor types:\n * * Input: IActionHttp: The HTTP request.\n * * Test: IActorHttpTest: An estimate for the response time.\n * * Output: IActorHttpOutput: The HTTP response.\n *\n * @see IActionHttp\n * @see IActorHttpTest\n * @see IActorHttpOutput\n */\nclass ActorHttp extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Converts WhatWG streams to Node streams if required.\n * Returns the input in case the stream already is a Node stream.\n * @param {ReadableStream} body\n * @returns {NodeJS.ReadableStream}\n */\n static toNodeReadable(body) {\n return isStream(body) || body === null ?\n body :\n new readable_web_to_node_stream_1.ReadableWebToNodeStream(body);\n }\n /**\n * Converts Node streams to WhatWG streams.\n * @param {NodeJS.ReadableStream} body\n * @returns {ReadableStream}\n */\n static toWebReadableStream(body) {\n return toWebReadableStream(body);\n }\n /**\n * Convert the given headers object into a raw hash.\n * @param headers A headers object.\n */\n static headersToHash(headers) {\n const hash = {};\n headers.forEach((value, key) => {\n hash[key] = value;\n });\n return hash;\n }\n}\nexports.ActorHttp = ActorHttp;\n//# sourceMappingURL=ActorHttp.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttp\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorInit = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A base actor for listening to init events.\n *\n * Actor types:\n * * Input: IActionInit: Contains process information\n * such as the list of arguments,\n * environment variables and input stream.\n * * Test: \n * * Output: IActorOutputInit: Contains process output streams.\n *\n * @see IActionInit\n */\nclass ActorInit extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorInit = ActorInit;\n//# sourceMappingURL=ActorInit.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorInit\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorOptimizeQueryOperation = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for optimize-query-operation events.\n *\n * Actor types:\n * * Input: IActionOptimizeQueryOperation: An incoming SPARQL operation.\n * * Test: \n * * Output: IActorOptimizeQueryOperationOutput: A (possibly optimized) outgoing SPARQL operation.\n *\n * @see IActionOptimizeQueryOperation\n * @see IActorOptimizeQueryOperationOutput\n */\nclass ActorOptimizeQueryOperation extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorOptimizeQueryOperation = ActorOptimizeQueryOperation;\n//# sourceMappingURL=ActorOptimizeQueryOperation.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorOptimizeQueryOperation\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperation = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst data_factory_1 = require(\"@comunica/data-factory\");\nconst Bindings_1 = require(\"./Bindings\");\n/**\n * A counter that keeps track blank node generated through BNODE() SPARQL\n * expressions.\n *\n * @type {number}\n */\nlet bnodeCounter = 0;\n/**\n * A comunica actor for query-operation events.\n *\n * Actor types:\n * * Input: IActionQueryOperation: A SPARQL Algebra operation.\n * * Test: \n * * Output: IActorQueryOperationOutput: A bindings stream.\n *\n * @see IActionQueryOperation\n * @see IQueryOperationResult\n */\nclass ActorQueryOperation extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Safely cast a query operation output to a bindings output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBindings} A bindings query operation output.\n */\n static getSafeBindings(output) {\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n return output;\n }\n /**\n * Safely cast a query operation output to a quads output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultQuads} A quads query operation output.\n */\n static getSafeQuads(output) {\n ActorQueryOperation.validateQueryOutput(output, 'quads');\n return output;\n }\n /**\n * Safely cast a query operation output to a boolean output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBoolean} A boolean query operation output.\n */\n static getSafeBoolean(output) {\n ActorQueryOperation.validateQueryOutput(output, 'boolean');\n return output;\n }\n /**\n * Safely cast a query operation output to a void output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultVoid} A void query operation output.\n */\n static getSafeVoid(output) {\n ActorQueryOperation.validateQueryOutput(output, 'void');\n return output;\n }\n /**\n * Convert a metadata callback to a lazy callback where the response value is cached.\n * @param {() => Promise} metadata A metadata callback\n * @return {() => Promise<{[p: string]: any}>} The callback where the response will be cached.\n */\n static cachifyMetadata(metadata) {\n let lastReturn;\n // eslint-disable-next-line no-return-assign,@typescript-eslint/no-misused-promises\n return () => (lastReturn || (lastReturn = metadata()));\n }\n /**\n * Throw an error if the output type does not match the expected type.\n * @param {IQueryOperationResult} output A query operation output.\n * @param {string} expectedType The expected output type.\n */\n static validateQueryOutput(output, expectedType) {\n if (output.type !== expectedType) {\n throw new Error(`Invalid query output type: Expected '${expectedType}' but got '${output.type}'`);\n }\n }\n static getBaseExpressionContext(context) {\n const now = context.get(context_entries_1.KeysInitQuery.queryTimestamp);\n const baseIRI = context.get(context_entries_1.KeysInitQuery.baseIRI);\n // Handle two variants of providing extension functions\n if (context.has(context_entries_1.KeysInitQuery.extensionFunctionCreator) && context.has(context_entries_1.KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n let extensionFunctionCreator = context\n .get(context_entries_1.KeysInitQuery.extensionFunctionCreator);\n // Convert dictionary-based variant to callback\n const extensionFunctions = context\n .get(context_entries_1.KeysInitQuery.extensionFunctions);\n if (extensionFunctions) {\n extensionFunctionCreator = functionNamedNode => extensionFunctions[functionNamedNode.value];\n }\n return { now, baseIRI, extensionFunctionCreator };\n }\n /**\n * Create an options object that can be used to construct a sparqlee synchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n static getExpressionContext(context, mediatorQueryOperation) {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input) => new data_factory_1.BlankNodeBindingsScoped(input || `BNODE_${bnodeCounter++}`),\n };\n }\n /**\n * Create an options object that can be used to construct a sparqlee asynchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n static getAsyncExpressionContext(context, mediatorQueryOperation) {\n const expressionContext = {\n ...this.getBaseExpressionContext(context),\n bnode: (input) => Promise.resolve(new data_factory_1.BlankNodeBindingsScoped(input || `BNODE_${bnodeCounter++}`)),\n };\n if (mediatorQueryOperation) {\n expressionContext.exists = ActorQueryOperation.createExistenceResolver(context, mediatorQueryOperation);\n }\n return expressionContext;\n }\n /**\n * Create an existence resolver for usage within an expression context.\n * @param context An action context.\n * @param mediatorQueryOperation A query operation mediator.\n */\n static createExistenceResolver(context, mediatorQueryOperation) {\n return async (expr, bindings) => {\n const operation = (0, Bindings_1.materializeOperation)(expr.input, bindings);\n const outputRaw = await mediatorQueryOperation.mediate({ operation, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n return new Promise((resolve, reject) => {\n output.bindingsStream.on('end', () => {\n resolve(false);\n });\n output.bindingsStream.on('error', reject);\n output.bindingsStream.on('data', () => {\n output.bindingsStream.close();\n resolve(true);\n });\n })\n .then((exists) => expr.not ? !exists : exists);\n };\n }\n /**\n * Throw an error if the context contains the readOnly flag.\n * @param context An action context.\n */\n static throwOnReadOnly(context) {\n if (context.get(context_entries_1.KeysQueryOperation.readOnly)) {\n throw new Error(`Attempted a write operation in read-only mode`);\n }\n }\n}\nexports.ActorQueryOperation = ActorQueryOperation;\n//# sourceMappingURL=ActorQueryOperation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationTyped = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst ActorQueryOperation_1 = require(\"./ActorQueryOperation\");\n/**\n * A base implementation for query operation actors for a specific operation type.\n */\nclass ActorQueryOperationTyped extends ActorQueryOperation_1.ActorQueryOperation {\n constructor(args, operationName) {\n super({ ...args, operationName });\n if (!this.operationName) {\n throw new Error('A valid \"operationName\" argument must be provided.');\n }\n }\n async test(action) {\n if (!action.operation) {\n throw new Error('Missing field \\'operation\\' in a query operation action.');\n }\n if (action.operation.type !== this.operationName) {\n throw new Error(`Actor ${this.name} only supports ${this.operationName} operations, but got ${action.operation.type}`);\n }\n const operation = action.operation;\n return this.testOperation(operation, action.context);\n }\n async run(action) {\n // Log to physical plan\n const physicalQueryPlanLogger = action.context\n .get(context_entries_1.KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(action.operation.type, undefined, action.operation, action.context.get(context_entries_1.KeysInitQuery.physicalQueryPlanNode), this.name, {});\n action.context = action.context.set(context_entries_1.KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n const operation = action.operation;\n const subContext = action.context.set(context_entries_1.KeysQueryOperation.operation, operation);\n const output = await this.runOperation(operation, subContext);\n if ('metadata' in output) {\n output.metadata = ActorQueryOperation_1.ActorQueryOperation\n .cachifyMetadata(output.metadata);\n }\n return output;\n }\n}\nexports.ActorQueryOperationTyped = ActorQueryOperationTyped;\n//# sourceMappingURL=ActorQueryOperationTyped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationTypedMediated = void 0;\nconst ActorQueryOperationTyped_1 = require(\"./ActorQueryOperationTyped\");\n/**\n * A base implementation for query operation actors for a specific operation type that have a query operation mediator.\n */\nclass ActorQueryOperationTypedMediated extends ActorQueryOperationTyped_1.ActorQueryOperationTyped {\n constructor(args, operationName) {\n super(args, operationName);\n }\n}\nexports.ActorQueryOperationTypedMediated = ActorQueryOperationTypedMediated;\n//# sourceMappingURL=ActorQueryOperationTypedMediated.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.materializeOperation = exports.materializeTerm = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * Materialize a term with the given binding.\n *\n * If the given term is a variable,\n * and that variable exist in the given bindings object,\n * the value of that binding is returned.\n * In all other cases, the term itself is returned.\n *\n * @param {RDF.Term} term A term.\n * @param {Bindings} bindings A bindings object.\n * @return {RDF.Term} The materialized term.\n */\nfunction materializeTerm(term, bindings) {\n if (term.termType === 'Variable') {\n const value = bindings.get(term);\n if (value) {\n return value;\n }\n }\n return term;\n}\nexports.materializeTerm = materializeTerm;\n/**\n * Materialize the given operation (recursively) with the given bindings.\n * Essentially, all variables in the given operation will be replaced\n * by the terms bound to the variables in the given bindings.\n * @param {Operation} operation SPARQL algebra operation.\n * @param {Bindings} bindings A bindings object.\n * @param options Options for materializations.\n * @return Algebra.Operation A new operation materialized with the given bindings.\n */\nfunction materializeOperation(operation, bindings, options = {}) {\n options = {\n strictTargetVariables: 'strictTargetVariables' in options ? options.strictTargetVariables : false,\n bindFilter: 'bindFilter' in options ? options.bindFilter : true,\n };\n return sparqlalgebrajs_1.Util.mapOperation(operation, {\n path(op, factory) {\n // Materialize variables in a path expression.\n // The predicate expression will be recursed.\n return {\n recurse: false,\n result: factory.createPath(materializeTerm(op.subject, bindings), op.predicate, materializeTerm(op.object, bindings), materializeTerm(op.graph, bindings)),\n };\n },\n pattern(op, factory) {\n // Materialize variables in the quad pattern.\n return {\n recurse: false,\n result: factory.createPattern(materializeTerm(op.subject, bindings), materializeTerm(op.predicate, bindings), materializeTerm(op.object, bindings), materializeTerm(op.graph, bindings)),\n };\n },\n extend(op) {\n // Materialize an extend operation.\n // If strictTargetVariables is true, we throw if the extension target variable is attempted to be bound.\n // Otherwise, we remove the extend operation.\n if (bindings.has(op.variable)) {\n if (options.strictTargetVariables) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(op.variable)} in a BIND operator.`);\n }\n else {\n return {\n recurse: true,\n result: materializeOperation(op.input, bindings, options),\n };\n }\n }\n return {\n recurse: true,\n result: op,\n };\n },\n group(op, factory) {\n // Materialize a group operation.\n // If strictTargetVariables is true, we throw if the group target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a GROUP BY operator.`);\n }\n }\n return {\n recurse: true,\n result: op,\n };\n }\n const variables = op.variables.filter(variable => !bindings.has(variable));\n return {\n recurse: true,\n result: factory.createGroup(op.input, variables, op.aggregates),\n };\n },\n project(op, factory) {\n // Materialize a project operation.\n // If strictTargetVariables is true, we throw if the project target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a SELECT operator.`);\n }\n }\n return {\n recurse: true,\n result: op,\n };\n }\n const variables = op.variables.filter(variable => !bindings.has(variable));\n // Only include projected variables in the sub-bindings that will be passed down recursively.\n // If we don't do this, we may be binding variables that may have the same label, but are not considered equal.\n const subBindings = BF.bindings(op.variables.map(variable => {\n const binding = bindings.get(variable);\n if (binding) {\n return [variable, binding];\n }\n // eslint-disable-next-line no-useless-return\n return;\n }).filter(entry => Boolean(entry)));\n return {\n recurse: false,\n result: factory.createProject(materializeOperation(op.input, subBindings, options), variables),\n };\n },\n values(op, factory) {\n // Materialize a values operation.\n // If strictTargetVariables is true, we throw if the values target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables and their bindings.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a VALUES operator.`);\n }\n }\n }\n else {\n const variables = op.variables.filter(variable => !bindings.has(variable));\n const valueBindings = op.bindings.map(binding => {\n const newBinding = { ...binding };\n let valid = true;\n bindings.forEach((value, key) => {\n const keyString = (0, rdf_string_1.termToString)(key);\n if (keyString in newBinding) {\n if (!value.equals(newBinding[keyString])) {\n // If the value of the binding is not equal, remove this binding completely from the VALUES clause\n valid = false;\n }\n delete newBinding[keyString];\n }\n });\n return valid ? newBinding : undefined;\n }).filter(Boolean);\n return {\n recurse: true,\n result: factory.createValues(variables, valueBindings),\n };\n }\n return {\n recurse: false,\n result: op,\n };\n },\n expression(op, factory) {\n if (!options.bindFilter) {\n return {\n recurse: false,\n result: op,\n };\n }\n if (op.expressionType === 'term') {\n // Materialize a term expression\n return {\n recurse: false,\n result: factory.createTermExpression(materializeTerm(op.term, bindings)),\n };\n }\n if (op.expressionType === 'aggregate' &&\n 'variable' in op &&\n bindings.has(op.variable)) {\n // Materialize a bound aggregate operation.\n // If strictTargetVariables is true, we throw if the expression target variable is attempted to be bound.\n // Otherwise, we ignore this operation.\n if (options.strictTargetVariables) {\n throw new Error(`Tried to bind ${(0, rdf_string_1.termToString)(op.variable)} in a ${op.aggregator} aggregate.`);\n }\n else {\n return {\n recurse: true,\n result: op,\n };\n }\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n}\nexports.materializeOperation = materializeOperation;\n//# sourceMappingURL=Bindings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BusQueryOperation = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * Indexed bus for query operations.\n */\nclass BusQueryOperation extends core_1.BusIndexed {\n constructor(args) {\n super({\n ...args,\n actorIdentifierFields: ['operationName'],\n actionIdentifierFields: ['operation', 'type'],\n });\n }\n}\nexports.BusQueryOperation = BusQueryOperation;\n//# sourceMappingURL=BusQueryOperation.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperation\"), exports);\n__exportStar(require(\"./ActorQueryOperationTyped\"), exports);\n__exportStar(require(\"./ActorQueryOperationTypedMediated\"), exports);\n__exportStar(require(\"./Bindings\"), exports);\n__exportStar(require(\"./BusQueryOperation\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryParse = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for query-parse events.\n *\n * Actor types:\n * * Input: IActionSparqlParse: A SPARQL query string.\n * * Test: \n * * Output: IActorSparqlParseOutput: A parsed query in SPARQL query algebra.\n *\n * @see IActionQueryParse\n * @see IActorQueryParseOutput\n */\nclass ActorQueryParse extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorQueryParse = ActorQueryParse;\n//# sourceMappingURL=ActorQueryParse.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryParse\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerialize = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A comunica actor for query-result-serialize events.\n *\n * Actor types:\n * * Input: IActionSparqlSerialize: SPARQL bindings or a quad stream.\n * * Test: \n * * Output: IActorQueryResultSerializeOutput: A text stream.\n *\n * @see IActionSparqlSerialize\n * @see IActorQueryResultSerializeOutput\n */\nclass ActorQueryResultSerialize extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorQueryResultSerialize = ActorQueryResultSerialize;\n//# sourceMappingURL=ActorQueryResultSerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to SPARQL serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionSparqlSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorQueryResultSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nclass ActorQueryResultSerializeFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action, context) {\n return true;\n }\n}\nexports.ActorQueryResultSerializeFixedMediaTypes = ActorQueryResultSerializeFixedMediaTypes;\n//# sourceMappingURL=ActorQueryResultSerializeFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerialize\"), exports);\n__exportStar(require(\"./ActorQueryResultSerializeFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinEntriesSort = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-join-entries-sort events.\n *\n * Actor types:\n * * Input: IActionRdfJoinEntriesSort: Join entries.\n * * Test: IActorTest: Test result.\n * * Output: IActorRdfJoinEntriesSortOutput: The sorted join entries.\n *\n * @see IActionRdfJoinEntriesSort\n * @see IActorTest\n * @see IActorRdfJoinEntriesSortOutput\n */\nclass ActorRdfJoinEntriesSort extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfJoinEntriesSort = ActorRdfJoinEntriesSort;\n//# sourceMappingURL=ActorRdfJoinEntriesSort.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinEntriesSort\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinSelectivity = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-join-selectivity events.\n *\n * Actor types:\n * * Input: IActionRdfJoinSelectivity: Join entries.\n * * Test: IMediatorTypeAccuracy: The accuracy of the selectivity calculator.\n * * Output: IActorRdfJoinSelectivityOutput: The calculated join selectivity.\n *\n * @see IActionRdfJoinSelectivity\n * @see IActorRdfJoinSelectivityTest\n * @see IActorRdfJoinSelectivityOutput\n */\nclass ActorRdfJoinSelectivity extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfJoinSelectivity = ActorRdfJoinSelectivity;\n//# sourceMappingURL=ActorRdfJoinSelectivity.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinSelectivity\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoin = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A comunica actor for joining 2 binding streams.\n *\n * Actor types:\n * * Input: IActionRdfJoin: The streams that need to be joined.\n * * Test: IMediatorTypeJoinCoefficients: Join coefficients.\n * * Output: IActorRdfJoinOutput: The resulting joined stream.\n *\n * @see IActionRdfJoin\n * @see IActorQueryOperationOutput\n */\nclass ActorRdfJoin extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param options - Actor-specific join options.\n */\n constructor(args, options) {\n super(args);\n /**\n * If this actor will be logged in the debugger and physical query plan logger\n */\n this.includeInLogs = true;\n this.logicalType = options.logicalType;\n this.physicalName = options.physicalName;\n this.limitEntries = options.limitEntries ?? Number.POSITIVE_INFINITY;\n this.limitEntriesMin = options.limitEntriesMin ?? false;\n this.canHandleUndefs = options.canHandleUndefs ?? false;\n }\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string}\n */\n static hash(bindings, variables) {\n return variables\n .filter(variable => bindings.has(variable))\n .map(variable => (0, rdf_string_1.termToString)(bindings.get(variable)))\n .join('');\n }\n /**\n * Returns an array containing all the variable names that occur in all bindings streams.\n * @param {MetadataBindings[]} metadatas An array of optional metadata objects for the entries.\n * @returns {string[]}\n */\n static overlappingVariables(metadatas) {\n const variables = metadatas.map(metadata => metadata.variables);\n let baseArray = variables[0];\n for (const array of variables.slice(1)) {\n baseArray = baseArray.filter(el => array.some(value => value.value === el.value));\n }\n return baseArray;\n }\n /**\n * Returns the variables that will occur in the joined bindings.\n * @param {MetadataBindings[]} metadatas An array of metadata objects for the entries.\n * @returns {string[]}\n */\n static joinVariables(metadatas) {\n return [...new Set(metadatas.flatMap(metadata => metadata.variables.map(variable => variable.value)))]\n .map(variable => DF.variable(variable));\n }\n /**\n * Returns the result of joining bindings, or `null` if no join is possible.\n * @param {Bindings[]} bindings\n * @returns {Bindings}\n */\n static joinBindings(...bindings) {\n if (bindings.length === 0) {\n return null;\n }\n if (bindings.length === 1) {\n return bindings[0];\n }\n let acc = bindings[0];\n for (const binding of bindings.slice(1)) {\n const merged = acc.merge(binding);\n if (!merged) {\n return null;\n }\n acc = merged;\n }\n return acc;\n }\n /**\n * Get the estimated number of items from the given metadata.\n * @param {Record} metadata A metadata object.\n * @return {number} The estimated number of items, or `Infinity` if cardinality is falsy.\n */\n static getCardinality(metadata) {\n return metadata.cardinality;\n }\n /**\n * Obtain the metadata from all given join entries.\n * @param entries Join entries.\n */\n static async getMetadatas(entries) {\n return await Promise.all(entries.map(entry => entry.output.metadata()));\n }\n /**\n * Obtain the join entries witt metadata from all given join entries.\n * @param entries Join entries.\n */\n static async getEntriesWithMetadatas(entries) {\n const metadatas = await ActorRdfJoin.getMetadatas(entries);\n return entries.map((entry, i) => ({ ...entry, metadata: metadatas[i] }));\n }\n /**\n * Calculate the time to initiate a request for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n static getRequestInitialTimes(metadatas) {\n return metadatas.map(metadata => metadata.pageSize ? 0 : metadata.requestTime || 0);\n }\n /**\n * Calculate the time to receive a single item for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n static getRequestItemTimes(metadatas) {\n return metadatas\n .map(metadata => !metadata.pageSize ? 0 : (metadata.requestTime || 0) / metadata.pageSize);\n }\n /**\n * Helper function to create a new metadata object for the join result.\n * For required metadata entries that are not provided, sane defaults are calculated.\n * @param entries Join entries.\n * @param metadatas Metadata of the join entries.\n * @param context The action context.\n * @param partialMetadata Partial metadata entries.\n */\n async constructResultMetadata(entries, metadatas, context, partialMetadata = {}) {\n let cardinalityJoined;\n if (partialMetadata.cardinality) {\n cardinalityJoined = partialMetadata.cardinality;\n }\n else {\n cardinalityJoined = metadatas\n .reduce((acc, metadata) => {\n const cardinalityThis = ActorRdfJoin.getCardinality(metadata);\n return {\n type: cardinalityThis.type === 'estimate' ? 'estimate' : acc.type,\n value: acc.value * cardinalityThis.value,\n };\n }, { type: 'exact', value: 1 });\n cardinalityJoined.value *= (await this.mediatorJoinSelectivity.mediate({ entries, context })).selectivity;\n }\n return {\n ...partialMetadata,\n cardinality: {\n type: cardinalityJoined.type,\n value: cardinalityJoined.value,\n },\n canContainUndefs: partialMetadata.canContainUndefs ?? metadatas.some(metadata => metadata.canContainUndefs),\n variables: ActorRdfJoin.joinVariables(metadatas),\n };\n }\n /**\n * Default test function for join actors.\n * Checks whether all iterators have metadata.\n * If yes: call the abstract getIterations method, if not: return Infinity.\n * @param {IActionRdfJoin} action The input action containing the relevant iterators\n * @returns {Promise} The join coefficients.\n */\n async test(action) {\n // Validate logical join type\n if (action.type !== this.logicalType) {\n throw new Error(`${this.name} can only handle logical joins of type '${this.logicalType}', while '${action.type}' was given.`);\n }\n // Don't allow joining of one or zero streams\n if (action.entries.length <= 1) {\n throw new Error(`${this.name} requires at least two join entries.`);\n }\n // Check if this actor can handle the given number of streams\n if (this.limitEntriesMin ? action.entries.length < this.limitEntries : action.entries.length > this.limitEntries) {\n throw new Error(`${this.name} requires ${this.limitEntries} join entries at ${this.limitEntriesMin ? 'least' : 'most'}. The input contained ${action.entries.length}.`);\n }\n // Check if all streams are bindings streams\n for (const entry of action.entries) {\n if (entry.output.type !== 'bindings') {\n throw new Error(`Invalid type of a join entry: Expected 'bindings' but got '${entry.output.type}'`);\n }\n }\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n // Check if this actor can handle undefs\n if (!this.canHandleUndefs) {\n for (const metadata of metadatas) {\n if (metadata.canContainUndefs) {\n throw new Error(`Actor ${this.name} can not join streams containing undefs`);\n }\n }\n }\n return await this.getJoinCoefficients(action, metadatas);\n }\n /**\n * Returns default input for 0 or 1 entries. Calls the getOutput function otherwise\n * @param {IActionRdfJoin} action\n * @returns {Promise}\n */\n async run(action) {\n // Prepare logging to physical plan\n // This must be called before getOutput, because we need to override the plan node in the context\n let parentPhysicalQueryPlanNode;\n if (action.context.has(context_entries_1.KeysInitQuery.physicalQueryPlanLogger)) {\n parentPhysicalQueryPlanNode = action.context.get(context_entries_1.KeysInitQuery.physicalQueryPlanNode);\n action.context = action.context.set(context_entries_1.KeysInitQuery.physicalQueryPlanNode, action);\n }\n const { result, physicalPlanMetadata } = await this.getOutput(action);\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n // Log to physical plan\n const physicalQueryPlanLogger = action.context.get(context_entries_1.KeysInitQuery\n .physicalQueryPlanLogger);\n if (this.includeInLogs && physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(`join-${this.logicalType}`, this.physicalName, action, parentPhysicalQueryPlanNode, this.name, {\n ...physicalPlanMetadata,\n cardinalities: metadatas.map(ActorRdfJoin.getCardinality),\n joinCoefficients: await this.getJoinCoefficients(action, metadatas),\n });\n }\n // Cache metadata\n result.metadata = bus_query_operation_1.ActorQueryOperation.cachifyMetadata(result.metadata);\n return result;\n }\n}\nexports.ActorRdfJoin = ActorRdfJoin;\n//# sourceMappingURL=ActorRdfJoin.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoin\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtract = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-metadata-extract events.\n *\n * Actor types:\n * * Input: IActionRdfMetadataExtract: A metadata quad stream\n * * Test: \n * * Output: IActorRdfMetadataExtractOutput: A metadata hash.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorRdfMetadataExtract extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfMetadataExtract = ActorRdfMetadataExtract;\n//# sourceMappingURL=ActorRdfMetadataExtract.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtract\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadata = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-metadata events.\n *\n * Actor types:\n * * Input: IActionRdfMetadata: An RDF quad stream.\n * * Test: \n * * Output: IActorRdfMetadataOutput: An RDF quad data stream and RDF quad metadata stream.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorRdfMetadata extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfMetadata = ActorRdfMetadata;\n//# sourceMappingURL=ActorRdfMetadata.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadata\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseHtml = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-parse-html events.\n *\n * Actor types:\n * * Input: IActionRdfParseHtml: Callbacks for parsing results.\n * * Test: \n * * Output: IActorRdfParseHtmlOutput: An HTML event listeners.\n *\n * @see IActionRdfParseHtml\n * @see IActorRdfParseHtmlOutput\n */\nclass ActorRdfParseHtml extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfParseHtml = ActorRdfParseHtml;\n//# sourceMappingURL=ActorRdfParseHtml.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseHtml\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParse = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF parse events.\n *\n * Actor types:\n * * Input: IActionRdfParseOrMediaType: A parse input or a media type input.\n * * Test: \n * * Output: IActorOutputRdfParseOrMediaType: The parsed quads.\n *\n * @see IActionInit\n */\nclass ActorRdfParse extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfParse = ActorRdfParse;\n//# sourceMappingURL=ActorRdfParse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF parse events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRdfParseOrMediaType: A parse input or a media type input.\n * * Test: \n * * Output: IActorOutputRdfParseOrMediaType: The parsed quads.\n *\n * @see IActionInit\n */\nclass ActorRdfParseFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action) {\n return true;\n }\n}\nexports.ActorRdfParseFixedMediaTypes = ActorRdfParseFixedMediaTypes;\n//# sourceMappingURL=ActorRdfParseFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParse\"), exports);\n__exportStar(require(\"./ActorRdfParseFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksQueue = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia-links-queue events.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermediaLinksQueue: Creates a new {@link ILinkQueue} for the given seed URL.\n * * Test: \n * * Output: IActorRdfResolveHypermediaLinksQueueOutput: The created {@link ILinkQueue}.\n *\n * @see IActionRdfResolveHypermediaLinksQueue\n * @see IActorRdfResolveHypermediaLinksQueueOutput\n */\nclass ActorRdfResolveHypermediaLinksQueue extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveHypermediaLinksQueue = ActorRdfResolveHypermediaLinksQueue;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksQueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ILinkQueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkQueueWrapper = void 0;\n/**\n * A link queue that wraps a given link queue.\n */\nclass LinkQueueWrapper {\n constructor(linkQueue) {\n this.linkQueue = linkQueue;\n }\n push(link, parent) {\n return this.linkQueue.push(link, parent);\n }\n getSize() {\n return this.linkQueue.getSize();\n }\n isEmpty() {\n return this.linkQueue.isEmpty();\n }\n pop() {\n return this.linkQueue.pop();\n }\n peek() {\n return this.linkQueue.peek();\n }\n}\nexports.LinkQueueWrapper = LinkQueueWrapper;\n//# sourceMappingURL=LinkQueueWrapper.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksQueue\"), exports);\n__exportStar(require(\"./ILinkQueue\"), exports);\n__exportStar(require(\"./LinkQueueWrapper\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinks = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia-links events.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermediaLinks: The metadata from which the links should be extracted.\n * * Test: \n * * Output: IActorRdfResolveHypermediaLinksOutput: The URLs that were detected.\n *\n * @see IActionRdfResolveHypermediaLinks\n * @see IActorRdfResolveHypermediaLinksOutput\n */\nclass ActorRdfResolveHypermediaLinks extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveHypermediaLinks = ActorRdfResolveHypermediaLinks;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinks.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinks\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermedia = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia bus.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermedia: The metadata in the document and a query operation.\n * * Test: \n * * Output: IActorRdfResolveHypermediaOutput: An RDF source.\n *\n * @see IActionRdfResolveQuadPattern\n * @see IActorRdfResolveQuadPatternOutput\n */\nclass ActorRdfResolveHypermedia extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param sourceType The source type.\n */\n constructor(args, sourceType) {\n super(args);\n this.sourceType = sourceType;\n }\n async test(action) {\n if (action.forceSourceType && this.sourceType !== action.forceSourceType) {\n throw new Error(`Actor ${this.name} is not able to handle source type ${action.forceSourceType}.`);\n }\n return this.testMetadata(action);\n }\n}\nexports.ActorRdfResolveHypermedia = ActorRdfResolveHypermedia;\n//# sourceMappingURL=ActorRdfResolveHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPattern = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-quad-pattern events.\n *\n * Actor types:\n * * Input: IActionRdfResolveQuadPattern: A quad pattern and an optional context.\n * * Test: \n * * Output: IActorRdfResolveQuadPatternOutput: The resulting quad stream and optional metadata.\n *\n * @see IActionRdfResolveQuadPattern\n * @see IActorRdfResolveQuadPatternOutput\n */\nclass ActorRdfResolveQuadPattern extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveQuadPattern = ActorRdfResolveQuadPattern;\n//# sourceMappingURL=ActorRdfResolveQuadPattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternSource = void 0;\nconst ActorRdfResolveQuadPattern_1 = require(\"./ActorRdfResolveQuadPattern\");\n/**\n * A base implementation for rdf-resolve-quad-pattern events\n * that wraps around an {@link IQuadSource}.\n *\n * @see IQuadSource\n */\nclass ActorRdfResolveQuadPatternSource extends ActorRdfResolveQuadPattern_1.ActorRdfResolveQuadPattern {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const source = await this.getSource(action.context, action.pattern);\n return await this.getOutput(source, action.pattern, action.context);\n }\n /**\n * Get the output of the given action on a source.\n * @param {IQuadSource} source A quad source, possibly lazy.\n * @param {Algebra.Operation} operation The operation to apply.\n * @param ActionContext context Optional context data.\n * @return {Promise} A promise that resolves to a hash containing\n * a data RDFJS stream.\n */\n async getOutput(source, pattern, context) {\n // Create data stream\n const data = source.match(pattern.subject, pattern.predicate, pattern.object, pattern.graph);\n return { data };\n }\n}\nexports.ActorRdfResolveQuadPatternSource = ActorRdfResolveQuadPatternSource;\n//# sourceMappingURL=ActorRdfResolveQuadPatternSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPattern\"), exports);\n__exportStar(require(\"./ActorRdfResolveQuadPatternSource\"), exports);\n__exportStar(require(\"./utils\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasContextSingleSourceOfType = exports.hasContextSingleSource = exports.getContextSourceUrl = exports.getContextSourceFirst = exports.getContextSource = exports.getContextSources = exports.getDataSourceContext = exports.getDataSourceValue = exports.getDataSourceType = exports.isDataSourceRawType = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * Check if the given data source is a string or RDF store.\n * @param dataSource A data source.\n */\nfunction isDataSourceRawType(dataSource) {\n return typeof dataSource === 'string' || 'match' in dataSource;\n}\nexports.isDataSourceRawType = isDataSourceRawType;\n/**\n * Get the data source type.\n * @param dataSource A data source.\n */\nfunction getDataSourceType(dataSource) {\n if (typeof dataSource === 'string') {\n return '';\n }\n return 'match' in dataSource ? 'rdfjsSource' : dataSource.type;\n}\nexports.getDataSourceType = getDataSourceType;\n/**\n * Get the data source value.\n * @param dataSource A data source.\n */\nfunction getDataSourceValue(dataSource) {\n return isDataSourceRawType(dataSource) ? dataSource : dataSource.value;\n}\nexports.getDataSourceValue = getDataSourceValue;\n/**\n * Get the data source from the given context.\n * @param {ActionContext} context An optional context.\n * @param {IDataSource} dataSource The source or undefined.\n */\nfunction getDataSourceContext(dataSource, context) {\n if (typeof dataSource === 'string' || 'match' in dataSource || !dataSource.context) {\n return context;\n }\n return context.merge(dataSource.context);\n}\nexports.getDataSourceContext = getDataSourceContext;\n/**\n * Get the sources from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataSource[]} The array of sources or undefined.\n */\nfunction getContextSources(context) {\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n}\nexports.getContextSources = getContextSources;\n/**\n * Get the source from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataSource} The source or undefined.\n */\nfunction getContextSource(context) {\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.source);\n}\nexports.getContextSource = getContextSource;\n/**\n * Get the single source if the context contains just a single source.\n * This will check both the source and sources context entries.\n * @param {IActionContext} context A context, can be null.\n * @return {IDataSource} The single datasource or undefined.\n */\nfunction getContextSourceFirst(context) {\n if (context.has(context_entries_1.KeysRdfResolveQuadPattern.source)) {\n // If the single source is set\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.source);\n }\n // If multiple sources are set\n const datasources = context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n if (datasources?.length === 1) {\n return datasources[0];\n }\n}\nexports.getContextSourceFirst = getContextSourceFirst;\n/**\n * Get the source's raw URL value from the given context.\n * @param {IDataSource} source A source.\n * @return {string} The URL or null.\n */\nfunction getContextSourceUrl(source) {\n if (source) {\n let fileUrl = getDataSourceValue(source);\n if (typeof fileUrl === 'string') {\n // Remove hashes from source\n const hashPosition = fileUrl.indexOf('#');\n if (hashPosition >= 0) {\n fileUrl = fileUrl.slice(0, hashPosition);\n }\n return fileUrl;\n }\n }\n}\nexports.getContextSourceUrl = getContextSourceUrl;\n/**\n * Check if the given context has a single source.\n * @param {ActionContext} context An optional context.\n * @return {boolean} If the given context has a single source of the given type.\n */\nfunction hasContextSingleSource(context) {\n const source = getContextSource(context);\n return Boolean(source && (isDataSourceRawType(source) || source.value));\n}\nexports.hasContextSingleSource = hasContextSingleSource;\n/**\n * Check if the given context has a single source of the given type.\n * @param {string} requiredType The required source type name.\n * @param {ActionContext} context An optional context.\n * @return {boolean} If the given context has a single source of the given type.\n */\nfunction hasContextSingleSourceOfType(requiredType, context) {\n const source = getContextSource(context);\n return Boolean(source && getDataSourceType(source) === requiredType && getDataSourceValue(source));\n}\nexports.hasContextSingleSourceOfType = hasContextSingleSourceOfType;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerialize = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A comunica actor for RDF parse events.\n *\n * Actor types:\n * * Input: IActionRdfSerialize: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutput: The serialized quads.\n *\n * @see IActionRdfSerialize\n * @see IActorRdfSerializeOutput\n */\nclass ActorRdfSerialize extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfSerialize = ActorRdfSerialize;\n//# sourceMappingURL=ActorRdfSerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRdfSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nclass ActorRdfSerializeFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action) {\n return true;\n }\n}\nexports.ActorRdfSerializeFixedMediaTypes = ActorRdfSerializeFixedMediaTypes;\n//# sourceMappingURL=ActorRdfSerializeFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerialize\"), exports);\n__exportStar(require(\"./ActorRdfSerializeFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermedia = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-update-hypermedia events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateHypermedia: The metadata in the document.\n * * Test: \n * * Output: IActorRdfUpdateHypermediaOutput: An RDF destination.\n *\n * @see IActionRdfUpdateHypermedia\n * @see IActorRdfUpdateHypermediaOutput\n */\nclass ActorRdfUpdateHypermedia extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param destinationType - The destination type.\n */\n constructor(args, destinationType) {\n super(args);\n this.destinationType = destinationType;\n }\n async test(action) {\n if (action.forceDestinationType && this.destinationType !== action.forceDestinationType) {\n throw new Error(`Actor ${this.name} is not able to handle destination type ${action.forceDestinationType}.`);\n }\n return this.testMetadata(action);\n }\n}\nexports.ActorRdfUpdateHypermedia = ActorRdfUpdateHypermedia;\n//# sourceMappingURL=ActorRdfUpdateHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuads = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-update-quads events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateQuads: Quad insertion and deletion streams.\n * * Test: \n * * Output: IActorRdfUpdateQuadsOutput: A promise resolving when the update operation is done.\n *\n * @see IActionRdfUpdateQuads\n * @see IActorRdfUpdateQuadsOutput\n */\nclass ActorRdfUpdateQuads extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfUpdateQuads = ActorRdfUpdateQuads;\n//# sourceMappingURL=ActorRdfUpdateQuads.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsDestination = void 0;\nconst actor_rdf_resolve_quad_pattern_federated_1 = require(\"@comunica/actor-rdf-resolve-quad-pattern-federated\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst ActorRdfUpdateQuads_1 = require(\"./ActorRdfUpdateQuads\");\nfunction deskolemizeStream(stream, id) {\n return stream?.map(quad => actor_rdf_resolve_quad_pattern_federated_1.FederatedQuadSource.deskolemizeQuad(quad, id));\n}\nfunction deskolemize(action) {\n const destination = action.context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n const id = action.context.get(context_entries_1.KeysRdfResolveQuadPattern.sourceIds)?.get(destination);\n if (!id) {\n return action;\n }\n return {\n ...action,\n quadStreamInsert: deskolemizeStream(action.quadStreamInsert, id),\n quadStreamDelete: deskolemizeStream(action.quadStreamDelete, id),\n };\n}\n/**\n * A base implementation for rdf-update-quads events\n * that wraps around an {@link IQuadDestination}.\n *\n * @see IQuadDestination\n */\nclass ActorRdfUpdateQuadsDestination extends ActorRdfUpdateQuads_1.ActorRdfUpdateQuads {\n async test(action) {\n return true;\n }\n async run(action) {\n const destination = await this.getDestination(action.context);\n return await this.getOutput(destination, deskolemize(action), action.context);\n }\n /**\n * Get the output of the given action on a destination.\n * @param {IQuadDestination} destination A quad destination, possibly lazy.\n * @param {IActionRdfUpdateQuads} action The action.\n * @param {ActionContext} context Optional context data.\n */\n async getOutput(destination, action, context) {\n const execute = () => Promise.all([\n action.quadStreamInsert ? destination.insert(action.quadStreamInsert) : Promise.resolve(),\n action.quadStreamDelete ? destination.delete(action.quadStreamDelete) : Promise.resolve(),\n action.deleteGraphs ?\n destination.deleteGraphs(action.deleteGraphs.graphs, action.deleteGraphs.requireExistence, action.deleteGraphs.dropGraphs) :\n Promise.resolve(),\n action.createGraphs ?\n destination.createGraphs(action.createGraphs.graphs, action.createGraphs.requireNonExistence) :\n Promise.resolve(),\n ]).then(() => {\n // Return void\n });\n return { execute };\n }\n}\nexports.ActorRdfUpdateQuadsDestination = ActorRdfUpdateQuadsDestination;\n//# sourceMappingURL=ActorRdfUpdateQuadsDestination.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateHttpResponse = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst stringifyStream = require(\"stream-to-string\");\n/**\n * Check if the http response is valid, and throw an error if not.\n * @param url The original URL that was to be updated.\n * @param httpResponse The update response.\n */\nasync function validateHttpResponse(url, httpResponse) {\n // Check if update was successful\n if (httpResponse.status >= 400) {\n // Consume the body, to avoid process to hang\n let bodyString = 'empty response';\n if (httpResponse.body) {\n const responseStream = bus_http_1.ActorHttp.toNodeReadable(httpResponse.body);\n bodyString = await stringifyStream(responseStream);\n }\n throw new Error(`Could not update ${url} (HTTP status ${httpResponse.status}):\\n${bodyString}`);\n }\n // Close response body, as we don't need it\n await httpResponse.body?.cancel();\n}\nexports.validateHttpResponse = validateHttpResponse;\n//# sourceMappingURL=IQuadDestination.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuads\"), exports);\n__exportStar(require(\"./ActorRdfUpdateQuadsDestination\"), exports);\n__exportStar(require(\"./IQuadDestination\"), exports);\n__exportStar(require(\"./utils\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getContextDestinationUrl = exports.getContextDestinationFirst = exports.getContextDestination = exports.getDataDestinationContext = exports.getDataDestinationValue = exports.getDataDestinationType = exports.isDataDestinationRawType = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * Check if the given data destination is a string or RDF store.\n * @param dataDestination A data destination.\n */\nfunction isDataDestinationRawType(dataDestination) {\n return typeof dataDestination === 'string' || 'remove' in dataDestination;\n}\nexports.isDataDestinationRawType = isDataDestinationRawType;\n/**\n * Get the data destination type.\n * @param dataDestination A data destination.\n */\nfunction getDataDestinationType(dataDestination) {\n if (typeof dataDestination === 'string') {\n return '';\n }\n return 'remove' in dataDestination ? 'rdfjsStore' : dataDestination.type;\n}\nexports.getDataDestinationType = getDataDestinationType;\n/**\n * Get the data destination value.\n * @param dataDestination A data destination.\n */\nfunction getDataDestinationValue(dataDestination) {\n return isDataDestinationRawType(dataDestination) ? dataDestination : dataDestination.value;\n}\nexports.getDataDestinationValue = getDataDestinationValue;\n/**\n * Get the context of the given destination, merged with the given context.\n * @param dataDestination A data destination.\n * @param context A context to merge with.\n */\nfunction getDataDestinationContext(dataDestination, context) {\n if (typeof dataDestination === 'string' || 'remove' in dataDestination || !dataDestination.context) {\n return context;\n }\n return context.merge(dataDestination.context);\n}\nexports.getDataDestinationContext = getDataDestinationContext;\n/**\n * Get the source destination from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataDestination} The destination or undefined.\n */\nfunction getContextDestination(context) {\n return context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n}\nexports.getContextDestination = getContextDestination;\n/**\n * Get the single destination if the context contains just a single destination.\n * @param {ActionContext} context A context, can be null.\n * @return {IDataDestination} The single datadestination or undefined.\n */\nfunction getContextDestinationFirst(context) {\n if (context.has(context_entries_1.KeysRdfUpdateQuads.destination)) {\n // If the single destination is set\n return context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n }\n}\nexports.getContextDestinationFirst = getContextDestinationFirst;\n/**\n * Get the destination's raw URL value from the given context.\n * @param {IDataDestination} destination A destination.\n * @return {string} The URL or undefined.\n */\nfunction getContextDestinationUrl(destination) {\n if (destination) {\n let fileUrl = getDataDestinationValue(destination);\n if (typeof fileUrl === 'string') {\n // Remove hashes from source\n const hashPosition = fileUrl.indexOf('#');\n if (hashPosition >= 0) {\n fileUrl = fileUrl.slice(0, hashPosition);\n }\n return fileUrl;\n }\n }\n}\nexports.getContextDestinationUrl = getContextDestinationUrl;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeysRdfUpdateQuads = exports.KeysRdfResolveQuadPattern = exports.KeysRdfParseHtmlScript = exports.KeysRdfParseJsonLd = exports.KeysQueryOperation = exports.KeysInitQuery = exports.KeysHttpProxy = exports.KeysHttpMemento = exports.KeysHttp = exports.KeysCore = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * When adding entries to this file, also add a shortcut for them in the contextKeyShortcuts TSDoc comment in\n * ActorIniQueryBase in @comunica/actor-init-query if it makes sense to use this entry externally.\n * Also, add this shortcut to IQueryContextCommon in @comunica/types.\n */\nexports.KeysCore = {\n // We create the core context keys in @comunica/core to avoid a cyclic dependency\n /**\n * A logger instance.\n */\n log: core_1.CONTEXT_KEY_LOGGER,\n};\nexports.KeysHttp = {\n /**\n * Include credentials flags.\n */\n includeCredentials: new core_1.ActionContextKey('@comunica/bus-http:include-credentials'),\n /**\n * Authentication for a source as a \"username:password\"-pair.\n */\n auth: new core_1.ActionContextKey('@comunica/bus-http:auth'),\n /**\n * Fetch function implementation.\n */\n fetch: new core_1.ActionContextKey('@comunica/bus-http:fetch'),\n};\nexports.KeysHttpMemento = {\n /**\n * The desired datetime for Memento datetime-negotiation.\n */\n datetime: new core_1.ActionContextKey('@comunica/actor-http-memento:datetime'),\n};\nexports.KeysHttpProxy = {\n /**\n * Interface.\n */\n httpProxyHandler: new core_1.ActionContextKey('@comunica/actor-http-proxy:httpProxyHandler'),\n};\nexports.KeysInitQuery = {\n /**\n * Variables that have to be pre-bound to values in the query.\n */\n initialBindings: new core_1.ActionContextKey('@comunica/actor-init-query:initialBindings'),\n /**\n * The provided query's format.\n * Defaults to { language: 'sparql', version: '1.1' }\n */\n queryFormat: new core_1.ActionContextKey('@comunica/actor-init-query:queryFormat'),\n /**\n * Which GraphQL bindings should be singularized.\n */\n graphqlSingularizeVariables: new core_1.ActionContextKey('@comunica/actor-init-query:singularizeVariables'),\n /**\n * If HTTP and parsing failures are ignored.\n */\n lenient: new core_1.ActionContextKey('@comunica/actor-init-query:lenient'),\n /**\n * The original query string.\n */\n queryString: new core_1.ActionContextKey('@comunica/actor-init-query:queryString'),\n /**\n * The original parsed query.\n */\n query: new core_1.ActionContextKey('@comunica/actor-init-query:query'),\n /**\n * The query's base IRI.\n */\n baseIRI: new core_1.ActionContextKey('@comunica/actor-init-query:baseIRI'),\n /**\n * A timestamp representing the current time.\n * This is required for certain SPARQL operations such as NOW().\n */\n queryTimestamp: new core_1.ActionContextKey('@comunica/actor-init-query:queryTimestamp'),\n /**\n * @range {functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined}\n * Extension function creator for a given function IRI.\n * Returned value should be an async function implementation.\n * Undefined may be returned if no implementation exists for the given function IRI.\n *\n * The dictionary-based extensionFunctions context entry may be used instead, but not simultaneously.\n */\n extensionFunctionCreator: new core_1.ActionContextKey('@comunica/actor-init-query:extensionFunctionCreator'),\n /**\n * Dictionary of extension functions.\n * Key is the IRI of the function, and value is the async function implementation.\n *\n * The callback-based extensionFunctionCreator context entry may be used instead, but not simultaneously.\n */\n extensionFunctions: new core_1.ActionContextKey('@comunica/actor-init-query:extensionFunctions'),\n /**\n * Enables manipulation of the CLI arguments and their processing.\n */\n cliArgsHandlers: new core_1.ActionContextKey('@comunica/actor-init-query:cliArgsHandlers'),\n /**\n * Explain mode of the query. Can be 'parsed', 'logical', or 'physical'.\n */\n explain: new core_1.ActionContextKey('@comunica/actor-init-query:explain'),\n /**\n * Logs the used physical operators\n */\n physicalQueryPlanLogger: new core_1.ActionContextKey('@comunica/actor-init-query:physicalQueryPlanLogger'),\n /**\n * The current physical operator within the query plan.\n * This is used to pass parent-child relationships for invoking the query plan logger.\n */\n physicalQueryPlanNode: new core_1.ActionContextKey('@comunica/actor-init-query:physicalQueryPlanNode'),\n /**\n * A JSON-LD context\n */\n jsonLdContext: new core_1.ActionContextKey('@context'),\n};\nexports.KeysQueryOperation = {\n /**\n * Context entry for the current query operation.\n */\n operation: new core_1.ActionContextKey('@comunica/bus-query-operation:operation'),\n /**\n * @type {any} The metadata from the left streams within a join operation.\n */\n joinLeftMetadata: new core_1.ActionContextKey('@comunica/bus-query-operation:joinLeftMetadata'),\n /**\n * An array of metadata from the right streams within a join operation.\n */\n joinRightMetadatas: new core_1.ActionContextKey('@comunica/bus-query-operation:joinRightMetadatas'),\n /**\n * Indicates the bindings that were used to bind the operation.\n */\n joinBindings: new core_1.ActionContextKey('@comunica/bus-query-operation:joinBindings'),\n /**\n * Flag for indicating that only read operations are allowed, defaults to false.\n */\n readOnly: new core_1.ActionContextKey('@comunica/bus-query-operation:readOnly'),\n /**\n * An internal context entry to mark that a property path with arbitrary length and a distinct key is being processed.\n */\n isPathArbitraryLengthDistinctKey: new core_1.ActionContextKey('@comunica/bus-query-operation:isPathArbitraryLengthDistinct'),\n /**\n * An indicator that the stream will be limited to the given number of elements afterwards.\n */\n limitIndicator: new core_1.ActionContextKey('@comunica/bus-query-operation:limitIndicator'),\n};\nexports.KeysRdfParseJsonLd = {\n /**\n * @range {IDocumentLoader}\n */\n documentLoader: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:documentLoader'),\n /**\n * @range {boolean}\n */\n strictValues: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:strictValues'),\n /**\n * @range {Record}\n */\n parserOptions: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:parserOptions'),\n};\nexports.KeysRdfParseHtmlScript = {\n /**\n * An internal context flag to determine if the engine is already processing an HTML script tag.\n */\n processingHtmlScript: new core_1.ActionContextKey('@comunica/actor-rdf-parse-html-script:processingHtmlScript'),\n /**\n * If all HTML script tags must be considered.\n */\n extractAllScripts: new core_1.ActionContextKey('extractAllScripts'),\n};\nexports.KeysRdfResolveQuadPattern = {\n /**\n * Data sources.\n */\n sources: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:sources'),\n /**\n * A data source.\n */\n source: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:source'),\n /**\n * A map containing unique IDs for each source\n */\n sourceIds: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:sourceIds'),\n};\nexports.KeysRdfUpdateQuads = {\n /**\n * A data destination.\n */\n destination: new core_1.ActionContextKey('@comunica/bus-rdf-update-quads:destination'),\n};\n//# sourceMappingURL=Keys.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Keys\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionContextKey = exports.ActionContext = void 0;\nconst immutable_1 = require(\"immutable\");\n/**\n * Implementation of {@link IActionContext} using Immutable.js.\n */\nclass ActionContext {\n constructor(data = {}) {\n this.map = (0, immutable_1.Map)(data);\n }\n /**\n * Will only set the value if the key is not already set.\n */\n setDefault(key, value) {\n return this.has(key) ? this : this.set(key, value);\n }\n set(key, value) {\n return this.setRaw(key.name, value);\n }\n setRaw(key, value) {\n return new ActionContext(this.map.set(key, value));\n }\n delete(key) {\n return new ActionContext(this.map.delete(key.name));\n }\n get(key) {\n return this.getRaw(key.name);\n }\n getRaw(key) {\n return this.map.get(key);\n }\n has(key) {\n return this.hasRaw(key.name);\n }\n hasRaw(key) {\n return this.map.has(key);\n }\n merge(...contexts) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n let context = this;\n for (const source of contexts) {\n for (const key of source.keys()) {\n context = context.set(key, source.get(key));\n }\n }\n return context;\n }\n keys() {\n return [...this.map.keys()]\n .map(keyName => new ActionContextKey(keyName));\n }\n toJS() {\n return this.map.toJS();\n }\n toString() {\n return `ActionContext(${JSON.stringify(this.map.toJS())})`;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `ActionContext(${JSON.stringify(this.map.toJS(), null, ' ')})`;\n }\n /**\n * Convert the given object to an action context object if it is not an action context object yet.\n * If it already is an action context object, return the object as-is.\n * @param maybeActionContext An action context or record.\n * @return {ActionContext} An action context object.\n */\n static ensureActionContext(maybeActionContext) {\n return maybeActionContext instanceof ActionContext ?\n maybeActionContext :\n new ActionContext((0, immutable_1.Map)(maybeActionContext || {}));\n }\n}\nexports.ActionContext = ActionContext;\n/**\n * Simple implementation of {@link IActionContextKey}.\n */\nclass ActionContextKey {\n constructor(name) {\n this.name = name;\n }\n}\nexports.ActionContextKey = ActionContextKey;\n//# sourceMappingURL=ActionContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionObserver = void 0;\n/**\n * An ActionObserver can passively listen to {@link Actor#run} inputs and outputs for all actors on a certain bus.\n *\n * ActionObserver should not edit inputs and outputs,\n * they should be considered immutable.\n *\n * @see Actor\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template O The output type of an actor.\n */\nclass ActionObserver {\n /**\n * All enumerable properties from the `args` object are inherited to this observer.\n *\n * The observer will NOT automatically subscribe to the given bus when this constructor is called.\n *\n * @param {IActionObserverArgs} args Arguments object\n * @throws When required arguments are missing.\n */\n constructor(args) {\n Object.assign(this, args);\n }\n}\nexports.ActionObserver = ActionObserver;\n//# sourceMappingURL=ActionObserver.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Actor = void 0;\nconst ContextEntries_1 = require(\"./ContextEntries\");\n/**\n * An actor can act on messages of certain types and provide output of a certain type.\n *\n * The flow of an actor is as follows:\n * 1. Send a message to {@link Actor#test} to test if an actor can run that action.\n * 2. If the actor can reply to the message, let the actor run the action using {@link Actor#run}.\n *\n * An actor is typically subscribed to a bus,\n * using which the applicability to an action can be tested.\n *\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Actor {\n /**\n * All enumerable properties from the `args` object are inherited to this actor.\n *\n * The actor will subscribe to the given bus when this constructor is called.\n *\n * @param {IActorArgs} args Arguments object\n * @param {string} args.name The name for this actor.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this actor subscribes to.\n * @throws When required arguments are missing.\n */\n constructor(args) {\n this.beforeActors = [];\n Object.assign(this, args);\n this.bus.subscribe(this);\n if (this.beforeActors.length > 0) {\n this.bus.addDependencies(this, this.beforeActors);\n }\n }\n /**\n * Get the logger from the given context.\n * @param {ActionContext} context An optional context.\n * @return {Logger} The logger or undefined.\n */\n static getContextLogger(context) {\n return context.get(ContextEntries_1.CONTEXT_KEY_LOGGER);\n }\n /**\n * Run the given action on this actor\n * AND invokes the {@link Bus#onRun} method.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n runObservable(action) {\n const output = this.run(action);\n this.bus.onRun(this, action, output);\n return output;\n }\n /**\n * Initialize this actor.\n * This should be used for doing things that take a while,\n * such as opening files.\n *\n * @return {Promise} A promise that resolves when the actor has been initialized.\n */\n async initialize() {\n return true;\n }\n /**\n * Deinitialize this actor.\n * This should be used for cleaning up things when the application is shut down,\n * such as closing files and removing temporary files.\n *\n * @return {Promise} A promise that resolves when the actor has been deinitialized.\n */\n async deinitialize() {\n return true;\n }\n /* Proxy methods for the (optional) logger that is defined in the context */\n getDefaultLogData(context, data) {\n const dataActual = data ? data() : {};\n dataActual.actor = this.name;\n return dataActual;\n }\n logTrace(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.trace(message, this.getDefaultLogData(context, data));\n }\n }\n logDebug(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.debug(message, this.getDefaultLogData(context, data));\n }\n }\n logInfo(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.info(message, this.getDefaultLogData(context, data));\n }\n }\n logWarn(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.warn(message, this.getDefaultLogData(context, data));\n }\n }\n logError(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.error(message, this.getDefaultLogData(context, data));\n }\n }\n logFatal(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.fatal(message, this.getDefaultLogData(context, data));\n }\n }\n}\nexports.Actor = Actor;\n//# sourceMappingURL=Actor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bus = void 0;\n/**\n * A publish-subscribe bus for sending actions to actors\n * to test whether or not they can run an action.\n *\n * This bus does not run the action itself,\n * for that a {@link Mediator} can be used.\n *\n * @see Actor\n * @see Mediator\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Bus {\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n constructor(args) {\n this.actors = [];\n this.observers = [];\n // Mapping from dependency (after) to dependents (before)\n this.dependencyLinks = new Map();\n Object.assign(this, args);\n }\n /**\n * Subscribe the given actor to the bus.\n * After this, the given actor can be unsubscribed from the bus by calling {@link Bus#unsubscribe}.\n *\n * An actor that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {A} actor The actor to subscribe.\n */\n subscribe(actor) {\n this.actors.push(actor);\n this.reorderForDependencies();\n }\n /**\n * Subscribe the given observer to the bus.\n * After this, the given observer can be unsubscribed from the bus by calling {@link Bus#unsubscribeObserver}.\n *\n * An observer that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {ActionObserver} observer The observer to subscribe.\n */\n subscribeObserver(observer) {\n this.observers.push(observer);\n }\n /**\n * Unsubscribe the given actor from the bus.\n *\n * An actor that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {A} actor The actor to unsubscribe\n * @return {boolean} If the given actor was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n unsubscribe(actor) {\n const index = this.actors.indexOf(actor);\n if (index >= 0) {\n this.actors.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n * Unsubscribe the given observer from the bus.\n *\n * An observer that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {ActionObserver} observer The observer to unsubscribe.\n * @return {boolean} If the given observer was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n unsubscribeObserver(observer) {\n const index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n * Publish an action to all actors in the bus to test if they can run the action.\n *\n * @param {I} action An action to publish\n * @return {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]}\n * An array of reply objects. Each object contains a reference to the actor,\n * and a promise to its {@link Actor#test} result.\n */\n publish(action) {\n return this.actors.map((actor) => ({ actor, reply: actor.test(action) }));\n }\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n onRun(actor, action, output) {\n for (const observer of this.observers) {\n observer.onRun(actor, action, output);\n }\n }\n /**\n * Indicate that the given actor has the given actor dependencies.\n *\n * This will ensure that the given actor will be present in the bus *before* the given dependencies.\n *\n * @param {A} dependent A dependent actor that will be placed before the given actors.\n * @param {A[]} dependencies Actor dependencies that will be placed after the given actor.\n */\n addDependencies(dependent, dependencies) {\n for (const dependency of dependencies) {\n let existingDependencies = this.dependencyLinks.get(dependency);\n if (!existingDependencies) {\n existingDependencies = [];\n this.dependencyLinks.set(dependency, existingDependencies);\n }\n existingDependencies.push(dependent);\n }\n this.reorderForDependencies();\n }\n /**\n * Reorder the bus based on all present dependencies.\n */\n reorderForDependencies() {\n if (this.dependencyLinks.size > 0) {\n const actorsAfter = [];\n // Temporarily remove all actors that have dependencies\n for (const actorAfter of this.dependencyLinks.keys()) {\n const dependentPos = this.actors.indexOf(actorAfter);\n if (dependentPos >= 0) {\n this.actors.splice(dependentPos, 1);\n actorsAfter.push(actorAfter);\n }\n }\n // Iteratively append actors based on the first dependency link\n // that has all of its dependencies available in the array\n while (actorsAfter.length > 0) {\n // Find the first actor that has all of its dependencies available.\n let activeActorAfterId = -1;\n for (let i = 0; i < actorsAfter.length; i++) {\n let validLink = true;\n for (const dependency of this.dependencyLinks.get(actorsAfter[i])) {\n if (!this.actors.includes(dependency) && actorsAfter.includes(dependency)) {\n validLink = false;\n break;\n }\n }\n if (validLink) {\n activeActorAfterId = i;\n break;\n }\n }\n // If none of the pending links are possible, there must be a cyclic dependency\n if (activeActorAfterId < 0) {\n throw new Error(`Cyclic dependency links detected in bus ${this.name}`);\n }\n // The dependent may not be available (yet), so we don't add it to the array (yet).\n const activeActorAfter = actorsAfter.splice(activeActorAfterId, 1)[0];\n this.actors.push(activeActorAfter);\n }\n }\n }\n}\nexports.Bus = Bus;\n//# sourceMappingURL=Bus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BusIndexed = void 0;\nconst Bus_1 = require(\"./Bus\");\n/**\n * A bus that indexes identified actors,\n * so that actions with a corresponding identifier can be published more efficiently.\n *\n * Multiple actors with the same identifier can be subscribed.\n *\n * If actors or actions do not have a valid identifier,\n * then this will fallback to the normal bus behaviour.\n *\n * @see Bus\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass BusIndexed extends Bus_1.Bus {\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusIndexedArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n constructor(args) {\n super(args);\n this.actorsIndex = {};\n }\n subscribe(actor) {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n let actors = this.actorsIndex[actorId];\n if (!actors) {\n actors = this.actorsIndex[actorId] = [];\n }\n actors.push(actor);\n super.subscribe(actor);\n }\n unsubscribe(actor) {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n const actors = this.actorsIndex[actorId];\n if (actors) {\n const i = actors.indexOf(actor);\n if (i >= 0) {\n actors.splice(i, 1);\n }\n if (actors.length === 0) {\n delete this.actorsIndex[actorId];\n }\n }\n return super.unsubscribe(actor);\n }\n publish(action) {\n const actionId = this.getActionIdentifier(action);\n if (actionId) {\n const actors = [...this.actorsIndex[actionId] || [], ...this.actorsIndex._undefined_ || []];\n return actors.map((actor) => ({ actor, reply: actor.test(action) }));\n }\n return super.publish(action);\n }\n getActorIdentifier(actor) {\n return this.actorIdentifierFields.reduce((object, field) => object[field], actor);\n }\n getActionIdentifier(action) {\n return this.actionIdentifierFields.reduce((object, field) => object[field], action);\n }\n}\nexports.BusIndexed = BusIndexed;\n//# sourceMappingURL=BusIndexed.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONTEXT_KEY_LOGGER = void 0;\nconst ActionContext_1 = require(\"./ActionContext\");\nexports.CONTEXT_KEY_LOGGER = new ActionContext_1.ActionContextKey('@comunica/core:log');\n//# sourceMappingURL=ContextEntries.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logger = void 0;\n/**\n * A logger accepts messages from different levels\n * and emits them in a certain way.\n */\nclass Logger {\n /**\n * Convert a string-based logging level to a numerical logging level.\n * @param level A string-based logging level\n * @return The numerical logging level, or undefined.\n */\n static getLevelOrdinal(level) {\n return Logger.LEVELS[level];\n }\n}\nexports.Logger = Logger;\n/**\n * All available logging levels.\n * @type {{trace: number; debug: number; info: number; warn: number; error: number; fatal: number}}\n */\nLogger.LEVELS = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n};\n//# sourceMappingURL=Logger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mediator = void 0;\n/**\n * A mediator can mediate an action over a bus of actors.\n *\n * It does the following:\n * 1. Accepts an action in {@link Mediator#mediate}.\n * 2. Sends the action to the bus to test its applicability on all actors.\n * 3. It _mediates_ over these test results.\n * 4. It selects the _best_ actor.\n * 5. The action is run by the _best_ actor, and the result if returned.\n *\n * The _mediates_ and _best_ parts are filled in by subclasses of this abstract Mediator class.\n *\n * @template A The type of actor to mediator over.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Mediator {\n /**\n * All enumerable properties from the `args` object are inherited to this mediator.\n *\n * @param {IMediatorArgs, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>} args Arguments object\n * @param {string} args.name The name for this mediator.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this mediator will mediate over.\n * @throws When required arguments are missing.\n */\n constructor(args) {\n Object.assign(this, args);\n }\n /**\n * Publish the given action in the bus.\n *\n * This will send the test action on all actors in the bus.\n * All actor replies will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {IActorReply, I extends IAction, T extends IActorTest, O extends IActorOutput>[]}\n * The list of actor replies.\n */\n publish(action) {\n // Test all actors in the bus\n const actors = this.bus.publish(action);\n if (actors.length === 0) {\n throw new Error(`No actors are able to reply to a message in the bus ${this.bus.name}`);\n }\n return actors;\n }\n /**\n * Mediate for the given action to get an actor.\n *\n * This will send the test action on all actors in the bus.\n * The actor that tests _best_ will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the _best_ actor.\n */\n async mediateActor(action) {\n // Mediate to one actor and run that actor.\n return await this.mediateWith(action, this.publish(action));\n }\n /**\n * Mediate for the given action.\n *\n * This will send the test action on all actors in the bus.\n * The action will be run on the actor that tests _best_,\n * of which the result will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the mediation result.\n */\n async mediate(action) {\n // Mediate to one actor and run the action on it\n const actor = await this.mediateActor(action);\n return actor.runObservable(action);\n }\n}\nexports.Mediator = Mediator;\n//# sourceMappingURL=Mediator.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActionContext\"), exports);\n__exportStar(require(\"./Bus\"), exports);\n__exportStar(require(\"./BusIndexed\"), exports);\n__exportStar(require(\"./ContextEntries\"), exports);\n__exportStar(require(\"./ActionObserver\"), exports);\n__exportStar(require(\"./Actor\"), exports);\n__exportStar(require(\"./Logger\"), exports);\n__exportStar(require(\"./Mediator\"), exports);\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNodeBindingsScoped = void 0;\n/**\n * A blank node that is scoped to a set of bindings.\n */\nclass BlankNodeBindingsScoped {\n constructor(value) {\n this.termType = 'BlankNode';\n this.singleBindingsScope = true;\n this.value = value;\n }\n equals(other) {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNodeBindingsScoped = BlankNodeBindingsScoped;\n//# sourceMappingURL=BlankNodeBindingsScoped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNodeScoped = void 0;\n/**\n * A blank node that is scoped to a certain source.\n */\nclass BlankNodeScoped {\n constructor(value, skolemized) {\n this.termType = 'BlankNode';\n this.value = value;\n this.skolemized = skolemized;\n }\n equals(other) {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNodeScoped = BlankNodeScoped;\n//# sourceMappingURL=BlankNodeScoped.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./BlankNodeScoped\"), exports);\n__exportStar(require(\"./BlankNodeBindingsScoped\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoggerVoid = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A logger that voids everything.\n */\nclass LoggerVoid extends core_1.Logger {\n debug() {\n // Void\n }\n error() {\n // Void\n }\n fatal() {\n // Void\n }\n info() {\n // Void\n }\n trace() {\n // Void\n }\n warn() {\n // Void\n }\n}\nexports.LoggerVoid = LoggerVoid;\n//# sourceMappingURL=LoggerVoid.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LoggerVoid\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorAll = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that runs all actors that resolve their test.\n * This mediator will always resolve to the first actor's output.\n */\nclass MediatorAll extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediate(action) {\n // Collect all actors that resolve their test\n const validActors = [];\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n testResults = [];\n }\n for (const testResult of testResults) {\n try {\n await testResult.reply;\n validActors.push(testResult.actor);\n }\n catch {\n // Ignore errors\n }\n }\n // Send action to all valid actors\n const outputs = await Promise.all(validActors.map(actor => actor.runObservable(action)));\n return outputs[0];\n }\n async mediateWith() {\n throw new Error('Unsupported operation: MediatorAll#mediateWith');\n }\n}\nexports.MediatorAll = MediatorAll;\n//# sourceMappingURL=MediatorAll.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorAll\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorCombinePipeline = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that goes over all actors in sequence and forwards I/O.\n * This required the action input and the actor output to be of the same type.\n */\nclass MediatorCombinePipeline extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediate(action) {\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n // If no actors are available, just return the input as output\n return action;\n }\n if (this.filterErrors) {\n const _testResults = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n }\n catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n // Delegate test errors.\n testResults = await Promise.all(testResults.map(async ({ actor, reply }) => ({ actor, reply: await reply })));\n // Order the test results if ordering is enabled\n if (this.order) {\n // A function used to extract an ordering value from a test result\n const getOrder = (elem) => {\n // If there is a field key use it, otherwise use the input\n // element for ordering\n const value = this.field ? elem[this.field] : elem;\n // Check the ordering value is a number\n if (typeof value !== 'number') {\n throw new Error('Cannot order elements that are not numbers.');\n }\n return value;\n };\n testResults = testResults.sort((actor1, actor2) => (this.order === 'increasing' ? 1 : -1) *\n (getOrder(actor1.reply) - getOrder(actor2.reply)));\n }\n // Pass action to first actor,\n // and each actor output as input to the following actor.\n let handle = action;\n for (const { actor } of testResults) {\n handle = { ...handle, ...await actor.runObservable(handle) };\n }\n // Return the final actor output\n return handle;\n }\n mediateWith() {\n throw new Error('Method not supported.');\n }\n}\nexports.MediatorCombinePipeline = MediatorCombinePipeline;\n//# sourceMappingURL=MediatorCombinePipeline.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorCombinePipeline\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorCombineUnion = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that takes the union of all actor results.\n *\n * The actors that are registered first will have priority on setting overlapping fields.\n */\nclass MediatorCombineUnion extends core_1.Mediator {\n constructor(args) {\n super(args);\n this.combiner = this.createCombiner();\n }\n async mediate(action) {\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n testResults = [];\n }\n // Delegate test errors.\n await Promise.all(testResults.map(({ reply }) => reply));\n // Run action on all actors.\n const results = await Promise.all(testResults.map(result => result.actor.runObservable(action)));\n // Return the combined results.\n return this.combiner(results);\n }\n mediateWith() {\n throw new Error('Method not supported.');\n }\n createCombiner() {\n return (results) => {\n const data = {};\n data[this.field] = {};\n // eslint-disable-next-line unicorn/prefer-spread\n [{}].concat(results.map((result) => result[this.field]))\n .forEach((value, index, arr) => {\n data[this.field] = { ...value, ...data[this.field] };\n });\n return data;\n };\n }\n}\nexports.MediatorCombineUnion = MediatorCombineUnion;\n//# sourceMappingURL=MediatorCombineUnion.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorCombineUnion\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorJoinCoefficientsFixed = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that mediates over actors implementing the Join Coefficients mediator type and assigns fixed weights\n * to calculate an overall score and pick the actor with the lowest score.\n */\nclass MediatorJoinCoefficientsFixed extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediateWith(action, testResults) {\n // Obtain test results\n const errors = [];\n const promises = testResults\n .map(({ reply }) => reply)\n .map(promise => promise.catch(error => {\n errors.push(error);\n }));\n const coefficients = await Promise.all(promises);\n // Check if we had a limit indicator in the context\n const limitIndicator = action.context.get(context_entries_1.KeysQueryOperation.limitIndicator);\n // Calculate costs\n const costs = coefficients\n // eslint-disable-next-line array-callback-return\n .map(coeff => {\n if (coeff &&\n // If we have a limit indicator,\n // disallow entries that have a number of iterations that is higher than the limit AND persist items.\n // In these cases, join operators that produce results early on will be preferred.\n (!limitIndicator || coeff.iterations < limitIndicator || coeff.persistedItems === 0)) {\n return coeff.iterations * this.cpuWeight +\n coeff.persistedItems * this.memoryWeight +\n coeff.blockingItems * this.timeWeight +\n coeff.requestTime * this.ioWeight;\n }\n });\n // Determine index with lowest cost\n let minIndex = -1;\n let minValue = Number.POSITIVE_INFINITY;\n for (const [i, cost] of costs.entries()) {\n if (cost !== undefined && (minIndex === -1 || cost < minValue)) {\n minIndex = i;\n minValue = cost;\n }\n }\n // Reject if all actors rejected\n if (minIndex < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${errors.map(error => error.message).join('\\n')}`);\n }\n // Return actor with lowest cost\n const bestActor = testResults[minIndex].actor;\n // Emit calculations in logger\n if (bestActor.includeInLogs) {\n core_1.Actor.getContextLogger(action.context)?.debug(`Determined physical join operator '${bestActor.logicalType}-${bestActor.physicalName}'`, {\n entries: action.entries.length,\n variables: await Promise.all(action.entries\n .map(async (entry) => (await entry.output.metadata()).variables.map(variable => variable.value))),\n costs: Object.fromEntries(costs.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ])),\n coefficients: Object.fromEntries(coefficients.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ])),\n });\n }\n return bestActor;\n }\n}\nexports.MediatorJoinCoefficientsFixed = MediatorJoinCoefficientsFixed;\n//# sourceMappingURL=MediatorJoinCoefficientsFixed.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorJoinCoefficientsFixed\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorNumber = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that can mediate over a single number field.\n *\n * It takes the required 'field' and 'type' parameters.\n * The 'field' parameter represents the field name of the test result field over which must be mediated.\n * The 'type' parameter\n */\nclass MediatorNumber extends core_1.Mediator {\n constructor(args) {\n super(args);\n this.indexPicker = this.createIndexPicker();\n }\n /**\n * @return {(tests: T[]) => number} A function that returns the index of the test result\n * that has been chosen by this mediator.\n */\n createIndexPicker() {\n switch (this.type) {\n case 'min':\n return (tests) => tests.reduce((prev, curr, i) => {\n const val = this.getOrDefault(curr[this.field], Number.POSITIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] > val) ? [val, i] : prev;\n }, [Number.NaN, -1])[1];\n case 'max':\n return (tests) => tests.reduce((prev, curr, i) => {\n const val = this.getOrDefault(curr[this.field], Number.NEGATIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] < val) ? [val, i] : prev;\n }, [Number.NaN, -1])[1];\n default:\n throw new Error(`No valid \"type\" value was given, must be either 'min' or 'max', but got: ${this.type}`);\n }\n }\n getOrDefault(value, defaultValue) {\n return value === undefined ? defaultValue : value;\n }\n async mediateWith(action, testResults) {\n let promises = testResults.map(({ reply }) => reply);\n const errors = [];\n if (this.ignoreErrors) {\n const dummy = {};\n dummy[this.field] = null;\n promises = promises.map(promise => promise.catch(error => {\n errors.push(error);\n return dummy;\n }));\n }\n const results = await Promise.all(promises);\n const index = this.indexPicker(results);\n if (index < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${errors.map(error => error.message).join('\\n')}`);\n }\n return testResults[index].actor;\n }\n}\nexports.MediatorNumber = MediatorNumber;\n//# sourceMappingURL=MediatorNumber.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorNumber\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorRace = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that picks the first actor that resolves its test.\n */\nclass MediatorRace extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n mediateWith(action, testResults) {\n return new Promise((resolve, reject) => {\n const errors = [];\n for (const testResult of testResults) {\n testResult.reply.then(() => {\n resolve(testResult.actor);\n }).catch(error => {\n // Reject if all replies were rejected\n errors.push(error);\n if (errors.length === testResults.length) {\n reject(new Error(`${this.name} mediated over all rejecting actors:\\n${errors.map(subError => subError.message).join('\\n')}`));\n }\n });\n }\n });\n }\n}\nexports.MediatorRace = MediatorRace;\n//# sourceMappingURL=MediatorRace.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorRace\"), exports);\n//# sourceMappingURL=index.js.map","'use strict'\n\nvar Parser = require('jsonparse')\n , through = require('through')\n\nvar bufferFrom = Buffer.from && Buffer.from !== Uint8Array.from\n\n/*\n\n the value of this.stack that creationix's jsonparse has is weird.\n\n it makes this code ugly, but his problem is way harder that mine,\n so i'll forgive him.\n\n*/\n\nexports.parse = function (path, map) {\n var header, footer\n var parser = new Parser()\n var stream = through(function (chunk) {\n if('string' === typeof chunk)\n chunk = bufferFrom ? Buffer.from(chunk) : new Buffer(chunk)\n parser.write(chunk)\n },\n function (data) {\n if(data)\n stream.write(data)\n if (header)\n stream.emit('header', header)\n if (footer)\n stream.emit('footer', footer)\n stream.queue(null)\n })\n\n if('string' === typeof path)\n path = path.split('.').map(function (e) {\n if (e === '$*')\n return {emitKey: true}\n else if (e === '*')\n return true\n else if (e === '') // '..'.split('.') returns an empty string\n return {recurse: true}\n else\n return e\n })\n\n\n var count = 0, _key\n if(!path || !path.length)\n path = null\n\n parser.onValue = function (value) {\n if (!this.root)\n stream.root = value\n\n if(! path) return\n\n var i = 0 // iterates on path\n var j = 0 // iterates on stack\n var emitKey = false;\n var emitPath = false;\n while (i < path.length) {\n var key = path[i]\n var c\n j++\n\n if (key && !key.recurse) {\n c = (j === this.stack.length) ? this : this.stack[j]\n if (!c) return\n if (! check(key, c.key)) {\n setHeaderFooter(c.key, value)\n return\n }\n emitKey = !!key.emitKey;\n emitPath = !!key.emitPath;\n i++\n } else {\n i++\n var nextKey = path[i]\n if (! nextKey) return\n while (true) {\n c = (j === this.stack.length) ? this : this.stack[j]\n if (!c) return\n if (check(nextKey, c.key)) {\n i++;\n if (!Object.isFrozen(this.stack[j]))\n this.stack[j].value = null\n break\n } else {\n setHeaderFooter(c.key, value)\n }\n j++\n }\n }\n\n }\n\n // emit header\n if (header) {\n stream.emit('header', header);\n header = false;\n }\n if (j !== this.stack.length) return\n\n count ++\n var actualPath = this.stack.slice(1).map(function(element) { return element.key }).concat([this.key])\n var data = value\n if(null != data)\n if(null != (data = map ? map(data, actualPath) : data)) {\n if (emitKey || emitPath) {\n data = { value: data };\n if (emitKey)\n data[\"key\"] = this.key;\n if (emitPath)\n data[\"path\"] = actualPath;\n }\n\n stream.queue(data)\n }\n if (this.value) delete this.value[this.key]\n for(var k in this.stack)\n if (!Object.isFrozen(this.stack[k]))\n this.stack[k].value = null\n }\n parser._onToken = parser.onToken;\n\n parser.onToken = function (token, value) {\n parser._onToken(token, value);\n if (this.stack.length === 0) {\n if (stream.root) {\n if(!path)\n stream.queue(stream.root)\n count = 0;\n stream.root = null;\n }\n }\n }\n\n parser.onError = function (err) {\n if(err.message.indexOf(\"at position\") > -1)\n err.message = \"Invalid JSON (\" + err.message + \")\";\n stream.emit('error', err)\n }\n\n return stream\n\n function setHeaderFooter(key, value) {\n // header has not been emitted yet\n if (header !== false) {\n header = header || {}\n header[key] = value\n }\n\n // footer has not been emitted yet but header has\n if (footer !== false && header === false) {\n footer = footer || {}\n footer[key] = value\n }\n }\n}\n\nfunction check (x, y) {\n if ('string' === typeof x)\n return y == x\n else if (x && 'function' === typeof x.exec)\n return x.exec(y)\n else if ('boolean' === typeof x || 'object' === typeof x)\n return x\n else if ('function' === typeof x)\n return x(y)\n return false\n}\n\nexports.stringify = function (op, sep, cl, indent) {\n indent = indent || 0\n if (op === false){\n op = ''\n sep = '\\n'\n cl = ''\n } else if (op == null) {\n\n op = '[\\n'\n sep = '\\n,\\n'\n cl = '\\n]\\n'\n\n }\n\n //else, what ever you like\n\n var stream\n , first = true\n , anyData = false\n stream = through(function (data) {\n anyData = true\n try {\n var json = JSON.stringify(data, null, indent)\n } catch (err) {\n return stream.emit('error', err)\n }\n if(first) { first = false ; stream.queue(op + json)}\n else stream.queue(sep + json)\n },\n function (data) {\n if(!anyData)\n stream.queue(op)\n stream.queue(cl)\n stream.queue(null)\n })\n\n return stream\n}\n\nexports.stringifyObject = function (op, sep, cl, indent) {\n indent = indent || 0\n if (op === false){\n op = ''\n sep = '\\n'\n cl = ''\n } else if (op == null) {\n\n op = '{\\n'\n sep = '\\n,\\n'\n cl = '\\n}\\n'\n\n }\n\n //else, what ever you like\n\n var first = true\n var anyData = false\n var stream = through(function (data) {\n anyData = true\n var json = JSON.stringify(data[0]) + ':' + JSON.stringify(data[1], null, indent)\n if(first) { first = false ; this.queue(op + json)}\n else this.queue(sep + json)\n },\n function (data) {\n if(!anyData) this.queue(op)\n this.queue(cl)\n\n this.queue(null)\n })\n\n return stream\n}\n\n\n","/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n","\nconst DynamicNestedLoopJoin = require('./join/DynamicNestedLoopJoin');\nconst HashJoin = require('./join/HashJoin');\nconst NestedLoopJoin = require('./join/NestedLoopJoin');\nconst SymmetricHashJoin = require('./join/SymmetricHashJoin');\n\nconst MergeStream = require('./util/MergeIterator');\n\nmodule.exports = {\n DynamicNestedLoopJoin,\n HashJoin,\n NestedLoopJoin,\n SymmetricHashJoin,\n\n MergeStream\n};","\nlet AsyncIterator = require('asynciterator');\nlet MultiTransformIterator = AsyncIterator.MultiTransformIterator;\nlet SimpleTransformIterator = AsyncIterator.SimpleTransformIterator;\n\n// Nested Loop Join, but the values of the inner loop are determined by each value of the outer loop, possibly reducing the number of necessary checks\nclass DynamicNestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, funRight, funJoin, options)\n {\n super(left, options);\n\n this.funRight = funRight;\n this.funJoin = funJoin;\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.funRight(leftItem), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = DynamicNestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Hash_join\nclass HashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.addedDataListener = false;\n this.left = left;\n this.right = right;\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.leftMap = new Map();\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.readable = false;\n\n this.left.on('end', allowJoining.bind(this));\n\n function allowJoining ()\n {\n if (this.leftMap.size <= 0)\n return this.close();\n this.readable = true;\n this.right.on('readable', () => this.readable = true);\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n this.on('newListener', (eventName) =>\n {\n if (eventName === 'data' && !this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n })\n }\n\n hasResults ()\n {\n return !this.right.ended || this.matchIdx < this.matches.length;\n }\n\n close ()\n {\n super.close();\n this.left.close();\n this.right.close();\n }\n\n read ()\n {\n if (!this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n\n if (this.ended || !this.readable)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n this.match = this.right.read();\n\n if (this.match === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(this.match);\n this.matches = this.leftMap.get(hash) || [];\n this.matchIdx = 0;\n\n // array is filled again so recursive call can have results\n return this.read();\n }\n\n _addDataListener()\n {\n this.left.on('data', addItem.bind(this));\n\n function addItem(item)\n {\n let hash = this.funHash(item);\n if (!this.leftMap.has(hash))\n this.leftMap.set(hash, []);\n let arr = this.leftMap.get(hash);\n arr.push(item);\n }\n }\n}\n\nmodule.exports = HashJoin;\n","\nconst { MultiTransformIterator, SimpleTransformIterator, scheduleTask } = require('asynciterator');\n\n// https://en.wikipedia.org/wiki/Nested_loop_join\nclass NestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, right, funJoin, options)\n {\n super(left, options);\n\n this.right = right;\n this.funJoin = funJoin; // function that joins 2 elements or returns null if join is not possible\n this.on('end', () => this.right.close());\n }\n\n close ()\n {\n super.close();\n scheduleTask(() => this.right.close());\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.right.clone(), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = NestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Symmetric_Hash_Join\nclass SymmetricHashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.left = left;\n this.right = right;\n\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.usedLeft = false;\n this.leftMap = new Map();\n this.rightMap = new Map();\n\n this.on('end', () => this._cleanup() );\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n if (this.left.readable || this.right.readable)\n {\n this.readable = true;\n }\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.left.on('readable', () => this.readable = true);\n this.right.on('readable', () => this.readable = true);\n\n // this needs to be here since it's possible the left/right streams only get ended after there are no more results left\n this.left.on ('end', () => { if (!this.hasResults()) this._end(); });\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n hasResults()\n {\n // The \"!!this.match\" condition was added as a workaround to race\n // conditions and/or duplicate \"end\" events that may lead to premature\n // cleanups of the \"this.matches\" array.\n // See https://github.com/joachimvh/asyncjoin/issues/7\n return !this.left.ended || !this.right.ended || (!!this.matches && this.matchIdx < this.matches.length);\n }\n\n _cleanup ()\n {\n // motivate garbage collector to remove these\n this.leftMap = null;\n this.rightMap = null;\n this.matches = null;\n }\n\n close ()\n {\n super.close();\n this.left.close();\n this.right.close();\n }\n\n read ()\n {\n if (this.ended)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.usedLeft ? this.funJoin(this.match, item) : this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n let item = null;\n // try both streams if the first one has no value\n for (let i = 0; i < 2; ++i)\n {\n item = this.usedLeft ? this.right.read() : this.left.read();\n this.usedLeft = !this.usedLeft; // try other stream next time\n\n // found a result, no need to check the other stream this run\n if (item !== null)\n break;\n }\n\n if (item === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(item);\n let map = this.usedLeft ? this.leftMap : this.rightMap;\n if (!map.has(hash))\n map.set(hash, []);\n let arr = map.get(hash);\n arr.push(item);\n\n this.match = item;\n this.matches = (this.usedLeft ? this.rightMap : this.leftMap).get(hash) || [];\n this.matchIdx = 0;\n\n // array is filled again so recursive call can have results\n return this.read();\n }\n}\n\nmodule.exports = SymmetricHashJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// merges the contents of multiple streams\nclass MergeIterator extends AsyncIterator\n{\n constructor (streams)\n {\n super();\n \n if (!Array.isArray(streams))\n streams = Array.prototype.slice.call(arguments);\n \n this.streams = streams;\n \n for (let stream of streams)\n {\n stream.on('readable', () => this.emit('readable'));\n stream.on('end', () => this._removeStream(stream));\n }\n \n if (this.streams.length === 0)\n this.close();\n \n this.idx = this.streams.length-1;\n }\n \n _removeStream (stream)\n {\n let idx = this.streams.indexOf(stream);\n if (idx < 0)\n return;\n \n this.streams.splice(idx, 1);\n if (this.idx >= this.streams.length)\n --this.idx;\n \n if (this.streams.length === 0)\n this._end();\n }\n \n close ()\n {\n super.close();\n for (let stream of this.streams)\n stream.close();\n }\n \n read ()\n {\n for (let attempts = 0; attempts < this.streams.length; ++attempts)\n {\n this.idx = (this.idx + 1) % this.streams.length;\n let item = this.streams[this.idx].read();\n if (item !== null)\n return item;\n }\n \n return null;\n }\n}\n\nmodule.exports = MergeIterator;","const df_399_1 = new (require('@comunica/logger-void').LoggerVoid)();\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-init/^2.0.0/components/ActorInit.jsonld#ActorInit_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-context-preprocess/^2.0.0/components/ActorContextPreprocess.jsonld#ActorContextPreprocess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-bindings/^2.0.0/components/ActorHashBindings.jsonld#ActorHashBindings_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-query-operation/^2.0.0/components/ActorOptimizeQueryOperation.jsonld#ActorOptimizeQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus = new (require('@comunica/bus-query-operation').BusQueryOperation)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^2.0.0/components/ActorQueryOperation.jsonld#ActorQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-parse/^2.0.0/components/ActorQueryParse.jsonld#ActorQueryParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-result-serialize/^2.0.0/components/ActorQueryResultSerialize.jsonld#ActorQueryResultSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http-invalidate/^2.0.0/components/ActorHttpInvalidate.jsonld#ActorHttpInvalidate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-serialize/^2.0.0/components/ActorRdfSerialize.jsonld#ActorRdfSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^2.0.0/components/ActorHttp.jsonld#ActorHttp_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference/^2.0.0/components/ActorDereference.jsonld#ActorDereference_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse/^2.0.0/components/ActorRdfParse.jsonld#ActorRdfParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference-rdf/^2.0.0/components/ActorDereferenceRdf.jsonld#ActorDereferenceRdf_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-entries-sort/^2.0.0/components/ActorRdfJoinEntriesSort.jsonld#ActorRdfJoinEntriesSort_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-selectivity/^2.0.0/components/ActorRdfJoinSelectivity.jsonld#ActorRdfJoinSelectivity_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata/^2.0.0/components/ActorRdfMetadata.jsonld#ActorRdfMetadata_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-extract/^2.0.0/components/ActorRdfMetadataExtract.jsonld#ActorRdfMetadataExtract_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse-html/^2.0.0/components/ActorRdfParseHtml.jsonld#ActorRdfParseHtml_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia/^2.0.0/components/ActorRdfResolveHypermedia.jsonld#ActorRdfResolveHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links/^2.0.0/components/ActorRdfResolveHypermediaLinks.jsonld#ActorRdfResolveHypermediaLinks_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links-queue/^2.0.0/components/ActorRdfResolveHypermediaLinksQueue.jsonld#ActorRdfResolveHypermediaLinksQueue_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-hypermedia/^2.0.0/components/ActorRdfUpdateHypermedia.jsonld#ActorRdfUpdateHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads/^2.0.0/components/ActorRdfUpdateQuads.jsonld#ActorRdfUpdateQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^2.0.0/components/ActorRdfJoin.jsonld#ActorRdfJoin_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-quad-pattern/^2.0.0/components/ActorRdfResolveQuadPattern.jsonld#ActorRdfResolveQuadPattern_default_bus'\n});\nconst urn_comunica_default_context_preprocess_actors_source_to_destination = new (require('@comunica/actor-context-preprocess-source-to-destination').ActorContextPreprocessSourceToDestination)({\n 'name': 'urn:comunica:default:context-preprocess/actors#source-to-destination',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:context-preprocess/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_hash_bindings_actors_sha1 = new (require('@comunica/actor-hash-bindings-sha1').ActorHashBindingsSha1)({\n 'name': 'urn:comunica:default:hash-bindings/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_bindings_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-bindings/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:optimize-query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_bgp = new (require('@comunica/actor-optimize-query-operation-join-bgp').ActorOptimizeQueryOperationJoinBgp)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_bgp_to_join = new (require('@comunica/actor-optimize-query-operation-bgp-to-join').ActorOptimizeQueryOperationBgpToJoin)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#bgp-to-join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_connected = new (require('@comunica/actor-optimize-query-operation-join-connected').ActorOptimizeQueryOperationJoinConnected)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-connected',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'httpRequests',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_values = new (require('@comunica/actor-query-operation-values').ActorQueryOperationValues)({\n 'name': 'urn:comunica:default:query-operation/actors#values',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_parse_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-parse/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_actors_sparql = new (require('@comunica/actor-query-parse-sparql').ActorQueryParseSparql)({\n 'prefixes': {\"dbpedia\":\"http://dbpedia.org/resource/\",\"dbpedia-owl\":\"http://dbpedia.org/ontology/\",\"dbpprop\":\"http://dbpedia.org/property/\",\"dc\":\"http://purl.org/dc/terms/\",\"dc11\":\"http://purl.org/dc/elements/1.1/\",\"dcterms\":\"http://purl.org/dc/terms/\",\"foaf\":\"http://xmlns.com/foaf/0.1/\",\"geo\":\"http://www.w3.org/2003/01/geo/wgs84_pos#\",\"owl\":\"http://www.w3.org/2002/07/owl#\",\"rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"rdfs\":\"http://www.w3.org/2000/01/rdf-schema#\",\"schema\":\"http://schema.org/\",\"skos\":\"http://www.w3.org/2008/05/skos#\",\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"},\n 'name': 'urn:comunica:default:query-parse/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_actors_graphql = new (require('@comunica/actor-query-parse-graphql').ActorQueryParseGraphql)({\n 'name': 'urn:comunica:default:query-parse/actors#graphql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-result-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_json = new (require('@comunica/actor-query-result-serialize-json').ActorQueryResultSerializeJson)({\n 'mediaTypePriorities': {\"application/json\":1},\n 'mediaTypeFormats': {\"application/json\":\"https://comunica.linkeddatafragments.org/#results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_simple = new (require('@comunica/actor-query-result-serialize-simple').ActorQueryResultSerializeSimple)({\n 'mediaTypePriorities': {\"simple\":0.9},\n 'mediaTypeFormats': {\"simple\":\"https://comunica.linkeddatafragments.org/#results_simple\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#simple',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_csv = new (require('@comunica/actor-query-result-serialize-sparql-csv').ActorQueryResultSerializeSparqlCsv)({\n 'mediaTypePriorities': {\"text/csv\":0.75},\n 'mediaTypeFormats': {\"text/csv\":\"http://www.w3.org/ns/formats/SPARQL_Results_CSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#csv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_json = new (require('@comunica/actor-query-result-serialize-sparql-json').ActorQueryResultSerializeSparqlJson)({\n 'mediaTypePriorities': {\"application/sparql-results+json\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+json\":\"http://www.w3.org/ns/formats/SPARQL_Results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_tsv = new (require('@comunica/actor-query-result-serialize-sparql-tsv').ActorQueryResultSerializeSparqlTsv)({\n 'mediaTypePriorities': {\"text/tab-separated-values\":0.75},\n 'mediaTypeFormats': {\"text/tab-separated-values\":\"http://www.w3.org/ns/formats/SPARQL_Results_TSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-tsv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_xml = new (require('@comunica/actor-query-result-serialize-sparql-xml').ActorQueryResultSerializeSparqlXml)({\n 'mediaTypePriorities': {\"application/sparql-results+xml\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+xml\":\"http://www.w3.org/ns/formats/SPARQL_Results_XML\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-xml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_table = new (require('@comunica/actor-query-result-serialize-table').ActorQueryResultSerializeTable)({\n 'columnWidth': 50,\n 'mediaTypePriorities': {\"table\":0.6},\n 'mediaTypeFormats': {\"table\":\"https://comunica.linkeddatafragments.org/#results_table\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#table',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_tree = new (require('@comunica/actor-query-result-serialize-tree').ActorQueryResultSerializeTree)({\n 'mediaTypePriorities': {\"tree\":0.5},\n 'mediaTypeFormats': {\"tree\":\"https://comunica.linkeddatafragments.org/#results_tree\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#tree',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_http_invalidate_mediators_main = new (require('@comunica/mediator-all').MediatorAll)({\n 'name': 'urn:comunica:default:http-invalidate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_update_quads_hypermedia__2_0_0_components_ActorRdfUpdateQuadsHypermedia_jsonld_IActorRdfUpdateQuadsHypermediaArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-update-quads-hypermedia/^2.0.0/components/ActorRdfUpdateQuadsHypermedia.jsonld#IActorRdfUpdateQuadsHypermediaArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_resolve_quad_pattern_hypermedia__2_0_0_components_ActorRdfResolveQuadPatternHypermedia_jsonld_IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-resolve-quad-pattern-hypermedia/^2.0.0/components/ActorRdfResolveQuadPatternHypermedia.jsonld#IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_n3 = new (require('@comunica/actor-rdf-serialize-n3').ActorRdfSerializeN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'name': 'urn:comunica:default:rdf-serialize/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_jsonld = new (require('@comunica/actor-rdf-serialize-jsonld').ActorRdfSerializeJsonLd)({\n 'jsonStringifyIndentSpaces': 2,\n 'mediaTypePriorities': {\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-serialize/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__2_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer = new (require('@comunica/actor-query-result-serialize-stats').ActionObserverHttp)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^2.0.0/components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats_default_observer',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_http_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'time',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:http/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_http_actors_fetch = new (require('@comunica/actor-http-fetch').ActorHttpFetch)({\n 'agentOptions': {\"keepAlive\":true,\"maxSockets\":5},\n 'name': 'urn:comunica:default:http/actors#fetch',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_dereference_actors_fallback = new (require('@comunica/actor-dereference-fallback').ActorDereferenceFallback)({\n 'name': 'urn:comunica:default:dereference/actors#fallback',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_dereference_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_rdf_parse_mediators_parse = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-parse/mediators#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-parse/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_n3 = new (require('@comunica/actor-rdf-parse-n3').ActorRdfParseN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'priorityScale': 1,\n 'name': 'urn:comunica:default:rdf-parse/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_rdfxml = new (require('@comunica/actor-rdf-parse-rdfxml').ActorRdfParseRdfXml)({\n 'mediaTypePriorities': {\"application/rdf+xml\":1},\n 'mediaTypeFormats': {\"application/rdf+xml\":\"http://www.w3.org/ns/formats/RDF_XML\"},\n 'priorityScale': 0.5,\n 'name': 'urn:comunica:default:rdf-parse/actors#rdfxml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_xmlrdfa = new (require('@comunica/actor-rdf-parse-xml-rdfa').ActorRdfParseXmlRdfa)({\n 'mediaTypePriorities': {\"application/xml\":1,\"image/svg+xml\":1,\"text/xml\":1},\n 'mediaTypeFormats': {\"application/xml\":\"http://www.w3.org/ns/formats/RDFa\",\"image/svg+xml\":\"http://www.w3.org/ns/formats/RDFa\",\"text/xml\":\"http://www.w3.org/ns/formats/RDFa\"},\n 'priorityScale': 0.3,\n 'name': 'urn:comunica:default:rdf-parse/actors#xmlrdfa',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_dereference_rdf_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference-rdf/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_actors_cardinality = new (require('@comunica/actor-rdf-join-entries-sort-cardinality').ActorRdfJoinEntriesSortCardinality)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_actors_variable_counting = new (require('@comunica/actor-rdf-join-selectivity-variable-counting').ActorRdfJoinSelectivityVariableCounting)({\n 'name': 'urn:comunica:default:rdf-join-selectivity/actors#variable-counting',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'accuracy',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-join-selectivity/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_metadata_actors_primary_topic = new (require('@comunica/actor-rdf-metadata-primary-topic').ActorRdfMetadataPrimaryTopic)({\n 'metadataToData': false,\n 'dataToMetadataOnInvalidMetadataGraph': true,\n 'name': 'urn:comunica:default:rdf-metadata/actors#primary-topic',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_actors_all = new (require('@comunica/actor-rdf-metadata-all').ActorRdfMetadataAll)({\n 'name': 'urn:comunica:default:rdf-metadata/actors#all',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-metadata/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_controls = new (require('@comunica/actor-rdf-metadata-extract-hydra-controls').ActorRdfMetadataExtractHydraControls)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-controls',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_count = new (require('@comunica/actor-rdf-metadata-extract-hydra-count').ActorRdfMetadataExtractHydraCount)({\n 'predicates': [\n 'http://www.w3.org/ns/hydra/core#totalItems',\n 'http://rdfs.org/ns/void#triples'\n],\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-count',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_pagesize = new (require('@comunica/actor-rdf-metadata-extract-hydra-pagesize').ActorRdfMetadataExtractHydraPagesize)({\n 'predicates': [\n 'http://www.w3.org/ns/hydra/core#itemsPerPage'\n],\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-pagesize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_request_time = new (require('@comunica/actor-rdf-metadata-extract-request-time').ActorRdfMetadataExtractRequestTime)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#request-time',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_allow_http_methods = new (require('@comunica/actor-rdf-metadata-extract-allow-http-methods').ActorRdfMetadataExtractAllowHttpMethods)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#allow-http-methods',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_put_accepted = new (require('@comunica/actor-rdf-metadata-extract-put-accepted').ActorRdfMetadataExtractPutAccepted)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#put-accepted',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_patch_sparql_update = new (require('@comunica/actor-rdf-metadata-extract-patch-sparql-update').ActorRdfMetadataExtractPatchSparqlUpdate)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#patch-sparql-update',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_sparql_service = new (require('@comunica/actor-rdf-metadata-extract-sparql-service').ActorRdfMetadataExtractSparqlService)({\n 'inferHttpsEndpoint': true,\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#sparql-service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-extract/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_html = new (require('@comunica/actor-rdf-parse-html').ActorRdfParseHtml)({\n 'busRdfParseHtml': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus,\n 'mediaTypePriorities': {\"application/xhtml+xml\":0.9,\"text/html\":1},\n 'mediaTypeFormats': {\"application/xhtml+xml\":\"http://www.w3.org/ns/formats/HTML\",\"text/html\":\"http://www.w3.org/ns/formats/HTML\"},\n 'priorityScale': 0.2,\n 'name': 'urn:comunica:default:rdf-parse/actors#html',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_microdata = new (require('@comunica/actor-rdf-parse-html-microdata').ActorRdfParseHtmlMicrodata)({\n 'name': 'urn:comunica:default:rdf-parse-html/actors#microdata',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_rdfa = new (require('@comunica/actor-rdf-parse-html-rdfa').ActorRdfParseHtmlRdfa)({\n 'name': 'urn:comunica:default:rdf-parse-html/actors#rdfa',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_actors_none = new (require('@comunica/actor-rdf-resolve-hypermedia-none').ActorRdfResolveHypermediaNone)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/actors#none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'filterFactor',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_actors_next = new (require('@comunica/actor-rdf-resolve-hypermedia-links-next').ActorRdfResolveHypermediaLinksNext)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/actors#next',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_actors_fifo = new (require('@comunica/actor-rdf-resolve-hypermedia-links-queue-fifo').ActorRdfResolveHypermediaLinksQueueFifo)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/actors#fifo',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_rdfjs_store = new (require('@comunica/actor-rdf-update-quads-rdfjs-store').ActorRdfUpdateQuadsRdfJsStore)({\n 'name': 'urn:comunica:default:rdf-update-quads/actors#rdfjs-store',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_join_mediators_main = new (require('@comunica/mediator-join-coefficients-fixed').MediatorJoinCoefficientsFixed)({\n 'cpuWeight': 1,\n 'memoryWeight': 1,\n 'timeWeight': 10,\n 'ioWeight': 100,\n 'name': 'urn:comunica:default:rdf-join/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_rdfjs_source = new (require('@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source').ActorRdfResolveQuadPatternRdfJsSource)({\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#rdfjs-source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_query_operation_actors_ask = new (require('@comunica/actor-query-operation-ask').ActorQueryOperationAsk)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#ask',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_bgp = new (require('@comunica/actor-query-operation-bgp-join').ActorQueryOperationBgpJoin)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_describe = new (require('@comunica/actor-query-operation-describe-subject').ActorQueryOperationDescribeSubject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#describe',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_distinct = new (require('@comunica/actor-query-operation-distinct-hash').ActorQueryOperationDistinctHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_construct = new (require('@comunica/actor-query-operation-construct').ActorQueryOperationConstruct)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#construct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_extend = new (require('@comunica/actor-query-operation-extend').ActorQueryOperationExtend)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#extend',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_filter = new (require('@comunica/actor-query-operation-filter-sparqlee').ActorQueryOperationFilterSparqlee)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#filter',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_from = new (require('@comunica/actor-query-operation-from-quad').ActorQueryOperationFromQuad)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#from',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_group = new (require('@comunica/actor-query-operation-group').ActorQueryOperationGroup)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#group',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_nop = new (require('@comunica/actor-query-operation-nop').ActorQueryOperationNop)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#nop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_orderby = new (require('@comunica/actor-query-operation-orderby-sparqlee').ActorQueryOperationOrderBySparqlee)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#orderby',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_project = new (require('@comunica/actor-query-operation-project').ActorQueryOperationProject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#project',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_reduced = new (require('@comunica/actor-query-operation-reduced-hash').ActorQueryOperationReducedHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'cacheSize': 100,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#reduced',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_service = new (require('@comunica/actor-query-operation-service').ActorQueryOperationService)({\n 'forceSparqlEndpoint': false,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_slice = new (require('@comunica/actor-query-operation-slice').ActorQueryOperationSlice)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#slice',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_union = new (require('@comunica/actor-query-operation-union').ActorQueryOperationUnion)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#union',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_alt = new (require('@comunica/actor-query-operation-path-alt').ActorQueryOperationPathAlt)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-alt',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_inv = new (require('@comunica/actor-query-operation-path-inv').ActorQueryOperationPathInv)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-inv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_link = new (require('@comunica/actor-query-operation-path-link').ActorQueryOperationPathLink)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-link',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_nps = new (require('@comunica/actor-query-operation-path-nps').ActorQueryOperationPathNps)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-nps',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_one_or_more = new (require('@comunica/actor-query-operation-path-one-or-more').ActorQueryOperationPathOneOrMore)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-one-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_more = new (require('@comunica/actor-query-operation-path-zero-or-more').ActorQueryOperationPathZeroOrMore)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_one = new (require('@comunica/actor-query-operation-path-zero-or-one').ActorQueryOperationPathZeroOrOne)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-one',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_add = new (require('@comunica/actor-query-operation-update-add-rewrite').ActorQueryOperationAddRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-add',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_composite = new (require('@comunica/actor-query-operation-update-compositeupdate').ActorQueryOperationUpdateCompositeUpdate)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-composite',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_copy = new (require('@comunica/actor-query-operation-update-copy-rewrite').ActorQueryOperationCopyRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-copy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_move = new (require('@comunica/actor-query-operation-update-move-rewrite').ActorQueryOperationMoveRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-move',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_init_actors_query = new (require('@comunica/actor-init-query').ActorInitQuery)({\n 'mediatorOptimizeQueryOperation': urn_comunica_default_optimize_query_operation_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorQueryParse': urn_comunica_default_query_parse_mediators_main,\n 'mediatorQueryResultSerialize': urn_comunica_default_query_result_serialize_mediators_serialize,\n 'mediatorQueryResultSerializeMediaTypeCombiner': urn_comunica_default_query_result_serialize_mediators_mediaType,\n 'mediatorQueryResultSerializeMediaTypeFormatCombiner': urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat,\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'mediatorHttpInvalidate': urn_comunica_default_http_invalidate_mediators_main,\n 'logger': df_399_1,\n 'defaultQueryInputFormat': 'sparql',\n 'contextKeyShortcuts': {\"baseIRI\":\"@comunica/actor-init-query:baseIRI\",\"datetime\":\"@comunica/actor-http-memento:datetime\",\"destination\":\"@comunica/bus-rdf-update-quads:destination\",\"explain\":\"@comunica/actor-init-query:explain\",\"extensionFunctionCreator\":\"@comunica/actor-init-query:extensionFunctionCreator\",\"extensionFunctions\":\"@comunica/actor-init-query:extensionFunctions\",\"fetch\":\"@comunica/bus-http:fetch\",\"httpAuth\":\"@comunica/bus-http:auth\",\"httpIncludeCredentials\":\"@comunica/bus-http:include-credentials\",\"httpProxyHandler\":\"@comunica/actor-http-proxy:httpProxyHandler\",\"initialBindings\":\"@comunica/actor-init-query:initialBindings\",\"lenient\":\"@comunica/actor-init-query:lenient\",\"log\":\"@comunica/core:log\",\"queryFormat\":\"@comunica/actor-init-query:queryFormat\",\"queryTimestamp\":\"@comunica/actor-init-query:queryTimestamp\",\"readOnly\":\"@comunica/bus-query-operation:readOnly\",\"source\":\"@comunica/bus-rdf-resolve-quad-pattern:source\",\"sources\":\"@comunica/bus-rdf-resolve-quad-pattern:sources\"},\n 'name': 'urn:comunica:default:init/actors#query',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_rdf = new (require('@comunica/actor-query-result-serialize-rdf').ActorQueryResultSerializeRdf)({\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'mediatorMediaTypeCombiner': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorMediaTypeFormatCombiner': urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat,\n 'name': 'urn:comunica:default:query-result-serialize/actors#rdf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_stats = new (require('@comunica/actor-query-result-serialize-stats').ActorQueryResultSerializeStats)({\n 'httpObserver': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__2_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer,\n 'mediaTypePriorities': {\"stats\":0.5},\n 'mediaTypeFormats': {\"stats\":\"https://comunica.linkeddatafragments.org/#results_stats\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#stats',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_jsonld = new (require('@comunica/actor-rdf-parse-jsonld').ActorRdfParseJsonLd)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediaTypePriorities': {\"application/json\":0.5,\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/json\":\"http://www.w3.org/ns/formats/JSON-LD\",\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-parse/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql = new (require('@comunica/actor-rdf-resolve-hypermedia-sparql').ActorRdfResolveHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffix': true,\n 'forceHttpGet': false,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_patch_sparql_update = new (require('@comunica/actor-rdf-update-hypermedia-patch-sparql-update').ActorRdfUpdateHypermediaPatchSparqlUpdate)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#patch-sparql-update',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_put_ldp = new (require('@comunica/actor-rdf-update-hypermedia-put-ldp').ActorRdfUpdateHypermediaPutLdp)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediatorRdfSerializeMediatypes': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#put-ldp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_sparql = new (require('@comunica/actor-rdf-update-hypermedia-sparql').ActorRdfUpdateHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffixSparql': true,\n 'checkUrlSuffixUpdate': true,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_query_operation_actors_sparql_endpoint = new (require('@comunica/actor-query-operation-sparql-endpoint').ActorQueryOperationSparqlEndpoint)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffixSparql': true,\n 'checkUrlSuffixUpdate': true,\n 'forceHttpGet': false,\n 'name': 'urn:comunica:default:query-operation/actors#sparql-endpoint',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_dereference_rdf_actors_parse = new (require('@comunica/actor-dereference-rdf-parse').ActorDereferenceRdfParse)({\n 'mediatorDereference': urn_comunica_default_dereference_mediators_main,\n 'mediatorParse': urn_comunica_default_rdf_parse_mediators_parse,\n 'mediatorParseMediatypes': urn_comunica_default_rdf_parse_mediators_mediaType,\n 'mediaMappings': {\"htm\":\"text/html\",\"html\":\"text/html\",\"json\":\"application/json\",\"jsonld\":\"application/ld+json\",\"n3\":\"text/n3\",\"nq\":\"application/n-quads\",\"nquads\":\"application/n-quads\",\"nt\":\"application/n-triples\",\"ntriples\":\"application/n-triples\",\"owl\":\"application/rdf+xml\",\"rdf\":\"application/rdf+xml\",\"rdfxml\":\"application/rdf+xml\",\"svg\":\"image/svg+xml\",\"svgz\":\"image/svg+xml\",\"trig\":\"application/trig\",\"ttl\":\"text/turtle\",\"turtle\":\"text/turtle\",\"xht\":\"application/xhtml+xml\",\"xhtml\":\"application/xhtml+xml\",\"xml\":\"application/xml\"},\n 'name': 'urn:comunica:default:dereference-rdf/actors#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_script = new (require('@comunica/actor-rdf-parse-html-script').ActorRdfParseHtmlScript)({\n 'mediatorRdfParseMediatypes': urn_comunica_default_rdf_parse_mediators_mediaType,\n 'mediatorRdfParseHandle': urn_comunica_default_rdf_parse_mediators_parse,\n 'name': 'urn:comunica:default:rdf-parse-html/actors#script',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_none = new (require('@comunica/actor-rdf-join-inner-none').ActorRdfJoinNone)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_single = new (require('@comunica/actor-rdf-join-inner-single').ActorRdfJoinSingle)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-single',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_empty = new (require('@comunica/actor-rdf-join-inner-multi-empty').ActorRdfJoinMultiEmpty)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-empty',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind = new (require('@comunica/actor-rdf-join-inner-multi-bind').ActorRdfJoinMultiBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_hash = new (require('@comunica/actor-rdf-join-inner-hash').ActorRdfJoinHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_symmetric_hash = new (require('@comunica/actor-rdf-join-inner-symmetrichash').ActorRdfJoinSymmetricHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-symmetric-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_nested_loop = new (require('@comunica/actor-rdf-join-inner-nestedloop').ActorRdfJoinNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash = new (require('@comunica/actor-rdf-join-minus-hash').ActorRdfJoinMinusHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash_undef = new (require('@comunica/actor-rdf-join-minus-hash-undef').ActorRdfJoinMinusHashUndef)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash-undef',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_bind = new (require('@comunica/actor-rdf-join-optional-bind').ActorRdfJoinOptionalBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_nested_loop = new (require('@comunica/actor-rdf-join-optional-nestedloop').ActorRdfJoinOptionalNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_actors_qpf = new (require('@comunica/actor-rdf-resolve-hypermedia-qpf').ActorRdfResolveHypermediaQpf)({\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'subjectUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#subject',\n 'predicateUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate',\n 'objectUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#object',\n 'graphUri': 'http://www.w3.org/ns/sparql-service-description#graph',\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/actors#qpf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_hypermedia = new (require('@comunica/actor-rdf-resolve-quad-pattern-hypermedia').ActorRdfResolveQuadPatternHypermedia)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_resolve_quad_pattern_hypermedia__2_0_0_components_ActorRdfResolveQuadPatternHypermedia_jsonld_IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator,\n 'maxIterators': 64,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorRdfResolveHypermedia': urn_comunica_default_rdf_resolve_hypermedia_mediators_main,\n 'mediatorRdfResolveHypermediaLinks': urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main,\n 'mediatorRdfResolveHypermediaLinksQueue': urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_hypermedia = new (require('@comunica/actor-rdf-update-quads-hypermedia').ActorRdfUpdateQuadsHypermedia)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_update_quads_hypermedia__2_0_0_components_ActorRdfUpdateQuadsHypermedia_jsonld_IActorRdfUpdateQuadsHypermediaArgs_default_invalidator,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorRdfUpdateHypermedia': urn_comunica_default_rdf_update_hypermedia_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-quads/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_clear = new (require('@comunica/actor-query-operation-update-clear').ActorQueryOperationClear)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-clear',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_create = new (require('@comunica/actor-query-operation-update-create').ActorQueryOperationCreate)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-create',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_delete_insert = new (require('@comunica/actor-query-operation-update-deleteinsert').ActorQueryOperationUpdateDeleteInsert)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-delete-insert',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_drop = new (require('@comunica/actor-query-operation-update-drop').ActorQueryOperationDrop)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-drop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_load = new (require('@comunica/actor-query-operation-update-load').ActorQueryOperationLoad)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-load',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_join = new (require('@comunica/actor-query-operation-join').ActorQueryOperationJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_leftjoin = new (require('@comunica/actor-query-operation-leftjoin').ActorQueryOperationLeftJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#leftjoin',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_minus = new (require('@comunica/actor-query-operation-minus').ActorQueryOperationMinus)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#minus',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_seq = new (require('@comunica/actor-query-operation-path-seq').ActorQueryOperationPathSeq)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-seq',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest = new (require('@comunica/actor-rdf-join-inner-multi-smallest').ActorRdfJoinMultiSmallest)({\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_query_operation_actors_quadpattern = new (require('@comunica/actor-query-operation-quadpattern').ActorQueryOperationQuadpattern)({\n 'mediatorResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#quadpattern',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_federated = new (require('@comunica/actor-rdf-resolve-quad-pattern-federated').ActorRdfResolveQuadPatternFederated)({\n 'mediatorResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'skipEmptyPatterns': false,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#federated',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_http_actors_proxy = new (require('@comunica/actor-http-proxy').ActorHttpProxy)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'name': 'urn:comunica:default:http/actors#proxy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus,\n 'beforeActors': [\n urn_comunica_default_http_actors_fetch\n]\n});\nconst urn_comunica_default_dereference_actors_http = new (require('@comunica/actor-dereference-http').ActorDereferenceHttp)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'maxAcceptHeaderLength': 1024,\n 'maxAcceptHeaderLengthBrowser': 128,\n 'name': 'urn:comunica:default:dereference/actors#http',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus,\n 'beforeActors': [\n urn_comunica_default_dereference_actors_fallback\n]\n});\nconst urn_comunica_default_Runner = (https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus, [\n urn_comunica_default_context_preprocess_actors_source_to_destination,\n urn_comunica_default_hash_bindings_actors_sha1,\n urn_comunica_default_init_actors_query,\n urn_comunica_default_optimize_query_operation_actors_join_bgp,\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join,\n urn_comunica_default_optimize_query_operation_actors_join_connected,\n urn_comunica_default_query_parse_actors_sparql,\n urn_comunica_default_query_parse_actors_graphql,\n urn_comunica_default_query_result_serialize_actors_json,\n urn_comunica_default_query_result_serialize_actors_rdf,\n urn_comunica_default_query_result_serialize_actors_simple,\n urn_comunica_default_query_result_serialize_actors_csv,\n urn_comunica_default_query_result_serialize_actors_sparql_json,\n urn_comunica_default_query_result_serialize_actors_sparql_tsv,\n urn_comunica_default_query_result_serialize_actors_sparql_xml,\n urn_comunica_default_query_result_serialize_actors_stats,\n urn_comunica_default_query_result_serialize_actors_table,\n urn_comunica_default_query_result_serialize_actors_tree,\n urn_comunica_default_dereference_actors_http,\n urn_comunica_default_dereference_actors_fallback,\n urn_comunica_default_dereference_rdf_actors_parse,\n urn_comunica_default_rdf_join_entries_sort_actors_cardinality,\n urn_comunica_default_rdf_join_selectivity_actors_variable_counting,\n urn_comunica_default_rdf_metadata_actors_primary_topic,\n urn_comunica_default_rdf_metadata_actors_all,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_controls,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_count,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_pagesize,\n urn_comunica_default_rdf_metadata_extract_actors_request_time,\n urn_comunica_default_rdf_metadata_extract_actors_allow_http_methods,\n urn_comunica_default_rdf_metadata_extract_actors_put_accepted,\n urn_comunica_default_rdf_metadata_extract_actors_patch_sparql_update,\n urn_comunica_default_rdf_metadata_extract_actors_sparql_service,\n urn_comunica_default_rdf_parse_actors_n3,\n urn_comunica_default_rdf_parse_actors_jsonld,\n urn_comunica_default_rdf_parse_actors_rdfxml,\n urn_comunica_default_rdf_parse_actors_xmlrdfa,\n urn_comunica_default_rdf_parse_actors_html,\n urn_comunica_default_rdf_parse_html_actors_microdata,\n urn_comunica_default_rdf_parse_html_actors_rdfa,\n urn_comunica_default_rdf_parse_html_actors_script,\n urn_comunica_default_rdf_resolve_hypermedia_actors_qpf,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql,\n urn_comunica_default_rdf_resolve_hypermedia_actors_none,\n urn_comunica_default_rdf_resolve_hypermedia_links_actors_next,\n urn_comunica_default_rdf_resolve_hypermedia_links_queue_actors_fifo,\n urn_comunica_default_rdf_serialize_actors_n3,\n urn_comunica_default_rdf_serialize_actors_jsonld,\n urn_comunica_default_rdf_update_hypermedia_actors_patch_sparql_update,\n urn_comunica_default_rdf_update_hypermedia_actors_put_ldp,\n urn_comunica_default_rdf_update_hypermedia_actors_sparql,\n urn_comunica_default_rdf_update_quads_actors_hypermedia,\n urn_comunica_default_rdf_update_quads_actors_rdfjs_store,\n urn_comunica_default_http_actors_proxy,\n urn_comunica_default_http_actors_fetch,\n urn_comunica_default_query_operation_actors_ask,\n urn_comunica_default_query_operation_actors_bgp,\n urn_comunica_default_query_operation_actors_describe,\n urn_comunica_default_query_operation_actors_distinct,\n urn_comunica_default_query_operation_actors_construct,\n urn_comunica_default_query_operation_actors_extend,\n urn_comunica_default_query_operation_actors_filter,\n urn_comunica_default_query_operation_actors_from,\n urn_comunica_default_query_operation_actors_group,\n urn_comunica_default_query_operation_actors_join,\n urn_comunica_default_query_operation_actors_leftjoin,\n urn_comunica_default_query_operation_actors_minus,\n urn_comunica_default_query_operation_actors_nop,\n urn_comunica_default_query_operation_actors_orderby,\n urn_comunica_default_query_operation_actors_project,\n urn_comunica_default_query_operation_actors_quadpattern,\n urn_comunica_default_query_operation_actors_reduced,\n urn_comunica_default_query_operation_actors_service,\n urn_comunica_default_query_operation_actors_slice,\n urn_comunica_default_query_operation_actors_sparql_endpoint,\n urn_comunica_default_query_operation_actors_union,\n urn_comunica_default_query_operation_actors_values,\n urn_comunica_default_query_operation_actors_path_alt,\n urn_comunica_default_query_operation_actors_path_inv,\n urn_comunica_default_query_operation_actors_path_link,\n urn_comunica_default_query_operation_actors_path_nps,\n urn_comunica_default_query_operation_actors_path_one_or_more,\n urn_comunica_default_query_operation_actors_path_seq,\n urn_comunica_default_query_operation_actors_path_zero_or_more,\n urn_comunica_default_query_operation_actors_path_zero_or_one,\n urn_comunica_default_query_operation_actors_update_add,\n urn_comunica_default_query_operation_actors_update_clear,\n urn_comunica_default_query_operation_actors_update_composite,\n urn_comunica_default_query_operation_actors_update_copy,\n urn_comunica_default_query_operation_actors_update_create,\n urn_comunica_default_query_operation_actors_update_delete_insert,\n urn_comunica_default_query_operation_actors_update_drop,\n urn_comunica_default_query_operation_actors_update_load,\n urn_comunica_default_query_operation_actors_update_move,\n urn_comunica_default_rdf_join_actors_inner_none,\n urn_comunica_default_rdf_join_actors_inner_single,\n urn_comunica_default_rdf_join_actors_inner_multi_empty,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_minus_hash,\n urn_comunica_default_rdf_join_actors_minus_hash_undef,\n urn_comunica_default_rdf_join_actors_optional_bind,\n urn_comunica_default_rdf_join_actors_optional_nested_loop,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_federated,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_hypermedia,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_rdfjs_source\n]);\nmodule.exports = urn_comunica_default_init_actors_query;\n\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2021 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (object === null || typeof object !== 'object' || object.toJSON != null) {\n return JSON.stringify(object);\n }\n\n if (Array.isArray(object)) {\n return '[' + object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return t + comma + serialize(value);\n }, '') + ']';\n }\n\n return '{' + Object.keys(object).sort().reduce((t, cv, ci) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return t + comma + serialize(cv) + ':' + serialize(object[cv]);\n }, '') + '}';\n};\n","(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(typeof self !== 'undefined' ? self : this);\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeNames = exports.elementNames = void 0;\nexports.elementNames = new Map([\n [\"altglyph\", \"altGlyph\"],\n [\"altglyphdef\", \"altGlyphDef\"],\n [\"altglyphitem\", \"altGlyphItem\"],\n [\"animatecolor\", \"animateColor\"],\n [\"animatemotion\", \"animateMotion\"],\n [\"animatetransform\", \"animateTransform\"],\n [\"clippath\", \"clipPath\"],\n [\"feblend\", \"feBlend\"],\n [\"fecolormatrix\", \"feColorMatrix\"],\n [\"fecomponenttransfer\", \"feComponentTransfer\"],\n [\"fecomposite\", \"feComposite\"],\n [\"feconvolvematrix\", \"feConvolveMatrix\"],\n [\"fediffuselighting\", \"feDiffuseLighting\"],\n [\"fedisplacementmap\", \"feDisplacementMap\"],\n [\"fedistantlight\", \"feDistantLight\"],\n [\"fedropshadow\", \"feDropShadow\"],\n [\"feflood\", \"feFlood\"],\n [\"fefunca\", \"feFuncA\"],\n [\"fefuncb\", \"feFuncB\"],\n [\"fefuncg\", \"feFuncG\"],\n [\"fefuncr\", \"feFuncR\"],\n [\"fegaussianblur\", \"feGaussianBlur\"],\n [\"feimage\", \"feImage\"],\n [\"femerge\", \"feMerge\"],\n [\"femergenode\", \"feMergeNode\"],\n [\"femorphology\", \"feMorphology\"],\n [\"feoffset\", \"feOffset\"],\n [\"fepointlight\", \"fePointLight\"],\n [\"fespecularlighting\", \"feSpecularLighting\"],\n [\"fespotlight\", \"feSpotLight\"],\n [\"fetile\", \"feTile\"],\n [\"feturbulence\", \"feTurbulence\"],\n [\"foreignobject\", \"foreignObject\"],\n [\"glyphref\", \"glyphRef\"],\n [\"lineargradient\", \"linearGradient\"],\n [\"radialgradient\", \"radialGradient\"],\n [\"textpath\", \"textPath\"],\n]);\nexports.attributeNames = new Map([\n [\"definitionurl\", \"definitionURL\"],\n [\"attributename\", \"attributeName\"],\n [\"attributetype\", \"attributeType\"],\n [\"basefrequency\", \"baseFrequency\"],\n [\"baseprofile\", \"baseProfile\"],\n [\"calcmode\", \"calcMode\"],\n [\"clippathunits\", \"clipPathUnits\"],\n [\"diffuseconstant\", \"diffuseConstant\"],\n [\"edgemode\", \"edgeMode\"],\n [\"filterunits\", \"filterUnits\"],\n [\"glyphref\", \"glyphRef\"],\n [\"gradienttransform\", \"gradientTransform\"],\n [\"gradientunits\", \"gradientUnits\"],\n [\"kernelmatrix\", \"kernelMatrix\"],\n [\"kernelunitlength\", \"kernelUnitLength\"],\n [\"keypoints\", \"keyPoints\"],\n [\"keysplines\", \"keySplines\"],\n [\"keytimes\", \"keyTimes\"],\n [\"lengthadjust\", \"lengthAdjust\"],\n [\"limitingconeangle\", \"limitingConeAngle\"],\n [\"markerheight\", \"markerHeight\"],\n [\"markerunits\", \"markerUnits\"],\n [\"markerwidth\", \"markerWidth\"],\n [\"maskcontentunits\", \"maskContentUnits\"],\n [\"maskunits\", \"maskUnits\"],\n [\"numoctaves\", \"numOctaves\"],\n [\"pathlength\", \"pathLength\"],\n [\"patterncontentunits\", \"patternContentUnits\"],\n [\"patterntransform\", \"patternTransform\"],\n [\"patternunits\", \"patternUnits\"],\n [\"pointsatx\", \"pointsAtX\"],\n [\"pointsaty\", \"pointsAtY\"],\n [\"pointsatz\", \"pointsAtZ\"],\n [\"preservealpha\", \"preserveAlpha\"],\n [\"preserveaspectratio\", \"preserveAspectRatio\"],\n [\"primitiveunits\", \"primitiveUnits\"],\n [\"refx\", \"refX\"],\n [\"refy\", \"refY\"],\n [\"repeatcount\", \"repeatCount\"],\n [\"repeatdur\", \"repeatDur\"],\n [\"requiredextensions\", \"requiredExtensions\"],\n [\"requiredfeatures\", \"requiredFeatures\"],\n [\"specularconstant\", \"specularConstant\"],\n [\"specularexponent\", \"specularExponent\"],\n [\"spreadmethod\", \"spreadMethod\"],\n [\"startoffset\", \"startOffset\"],\n [\"stddeviation\", \"stdDeviation\"],\n [\"stitchtiles\", \"stitchTiles\"],\n [\"surfacescale\", \"surfaceScale\"],\n [\"systemlanguage\", \"systemLanguage\"],\n [\"tablevalues\", \"tableValues\"],\n [\"targetx\", \"targetX\"],\n [\"targety\", \"targetY\"],\n [\"textlength\", \"textLength\"],\n [\"viewbox\", \"viewBox\"],\n [\"viewtarget\", \"viewTarget\"],\n [\"xchannelselector\", \"xChannelSelector\"],\n [\"ychannelselector\", \"yChannelSelector\"],\n [\"zoomandpan\", \"zoomAndPan\"],\n]);\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Module dependencies\n */\nvar ElementType = __importStar(require(\"domelementtype\"));\nvar entities_1 = require(\"entities\");\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nvar foreignNames_1 = require(\"./foreignNames\");\nvar unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n if (!attributes)\n return;\n return Object.keys(attributes)\n .map(function (key) {\n var _a, _b;\n var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = foreignNames_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return key + \"=\\\"\" + (opts.decodeEntities !== false\n ? entities_1.encodeXML(value)\n : value.replace(/\"/g, \""\")) + \"\\\"\";\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nvar singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nfunction render(node, options) {\n if (options === void 0) { options = {}; }\n var nodes = \"length\" in node ? node : [node];\n var output = \"\";\n for (var i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexports.default = render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n case ElementType.Directive:\n case ElementType.Doctype:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nvar foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = foreignNames_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: false });\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: \"foreign\" });\n }\n var tag = \"<\" + elem.name;\n var attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += \" \" + attribs;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += \"\";\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return \"<\" + elem.data + \">\";\n}\nfunction renderText(elem, opts) {\n var data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (opts.decodeEntities !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data = entities_1.encodeXML(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return \"\";\n}\nfunction renderComment(elem) {\n return \"\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for `.\n this.sequenceIndex = Number(c === 60 /* Lt */);\n }\n };\n Tokenizer.prototype.stateCDATASequence = function (c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this._state = 21 /* InCommentLike */;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this._index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this._state = 16 /* InDeclaration */;\n this.stateInDeclaration(c); // Reconsume the character\n }\n };\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n Tokenizer.prototype.fastForwardTo = function (c) {\n while (++this._index < this.buffer.length) {\n if (this.buffer.charCodeAt(this._index) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this._index = this.buffer.length - 1;\n return false;\n };\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n Tokenizer.prototype.stateInCommentLike = function (c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n // Remove 2 trailing chars\n var section = this.buffer.slice(this.sectionStart, this._index - 2);\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(section);\n }\n else {\n this.cbs.oncomment(section);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this._index + 1;\n this._state = 1 /* Text */;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n };\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n Tokenizer.prototype.isTagStartChar = function (c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n };\n Tokenizer.prototype.startSpecial = function (sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this._state = 23 /* SpecialStartSequence */;\n };\n Tokenizer.prototype.stateBeforeTagName = function (c) {\n if (c === 33 /* ExclamationMark */) {\n this._state = 15 /* BeforeDeclaration */;\n this.sectionStart = this._index + 1;\n }\n else if (c === 63 /* Questionmark */) {\n this._state = 17 /* InProcessingInstruction */;\n this.sectionStart = this._index + 1;\n }\n else if (this.isTagStartChar(c)) {\n var lower = c | 0x20;\n this.sectionStart = this._index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this._state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? 22 /* BeforeSpecialS */\n : 3 /* InTagName */;\n }\n }\n else if (c === 47 /* Slash */) {\n this._state = 5 /* BeforeClosingTagName */;\n }\n else {\n this._state = 1 /* Text */;\n this.stateText(c);\n }\n };\n Tokenizer.prototype.stateInTagName = function (c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.getSection());\n this.sectionStart = -1;\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateBeforeClosingTagName = function (c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === 62 /* Gt */) {\n this._state = 1 /* Text */;\n }\n else {\n this._state = this.isTagStartChar(c)\n ? 6 /* InClosingTagName */\n : 20 /* InSpecialComment */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInClosingTagName = function (c) {\n if (c === 62 /* Gt */ || isWhitespace(c)) {\n this.cbs.onclosetag(this.getSection());\n this.sectionStart = -1;\n this._state = 7 /* AfterClosingTagName */;\n this.stateAfterClosingTagName(c);\n }\n };\n Tokenizer.prototype.stateAfterClosingTagName = function (c) {\n // Skip everything until \">\"\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeName = function (c) {\n if (c === 62 /* Gt */) {\n this.cbs.onopentagend();\n if (this.isSpecial) {\n this._state = 24 /* InSpecialTag */;\n this.sequenceIndex = 0;\n }\n else {\n this._state = 1 /* Text */;\n }\n this.baseState = this._state;\n this.sectionStart = this._index + 1;\n }\n else if (c === 47 /* Slash */) {\n this._state = 4 /* InSelfClosingTag */;\n }\n else if (!isWhitespace(c)) {\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInSelfClosingTag = function (c) {\n if (c === 62 /* Gt */) {\n this.cbs.onselfclosingtag();\n this._state = 1 /* Text */;\n this.baseState = 1 /* Text */;\n this.sectionStart = this._index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateInAttributeName = function (c) {\n if (c === 61 /* Eq */ || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.getSection());\n this.sectionStart = -1;\n this._state = 10 /* AfterAttributeName */;\n this.stateAfterAttributeName(c);\n }\n };\n Tokenizer.prototype.stateAfterAttributeName = function (c) {\n if (c === 61 /* Eq */) {\n this._state = 11 /* BeforeAttributeValue */;\n }\n else if (c === 47 /* Slash */ || c === 62 /* Gt */) {\n this.cbs.onattribend(undefined);\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(undefined);\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeValue = function (c) {\n if (c === 34 /* DoubleQuote */) {\n this._state = 12 /* InAttributeValueDq */;\n this.sectionStart = this._index + 1;\n }\n else if (c === 39 /* SingleQuote */) {\n this._state = 13 /* InAttributeValueSq */;\n this.sectionStart = this._index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this._index;\n this._state = 14 /* InAttributeValueNq */;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n };\n Tokenizer.prototype.handleInAttributeValue = function (c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.getSection());\n this.sectionStart = -1;\n this.cbs.onattribend(String.fromCharCode(quote));\n this._state = 8 /* BeforeAttributeName */;\n }\n else if (this.decodeEntities && c === 38 /* Amp */) {\n this.baseState = this._state;\n this._state = 25 /* BeforeEntity */;\n }\n };\n Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {\n this.handleInAttributeValue(c, 34 /* DoubleQuote */);\n };\n Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {\n this.handleInAttributeValue(c, 39 /* SingleQuote */);\n };\n Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {\n if (isWhitespace(c) || c === 62 /* Gt */) {\n this.cbs.onattribdata(this.getSection());\n this.sectionStart = -1;\n this.cbs.onattribend(null);\n this._state = 8 /* BeforeAttributeName */;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === 38 /* Amp */) {\n this.baseState = this._state;\n this._state = 25 /* BeforeEntity */;\n }\n };\n Tokenizer.prototype.stateBeforeDeclaration = function (c) {\n if (c === 91 /* OpeningSquareBracket */) {\n this._state = 19 /* CDATASequence */;\n this.sequenceIndex = 0;\n }\n else {\n this._state =\n c === 45 /* Dash */\n ? 18 /* BeforeComment */\n : 16 /* InDeclaration */;\n }\n };\n Tokenizer.prototype.stateInDeclaration = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.ondeclaration(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateInProcessingInstruction = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.onprocessinginstruction(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeComment = function (c) {\n if (c === 45 /* Dash */) {\n this._state = 21 /* InCommentLike */;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this._index + 1;\n }\n else {\n this._state = 16 /* InDeclaration */;\n }\n };\n Tokenizer.prototype.stateInSpecialComment = function (c) {\n if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {\n this.cbs.oncomment(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeSpecialS = function (c) {\n var lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this._state = 3 /* InTagName */;\n this.stateInTagName(c); // Consume the token again\n }\n };\n Tokenizer.prototype.stateBeforeEntity = function (c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n if (c === 35 /* Num */) {\n this._state = 26 /* BeforeNumericEntity */;\n }\n else if (c === 38 /* Amp */) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.trieResult = null;\n this._state = 27 /* InNamedEntity */;\n this.stateInNamedEntity(c);\n }\n };\n Tokenizer.prototype.stateInNamedEntity = function (c) {\n this.entityExcess += 1;\n this.trieIndex = (0, decode_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this._index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n // If the branch is a value, store it and continue\n if (this.trieCurrent & decode_1.BinTrieFlags.HAS_VALUE) {\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== 59 /* Semi */) {\n // No need to consider multi-byte values, as the legacy entity is always a single byte\n this.trieIndex += 1;\n }\n else {\n // Add 1 as we have already incremented the excess\n var entityStart = this._index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));\n }\n // If this is a surrogate pair, combine the higher bits from the node with the next byte\n this.trieResult =\n this.trieCurrent & decode_1.BinTrieFlags.MULTI_BYTE\n ? String.fromCharCode(this.entityTrie[++this.trieIndex], this.entityTrie[++this.trieIndex])\n : String.fromCharCode(this.entityTrie[++this.trieIndex]);\n this.entityExcess = 0;\n this.sectionStart = this._index + 1;\n }\n }\n };\n Tokenizer.prototype.emitNamedEntity = function () {\n if (this.trieResult) {\n this.emitPartial(this.trieResult);\n }\n this._state = this.baseState;\n };\n Tokenizer.prototype.stateBeforeNumericEntity = function (c) {\n if ((c | 0x20) === 120 /* LowerX */) {\n this.entityExcess++;\n this._state = 29 /* InHexEntity */;\n }\n else {\n this._state = 28 /* InNumericEntity */;\n this.stateInNumericEntity(c);\n }\n };\n Tokenizer.prototype.decodeNumericEntity = function (base, strict) {\n var entityStart = this._index - this.entityExcess - 1;\n var numberStart = entityStart + 2 + (base >> 4);\n if (numberStart !== this._index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));\n }\n // Parse entity\n var entity = this.buffer.substring(numberStart, this._index);\n var parsed = parseInt(entity, base);\n this.emitPartial((0, decode_codepoint_1.default)(parsed));\n this.sectionStart = this._index + Number(strict);\n }\n this._state = this.baseState;\n };\n Tokenizer.prototype.stateInNumericEntity = function (c) {\n if (c === 59 /* Semi */) {\n this.decodeNumericEntity(10, true);\n }\n else if (!isNumber(c)) {\n if (this.allowLegacyEntity()) {\n this.decodeNumericEntity(10, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n else {\n this.entityExcess++;\n }\n };\n Tokenizer.prototype.stateInHexEntity = function (c) {\n if (c === 59 /* Semi */) {\n this.decodeNumericEntity(16, true);\n }\n else if ((c < 97 /* LowerA */ || c > 102 /* LowerF */) &&\n (c < 65 /* UpperA */ || c > 70 /* UpperF */) &&\n !isNumber(c)) {\n if (this.allowLegacyEntity()) {\n this.decodeNumericEntity(16, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n else {\n this.entityExcess++;\n }\n };\n Tokenizer.prototype.allowLegacyEntity = function () {\n return (!this.xmlMode &&\n (this.baseState === 1 /* Text */ ||\n this.baseState === 24 /* InSpecialTag */));\n };\n /**\n * Remove data that has already been consumed from the buffer.\n */\n Tokenizer.prototype.cleanup = function () {\n // If we are inside of text, emit what we already have.\n if (this.running &&\n this.sectionStart !== this._index &&\n (this._state === 1 /* Text */ ||\n (this._state === 24 /* InSpecialTag */ &&\n this.sequenceIndex === 0))) {\n // TODO: We could emit attribute data here as well.\n this.cbs.ontext(this.buffer.substr(this.sectionStart));\n this.sectionStart = this._index;\n }\n var start = this.sectionStart < 0 ? this._index : this.sectionStart;\n this.buffer =\n start === this.buffer.length ? \"\" : this.buffer.substr(start);\n this._index -= start;\n this.bufferOffset += start;\n if (this.sectionStart > 0) {\n this.sectionStart = 0;\n }\n };\n Tokenizer.prototype.shouldContinue = function () {\n return this._index < this.buffer.length && this.running;\n };\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n Tokenizer.prototype.parse = function () {\n while (this.shouldContinue()) {\n var c = this.buffer.charCodeAt(this._index);\n if (this._state === 1 /* Text */) {\n this.stateText(c);\n }\n else if (this._state === 23 /* SpecialStartSequence */) {\n this.stateSpecialStartSequence(c);\n }\n else if (this._state === 24 /* InSpecialTag */) {\n this.stateInSpecialTag(c);\n }\n else if (this._state === 19 /* CDATASequence */) {\n this.stateCDATASequence(c);\n }\n else if (this._state === 12 /* InAttributeValueDq */) {\n this.stateInAttributeValueDoubleQuotes(c);\n }\n else if (this._state === 9 /* InAttributeName */) {\n this.stateInAttributeName(c);\n }\n else if (this._state === 21 /* InCommentLike */) {\n this.stateInCommentLike(c);\n }\n else if (this._state === 20 /* InSpecialComment */) {\n this.stateInSpecialComment(c);\n }\n else if (this._state === 8 /* BeforeAttributeName */) {\n this.stateBeforeAttributeName(c);\n }\n else if (this._state === 3 /* InTagName */) {\n this.stateInTagName(c);\n }\n else if (this._state === 6 /* InClosingTagName */) {\n this.stateInClosingTagName(c);\n }\n else if (this._state === 2 /* BeforeTagName */) {\n this.stateBeforeTagName(c);\n }\n else if (this._state === 10 /* AfterAttributeName */) {\n this.stateAfterAttributeName(c);\n }\n else if (this._state === 13 /* InAttributeValueSq */) {\n this.stateInAttributeValueSingleQuotes(c);\n }\n else if (this._state === 11 /* BeforeAttributeValue */) {\n this.stateBeforeAttributeValue(c);\n }\n else if (this._state === 5 /* BeforeClosingTagName */) {\n this.stateBeforeClosingTagName(c);\n }\n else if (this._state === 7 /* AfterClosingTagName */) {\n this.stateAfterClosingTagName(c);\n }\n else if (this._state === 22 /* BeforeSpecialS */) {\n this.stateBeforeSpecialS(c);\n }\n else if (this._state === 14 /* InAttributeValueNq */) {\n this.stateInAttributeValueNoQuotes(c);\n }\n else if (this._state === 4 /* InSelfClosingTag */) {\n this.stateInSelfClosingTag(c);\n }\n else if (this._state === 16 /* InDeclaration */) {\n this.stateInDeclaration(c);\n }\n else if (this._state === 15 /* BeforeDeclaration */) {\n this.stateBeforeDeclaration(c);\n }\n else if (this._state === 18 /* BeforeComment */) {\n this.stateBeforeComment(c);\n }\n else if (this._state === 17 /* InProcessingInstruction */) {\n this.stateInProcessingInstruction(c);\n }\n else if (this._state === 27 /* InNamedEntity */) {\n this.stateInNamedEntity(c);\n }\n else if (this._state === 25 /* BeforeEntity */) {\n this.stateBeforeEntity(c);\n }\n else if (this._state === 29 /* InHexEntity */) {\n this.stateInHexEntity(c);\n }\n else if (this._state === 28 /* InNumericEntity */) {\n this.stateInNumericEntity(c);\n }\n else {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n this._index++;\n }\n this.cleanup();\n };\n Tokenizer.prototype.finish = function () {\n if (this._state === 27 /* InNamedEntity */) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this._index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n };\n /** Handle any trailing data. */\n Tokenizer.prototype.handleTrailingData = function () {\n var data = this.buffer.substr(this.sectionStart);\n if (this._state === 21 /* InCommentLike */) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(data);\n }\n else {\n this.cbs.oncomment(data);\n }\n }\n else if (this._state === 28 /* InNumericEntity */ &&\n this.allowLegacyEntity()) {\n this.decodeNumericEntity(10, false);\n // All trailing data will have been consumed\n }\n else if (this._state === 29 /* InHexEntity */ &&\n this.allowLegacyEntity()) {\n this.decodeNumericEntity(16, false);\n // All trailing data will have been consumed\n }\n else if (this._state === 3 /* InTagName */ ||\n this._state === 8 /* BeforeAttributeName */ ||\n this._state === 11 /* BeforeAttributeValue */ ||\n this._state === 10 /* AfterAttributeName */ ||\n this._state === 9 /* InAttributeName */ ||\n this._state === 13 /* InAttributeValueSq */ ||\n this._state === 12 /* InAttributeValueDq */ ||\n this._state === 14 /* InAttributeValueNq */ ||\n this._state === 6 /* InClosingTagName */) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(data);\n }\n };\n Tokenizer.prototype.getSection = function () {\n return this.buffer.substring(this.sectionStart, this._index);\n };\n Tokenizer.prototype.emitPartial = function (value) {\n if (this.baseState !== 1 /* Text */ &&\n this.baseState !== 24 /* InSpecialTag */) {\n this.cbs.onattribdata(value);\n }\n else {\n this.cbs.ontext(value);\n }\n };\n return Tokenizer;\n}());\nexports.default = Tokenizer;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WritableStream = void 0;\nvar Parser_1 = require(\"./Parser\");\n/*\n * NOTE: If either of these two imports produces a type error,\n * please update your @types/node dependency!\n */\nvar stream_1 = require(\"stream\");\nvar string_decoder_1 = require(\"string_decoder\");\n// Following the example in https://nodejs.org/api/stream.html#stream_decoding_buffers_in_a_writable_stream\nfunction isBuffer(_chunk, encoding) {\n return encoding === \"buffer\";\n}\n/**\n * WritableStream makes the `Parser` interface available as a NodeJS stream.\n *\n * @see Parser\n */\nvar WritableStream = /** @class */ (function (_super) {\n __extends(WritableStream, _super);\n function WritableStream(cbs, options) {\n var _this = _super.call(this, { decodeStrings: false }) || this;\n _this._decoder = new string_decoder_1.StringDecoder();\n _this._parser = new Parser_1.Parser(cbs, options);\n return _this;\n }\n WritableStream.prototype._write = function (chunk, encoding, cb) {\n this._parser.write(isBuffer(chunk, encoding) ? this._decoder.write(chunk) : chunk);\n cb();\n };\n WritableStream.prototype._final = function (cb) {\n this._parser.end(this._decoder.end());\n cb();\n };\n return WritableStream;\n}(stream_1.Writable));\nexports.WritableStream = WritableStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseJsonLd = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst jsonld_streaming_parser_1 = require(\"jsonld-streaming-parser\");\nconst DocumentLoaderMediated_1 = require(\"./DocumentLoaderMediated\");\n/**\n * A JSON-LD RDF Parse actor that listens on the 'rdf-parse' bus.\n *\n * It is able to parse JSON-LD-based RDF serializations and announce the presence of them by media type.\n */\nclass ActorRdfParseJsonLd extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/ld+json\": 1.0,\n * \"application/json\": 0.5\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/ld+json\": \"http://www.w3.org/ns/formats/JSON-LD\",\n * \"application/json\": \"http://www.w3.org/ns/formats/JSON-LD\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async testHandle(action, mediaType, context) {\n if (context.has(context_entries_1.KeysRdfParseHtmlScript.processingHtmlScript) && mediaType !== 'application/ld+json') {\n throw new Error(`JSON-LD in script tags can only have media type 'application/ld+json'`);\n }\n if (!(mediaType in this.mediaTypePriorities) && !mediaType.endsWith('+json')) {\n throw new Error(`Unrecognized media type: ${mediaType}`);\n }\n return await this.testHandleChecked(action);\n }\n async runHandle(action, mediaType, actionContext) {\n const parser = jsonld_streaming_parser_1.JsonLdParser.fromHttpResponse(action.metadata?.baseIRI ?? '', mediaType, action.headers, {\n documentLoader: actionContext.get(context_entries_1.KeysRdfParseJsonLd.documentLoader) ||\n new DocumentLoaderMediated_1.DocumentLoaderMediated(this.mediatorHttp, actionContext),\n strictValues: actionContext.get(context_entries_1.KeysRdfParseJsonLd.strictValues),\n ...actionContext.get(context_entries_1.KeysRdfParseJsonLd.parserOptions),\n });\n const data = parser.import(action.data);\n return { data };\n }\n}\nexports.ActorRdfParseJsonLd = ActorRdfParseJsonLd;\n//# sourceMappingURL=ActorRdfParseJsonLd.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentLoaderMediated = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst jsonld_context_parser_1 = require(\"jsonld-context-parser\");\nconst stringifyStream = require(\"stream-to-string\");\n/**\n * A JSON-LD document loader that fetches over an HTTP bus using a given mediator.\n */\nclass DocumentLoaderMediated extends jsonld_context_parser_1.FetchDocumentLoader {\n constructor(mediatorHttp, context) {\n super(DocumentLoaderMediated.createFetcher(mediatorHttp, context));\n this.mediatorHttp = mediatorHttp;\n this.context = context;\n }\n static createFetcher(mediatorHttp, context) {\n return async (url, init) => {\n const response = await mediatorHttp.mediate({ input: url, init, context });\n response.json = async () => JSON.parse(await stringifyStream(bus_http_1.ActorHttp.toNodeReadable(response.body)));\n return response;\n };\n }\n}\nexports.DocumentLoaderMediated = DocumentLoaderMediated;\n//# sourceMappingURL=DocumentLoaderMediated.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseJsonLd\"), exports);\n__exportStar(require(\"./DocumentLoaderMediated\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseN3 = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst n3_1 = require(\"n3\");\n/**\n * An N3 RDF Parse actor that listens on the 'rdf-parse' bus.\n *\n * It is able to parse N3-based RDF serializations and announce the presence of them by media type.\n */\nclass ActorRdfParseN3 extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/n-quads\": 1.0,\n * \"application/trig\": 0.95,\n * \"application/n-triples\": 0.8,\n * \"text/turtle\": 0.6,\n * \"text/n3\": 0.35\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/n-quads\": \"http://www.w3.org/ns/formats/N-Quads\",\n * \"application/trig\": \"http://www.w3.org/ns/formats/TriG\",\n * \"application/n-triples\": \"http://www.w3.org/ns/formats/N-Triples\",\n * \"text/turtle\": \"http://www.w3.org/ns/formats/Turtle\",\n * \"text/n3\": \"http://www.w3.org/ns/formats/N3\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new n3_1.StreamParser({ baseIRI: action.metadata?.baseIRI }));\n return {\n data,\n metadata: {\n triples: mediaType === 'text/turtle' ||\n mediaType === 'application/n-triples' ||\n mediaType === 'text/n3',\n },\n };\n }\n}\nexports.ActorRdfParseN3 = ActorRdfParseN3;\n//# sourceMappingURL=ActorRdfParseN3.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseN3\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseRdfXml = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst rdfxml_streaming_parser_1 = require(\"rdfxml-streaming-parser\");\n/**\n * A comunica RDF/XML RDF Parse Actor.\n */\nclass ActorRdfParseRdfXml extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/rdf+xml\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/rdf+xml\": \"http://www.w3.org/ns/formats/RDF_XML\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new rdfxml_streaming_parser_1.RdfXmlParser({ baseIRI: action.metadata?.baseIRI }));\n return {\n data,\n metadata: { triples: true },\n };\n }\n}\nexports.ActorRdfParseRdfXml = ActorRdfParseRdfXml;\n//# sourceMappingURL=ActorRdfParseRdfXml.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseRdfXml\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseXmlRdfa = void 0;\nconst bus_rdf_parse_1 = require(\"@comunica/bus-rdf-parse\");\nconst rdfa_streaming_parser_1 = require(\"rdfa-streaming-parser\");\n/**\n * A comunica XML RDFa RDF Parse Actor.\n */\nclass ActorRdfParseXmlRdfa extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/xml\": 1.0,\n * \"text/xml\": 1.0,\n * \"image/svg+xml\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/xml\": \"http://www.w3.org/ns/formats/RDFa\",\n * \"text/xml\": \"http://www.w3.org/ns/formats/RDFa\",\n * \"image/svg+xml\": \"http://www.w3.org/ns/formats/RDFa\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const language = (action.headers && action.headers.get('content-language')) ?? undefined;\n action.data.on('error', error => data.emit('error', error));\n const data = action.data.pipe(new rdfa_streaming_parser_1.RdfaParser({ baseIRI: action.metadata?.baseIRI, profile: 'xml', language }));\n return { data, metadata: { triples: true } };\n }\n}\nexports.ActorRdfParseXmlRdfa = ActorRdfParseXmlRdfa;\n//# sourceMappingURL=ActorRdfParseXmlRdfa.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseXmlRdfa\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksNext = void 0;\nconst bus_rdf_resolve_hypermedia_links_1 = require(\"@comunica/bus-rdf-resolve-hypermedia-links\");\n/**\n * A comunica Next RDF Resolve Hypermedia Links Actor.\n */\nclass ActorRdfResolveHypermediaLinksNext extends bus_rdf_resolve_hypermedia_links_1.ActorRdfResolveHypermediaLinks {\n constructor(args) {\n super(args);\n }\n async test(action) {\n if (!action.metadata.next) {\n throw new Error(`Actor ${this.name} requires a 'next' metadata entry.`);\n }\n return true;\n }\n async run(action) {\n return { links: [{ url: action.metadata.next }] };\n }\n}\nexports.ActorRdfResolveHypermediaLinksNext = ActorRdfResolveHypermediaLinksNext;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksNext.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksNext\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksQueueFifo = void 0;\nconst bus_rdf_resolve_hypermedia_links_queue_1 = require(\"@comunica/bus-rdf-resolve-hypermedia-links-queue\");\nconst LinkQueueFifo_1 = require(\"./LinkQueueFifo\");\n/**\n * A comunica FIFO RDF Resolve Hypermedia Links Queue Actor.\n */\nclass ActorRdfResolveHypermediaLinksQueueFifo extends bus_rdf_resolve_hypermedia_links_queue_1.ActorRdfResolveHypermediaLinksQueue {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n return { linkQueue: new LinkQueueFifo_1.LinkQueueFifo() };\n }\n}\nexports.ActorRdfResolveHypermediaLinksQueueFifo = ActorRdfResolveHypermediaLinksQueueFifo;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksQueueFifo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkQueueFifo = void 0;\n/**\n * A link queue in FIFO (first-in first-out) order.\n */\nclass LinkQueueFifo {\n constructor() {\n this.links = [];\n }\n push(link) {\n this.links.push(link);\n return true;\n }\n getSize() {\n return this.links.length;\n }\n isEmpty() {\n return this.links.length === 0;\n }\n pop() {\n return this.links.shift();\n }\n peek() {\n return this.links[0];\n }\n}\nexports.LinkQueueFifo = LinkQueueFifo;\n//# sourceMappingURL=LinkQueueFifo.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksQueueFifo\"), exports);\n__exportStar(require(\"./LinkQueueFifo\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaNone = void 0;\nconst actor_rdf_resolve_quad_pattern_rdfjs_source_1 = require(\"@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source\");\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst rdf_store_stream_1 = require(\"rdf-store-stream\");\n/**\n * A comunica None RDF Resolve Hypermedia Actor.\n */\nclass ActorRdfResolveHypermediaNone extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'file');\n }\n async testMetadata(action) {\n return { filterFactor: 0 };\n }\n async run(action) {\n this.logInfo(action.context, `Identified as file source: ${action.url}`);\n return { source: new actor_rdf_resolve_quad_pattern_rdfjs_source_1.RdfJsQuadSource(await (0, rdf_store_stream_1.storeStream)(action.quads)) };\n }\n}\nexports.ActorRdfResolveHypermediaNone = ActorRdfResolveHypermediaNone;\n//# sourceMappingURL=ActorRdfResolveHypermediaNone.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaNone\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaQpf = void 0;\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst RdfSourceQpf_1 = require(\"./RdfSourceQpf\");\n/**\n * A comunica QPF RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveHypermediaQpf extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'qpf');\n }\n async testMetadata(action) {\n const { searchForm } = this.createSource(action.metadata, action.context);\n if (action.handledDatasets && action.handledDatasets[searchForm.dataset]) {\n throw new Error(`Actor ${this.name} can only be applied for the first page of a QPF dataset.`);\n }\n return { filterFactor: 1 };\n }\n /**\n * Look for the search form\n * @param {IActionRdfResolveHypermedia} action the metadata to look for the form.\n * @return {Promise} A promise resolving to a hypermedia form.\n */\n async run(action) {\n this.logInfo(action.context, `Identified as qpf source: ${action.url}`);\n const source = this.createSource(action.metadata, action.context, action.quads);\n return { source, dataset: source.searchForm.dataset };\n }\n createSource(metadata, context, quads) {\n return new RdfSourceQpf_1.RdfSourceQpf(this.mediatorMetadata, this.mediatorMetadataExtract, this.mediatorDereferenceRdf, this.subjectUri, this.predicateUri, this.objectUri, this.graphUri, metadata, context, quads);\n }\n}\nexports.ActorRdfResolveHypermediaQpf = ActorRdfResolveHypermediaQpf;\n//# sourceMappingURL=ActorRdfResolveHypermediaQpf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfSourceQpf = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * An RDF source that executes a quad pattern over a QPF interface and fetches its first page.\n */\nclass RdfSourceQpf {\n constructor(mediatorMetadata, mediatorMetadataExtract, mediatorDereferenceRdf, subjectUri, predicateUri, objectUri, graphUri, metadata, context, initialQuads) {\n this.mediatorMetadata = mediatorMetadata;\n this.mediatorMetadataExtract = mediatorMetadataExtract;\n this.mediatorDereferenceRdf = mediatorDereferenceRdf;\n this.subjectUri = subjectUri;\n this.predicateUri = predicateUri;\n this.objectUri = objectUri;\n this.graphUri = graphUri;\n this.context = context;\n this.cachedQuads = {};\n const searchForm = this.getSearchForm(metadata);\n if (!searchForm) {\n throw new Error('Illegal state: found no TPF/QPF search form anymore in metadata.');\n }\n this.searchForm = searchForm;\n this.defaultGraph = metadata.defaultGraph ? DF.namedNode(metadata.defaultGraph) : undefined;\n if (initialQuads) {\n let wrappedQuads = (0, asynciterator_1.wrap)(initialQuads);\n if (this.defaultGraph) {\n wrappedQuads = this.reverseMapQuadsToDefaultGraph(wrappedQuads);\n }\n wrappedQuads.setProperty('metadata', metadata);\n this.cacheQuads(wrappedQuads, DF.variable(''), DF.variable(''), DF.variable(''), DF.variable(''));\n }\n }\n /**\n * Get a first QPF search form.\n * @param {{[p: string]: any}} metadata A metadata object.\n * @return {ISearchForm} A search form, or null if none could be found.\n */\n getSearchForm(metadata) {\n if (!metadata.searchForms || !metadata.searchForms.values) {\n return;\n }\n // Find a quad pattern or triple pattern search form\n const { searchForms } = metadata;\n for (const searchForm of searchForms.values) {\n if (this.graphUri &&\n this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n this.graphUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 4) {\n return searchForm;\n }\n if (this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 3) {\n return searchForm;\n }\n }\n }\n /**\n * Create a QPF fragment IRI for the given quad pattern.\n * @param {ISearchForm} searchForm A search form.\n * @param {Term} subject A term.\n * @param {Term} predicate A term.\n * @param {Term} object A term.\n * @param {Term} graph A term.\n * @return {string} A URI.\n */\n createFragmentUri(searchForm, subject, predicate, object, graph) {\n const entries = {};\n const input = [\n { uri: this.subjectUri, term: subject },\n { uri: this.predicateUri, term: predicate },\n { uri: this.objectUri, term: object },\n { uri: this.graphUri, term: graph },\n ];\n for (const entry of input) {\n if (entry.uri && entry.term.termType !== 'Variable') {\n entries[entry.uri] = (0, rdf_string_1.termToString)(entry.term);\n }\n }\n return searchForm.getUri(entries);\n }\n match(subject, predicate, object, graph) {\n // If we are querying the default graph,\n // and the source has an overridden value for the default graph (such as QPF can provide),\n // we override the graph parameter with that value.\n let modifiedGraph = false;\n if (this.defaultGraph && graph.termType === 'DefaultGraph') {\n modifiedGraph = true;\n graph = this.defaultGraph;\n }\n // Try to emit from cache\n const cached = this.getCachedQuads(subject, predicate, object, graph);\n if (cached) {\n return cached;\n }\n const quads = new asynciterator_1.TransformIterator(async () => {\n let url = this.createFragmentUri(this.searchForm, subject, predicate, object, graph);\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf.mediate({ context: this.context, url });\n url = dereferenceRdfOutput.url;\n // Determine the metadata and emit it\n const rdfMetadataOuput = await this.mediatorMetadata.mediate({ context: this.context,\n url,\n quads: dereferenceRdfOutput.data,\n triples: dereferenceRdfOutput.metadata?.triples });\n const metadataExtractPromise = this.mediatorMetadataExtract\n .mediate({\n context: this.context,\n url,\n metadata: rdfMetadataOuput.metadata,\n requestTime: dereferenceRdfOutput.requestTime,\n })\n .then(({ metadata }) => quads\n .setProperty('metadata', { ...metadata, canContainUndefs: false }));\n // The server is free to send any data in its response (such as metadata),\n // including quads that do not match the given matter.\n // Therefore, we have to filter away all non-matching quads here.\n const actualDefaultGraph = DF.defaultGraph();\n let filteredOutput = (0, asynciterator_1.wrap)(rdfMetadataOuput.data)\n .transform({\n filter(quad) {\n if ((0, rdf_terms_1.matchPattern)(quad, subject, predicate, object, graph)) {\n return true;\n }\n // Special case: if we are querying in the default graph, and we had an overridden default graph,\n // also accept that incoming triples may be defined in the actual default graph\n return modifiedGraph && (0, rdf_terms_1.matchPattern)(quad, subject, predicate, object, actualDefaultGraph);\n },\n });\n if (modifiedGraph || graph.termType === 'Variable') {\n // Reverse-map the overridden default graph back to the actual default graph\n filteredOutput = this.reverseMapQuadsToDefaultGraph(filteredOutput);\n }\n // Swallow error events, as they will be emitted in the metadata stream as well,\n // and therefore thrown async next.\n filteredOutput.on('error', () => {\n // Do nothing\n });\n // Ensures metadata event is emitted before end-event\n await metadataExtractPromise;\n return filteredOutput;\n }, { autoStart: false });\n this.cacheQuads(quads, subject, predicate, object, graph);\n return this.getCachedQuads(subject, predicate, object, graph);\n }\n reverseMapQuadsToDefaultGraph(quads) {\n const actualDefaultGraph = DF.defaultGraph();\n return quads.map(quad => (0, rdf_terms_1.mapTerms)(quad, (term, key) => key === 'graph' && term.equals(this.defaultGraph) ? actualDefaultGraph : term));\n }\n getPatternId(subject, predicate, object, graph) {\n /* eslint-disable id-length */\n return JSON.stringify({\n s: subject.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(subject),\n p: predicate.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(predicate),\n o: object.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(object),\n g: graph.termType === 'Variable' ? '' : (0, rdf_string_1.termToString)(graph),\n });\n /* eslint-enable id-length */\n }\n cacheQuads(quads, subject, predicate, object, graph) {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n this.cachedQuads[patternId] = quads.clone();\n }\n getCachedQuads(subject, predicate, object, graph) {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n const quads = this.cachedQuads[patternId];\n if (quads) {\n return quads.clone();\n }\n }\n}\nexports.RdfSourceQpf = RdfSourceQpf;\n//# sourceMappingURL=RdfSourceQpf.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaQpf\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaSparql = void 0;\nconst bus_rdf_resolve_hypermedia_1 = require(\"@comunica/bus-rdf-resolve-hypermedia\");\nconst RdfSourceSparql_1 = require(\"./RdfSourceSparql\");\n/**\n * A comunica SPARQL RDF Resolve Hypermedia Actor.\n */\nclass ActorRdfResolveHypermediaSparql extends bus_rdf_resolve_hypermedia_1.ActorRdfResolveHypermedia {\n constructor(args) {\n super(args, 'sparql');\n }\n async testMetadata(action) {\n if (!action.forceSourceType && !action.metadata.sparqlService &&\n !(this.checkUrlSuffix && action.url.endsWith('/sparql'))) {\n throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql.`);\n }\n return { filterFactor: 1 };\n }\n async run(action) {\n this.logInfo(action.context, `Identified as sparql source: ${action.url}`);\n const source = new RdfSourceSparql_1.RdfSourceSparql(action.metadata.sparqlService || action.url, action.context, this.mediatorHttp, this.forceHttpGet);\n return { source };\n }\n}\nexports.ActorRdfResolveHypermediaSparql = ActorRdfResolveHypermediaSparql;\n//# sourceMappingURL=ActorRdfResolveHypermediaSparql.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfSourceSparql = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst fetch_sparql_endpoint_1 = require(\"fetch-sparql-endpoint\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\nconst BF = new bindings_factory_1.BindingsFactory();\nconst VAR_COUNT = DF.variable('count');\nclass RdfSourceSparql {\n constructor(url, context, mediatorHttp, forceHttpGet) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n this.endpointFetcher = new fetch_sparql_endpoint_1.SparqlEndpointFetcher({\n method: forceHttpGet ? 'GET' : 'POST',\n fetch: (input, init) => this.mediatorHttp.mediate({ input, init, context: this.context }),\n prefixVariableQuestionMark: true,\n });\n }\n /**\n * Replace all blank nodes in a pattern with variables.\n * If the pattern contains no blank nodes the original pattern gets returned.\n * @param {RDF.BaseQuad} pattern A quad pattern.\n * @return {RDF.BaseQuad} A quad pattern with no blank nodes.\n */\n static replaceBlankNodes(pattern) {\n const variableNames = (0, rdf_terms_1.getVariables)((0, rdf_terms_1.getTerms)(pattern)).map(variableTerm => variableTerm.value);\n // Track the names the blank nodes get mapped to (required if the name has to change)\n const blankMap = {};\n let changed = false;\n // For every position, convert to a variable if there is a blank node\n const result = (0, rdf_terms_1.mapTerms)(pattern, term => {\n if (term.termType === 'BlankNode') {\n let name = term.value;\n if (blankMap[name]) {\n name = blankMap[name];\n }\n else {\n if (variableNames.includes(name)) {\n // Increase index added to name until we find one that is available (2 loops at most)\n let idx = 0;\n while (variableNames.includes(`${name}${idx}`)) {\n ++idx;\n }\n name += idx;\n }\n blankMap[term.value] = name;\n variableNames.push(name);\n }\n changed = true;\n return DF.variable(name);\n }\n return term;\n });\n return changed ? result : pattern;\n }\n /**\n * Convert a quad pattern to a BGP with only that pattern.\n * @param {RDF.pattern} quad A quad pattern.\n * @return {Bgp} A BGP.\n */\n static patternToBgp(pattern) {\n return RdfSourceSparql.FACTORY.createBgp([RdfSourceSparql.FACTORY\n .createPattern(pattern.subject, pattern.predicate, pattern.object, pattern.graph)]);\n }\n /**\n * Convert a quad pattern to a select query for this pattern.\n * @param {RDF.Quad} pattern A quad pattern.\n * @return {string} A select query string.\n */\n static patternToSelectQuery(pattern) {\n const variables = (0, rdf_terms_1.getVariables)((0, rdf_terms_1.getTerms)(pattern));\n return (0, sparqlalgebrajs_1.toSparql)(RdfSourceSparql.FACTORY.createProject(RdfSourceSparql.patternToBgp(pattern), variables));\n }\n /**\n * Convert a quad pattern to a count query for the number of matching triples for this pattern.\n * @param {RDF.Quad} pattern A quad pattern.\n * @return {string} A count query string.\n */\n static patternToCountQuery(pattern) {\n return (0, sparqlalgebrajs_1.toSparql)(RdfSourceSparql.FACTORY.createProject(RdfSourceSparql.FACTORY.createExtend(RdfSourceSparql.FACTORY.createGroup(RdfSourceSparql.patternToBgp(pattern), [], [RdfSourceSparql.FACTORY.createBoundAggregate(DF.variable('var0'), 'count', RdfSourceSparql.FACTORY.createWildcardExpression(), false)]), DF.variable('count'), RdfSourceSparql.FACTORY.createTermExpression(DF.variable('var0'))), [DF.variable('count')]));\n }\n /**\n * Send a SPARQL query to a SPARQL endpoint and retrieve its bindings as a stream.\n * @param {string} endpoint A SPARQL endpoint URL.\n * @param {string} query A SPARQL query string.\n * @return {BindingsStream} A stream of bindings.\n */\n queryBindings(endpoint, query) {\n const rawStream = this.endpointFetcher.fetchBindings(endpoint, query);\n return (0, asynciterator_1.wrap)(rawStream, { autoStart: false, maxBufferSize: Number.POSITIVE_INFINITY })\n .map((rawData) => BF.bindings(Object.entries(rawData)\n .map(([key, value]) => [DF.variable(key.slice(1)), value])));\n }\n match(subject, predicate, object, graph) {\n const pattern = RdfSourceSparql.replaceBlankNodes(RdfSourceSparql.FACTORY.createPattern(subject, predicate, object, graph));\n const countQuery = RdfSourceSparql.patternToCountQuery(pattern);\n const selectQuery = RdfSourceSparql.patternToSelectQuery(pattern);\n // Emit metadata containing the estimated count (reject is never called)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n new Promise(resolve => {\n const bindingsStream = this.queryBindings(this.url, countQuery);\n bindingsStream.on('data', (bindings) => {\n const count = bindings.get(VAR_COUNT);\n if (count) {\n const cardinality = Number.parseInt(count.value, 10);\n if (Number.isNaN(cardinality)) {\n return resolve({ cardinality: Number.POSITIVE_INFINITY });\n }\n return resolve({ cardinality });\n }\n return resolve({ cardinality: Number.POSITIVE_INFINITY });\n });\n bindingsStream.on('error', () => resolve({ cardinality: Number.POSITIVE_INFINITY }));\n bindingsStream.on('end', () => resolve({ cardinality: Number.POSITIVE_INFINITY }));\n })\n .then(metadata => quads.setProperty('metadata', { ...metadata, canContainUndefs: true }));\n // Materialize the queried pattern using each found binding.\n const quads = this.queryBindings(this.url, selectQuery)\n .map((bindings) => (0, rdf_terms_1.mapTerms)(pattern, (value) => {\n if (value.termType === 'Variable') {\n const boundValue = bindings.get(value);\n if (!boundValue) {\n quads.destroy(new Error(`The endpoint ${this.url} failed to provide a binding for ${value.value}.`));\n }\n return boundValue;\n }\n return value;\n }));\n return quads;\n }\n}\nexports.RdfSourceSparql = RdfSourceSparql;\nRdfSourceSparql.FACTORY = new sparqlalgebrajs_1.Factory();\n//# sourceMappingURL=RdfSourceSparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaSparql\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternFederated = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst FederatedQuadSource_1 = require(\"./FederatedQuadSource\");\n/**\n * A comunica Federated RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternFederated extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n this.emptyPatterns = new Map();\n }\n async test(action) {\n const sources = (0, bus_rdf_resolve_quad_pattern_1.getContextSources)(action.context);\n if (!sources) {\n throw new Error(`Actor ${this.name} can only resolve quad pattern queries against a sources array.`);\n }\n return true;\n }\n async getSource(context) {\n return new FederatedQuadSource_1.FederatedQuadSource(this.mediatorResolveQuadPattern, context, this.emptyPatterns, this.skipEmptyPatterns);\n }\n}\nexports.ActorRdfResolveQuadPatternFederated = ActorRdfResolveQuadPatternFederated;\n//# sourceMappingURL=ActorRdfResolveQuadPatternFederated.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FederatedQuadSource = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst data_factory_1 = require(\"@comunica/data-factory\");\nconst asynciterator_1 = require(\"asynciterator\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_terms_1 = require(\"rdf-terms\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A FederatedQuadSource can evaluate quad pattern queries over the union of different heterogeneous sources.\n * It will call the given mediator to evaluate each quad pattern query separately.\n */\nclass FederatedQuadSource {\n constructor(mediatorResolveQuadPattern, context, emptyPatterns, skipEmptyPatterns) {\n this.mediatorResolveQuadPattern = mediatorResolveQuadPattern;\n this.sources = context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n this.contextDefault = context.delete(context_entries_1.KeysRdfResolveQuadPattern.sources);\n this.emptyPatterns = emptyPatterns;\n this.sourceIds = context.get(context_entries_1.KeysRdfResolveQuadPattern.sourceIds) ?? new Map();\n this.skipEmptyPatterns = skipEmptyPatterns;\n this.algebraFactory = new sparqlalgebrajs_1.Factory();\n // Initialize sources in the emptyPatterns datastructure\n if (this.skipEmptyPatterns) {\n for (const source of this.sources) {\n if (!this.emptyPatterns.has(source)) {\n this.emptyPatterns.set(source, []);\n }\n }\n }\n }\n /**\n * Check if the given RDF term is not bound to an exact value.\n * I.e., if it is not a Variable.\n * @param {RDF.Term} term An RDF term.\n * @return {boolean} If it is not bound.\n */\n static isTermBound(term) {\n return term.termType !== 'Variable';\n }\n /**\n * Checks if the given (child) pattern is a more bound version of the given (parent) pattern.\n * This will also return true if the patterns are equal.\n * @param {RDF.BaseQuad} child A child pattern.\n * @param {RDF.BaseQuad} parent A parent pattern.\n * @return {boolean} If child is a sub-pattern of parent\n */\n static isSubPatternOf(child, parent) {\n return (!FederatedQuadSource.isTermBound(parent.subject) || parent.subject.equals(child.subject)) &&\n (!FederatedQuadSource.isTermBound(parent.predicate) || parent.predicate.equals(child.predicate)) &&\n (!FederatedQuadSource.isTermBound(parent.object) || parent.object.equals(child.object)) &&\n (!FederatedQuadSource.isTermBound(parent.graph) || parent.graph.equals(child.graph));\n }\n /**\n * If the given term is a blank node, return a deterministic named node for it\n * based on the source id and the blank node value.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n * @return If the given term was a blank node, this will return a skolemized named node, otherwise the original term.\n */\n static skolemizeTerm(term, sourceId) {\n if (term.termType === 'BlankNode') {\n return new data_factory_1.BlankNodeScoped(`bc_${sourceId}_${term.value}`, DF.namedNode(`${FederatedQuadSource.SKOLEM_PREFIX}${sourceId}:${term.value}`));\n }\n return term;\n }\n /**\n * Skolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The skolemized quad.\n */\n static skolemizeQuad(quad, sourceId) {\n return (0, rdf_terms_1.mapTerms)(quad, term => FederatedQuadSource.skolemizeTerm(term, sourceId));\n }\n /**\n * If a given term was a skolemized named node for the given source id,\n * deskolemize it again to a blank node.\n * If the given term was a skolemized named node for another source, return false.\n * If the given term was not a skolemized named node, return the original term.\n * @param term Any RDF term.\n * @param sourceId A source identifier.\n */\n static deskolemizeTerm(term, sourceId) {\n if (term.termType === 'BlankNode' && 'skolemized' in term) {\n term = term.skolemized;\n }\n if (term.termType === 'NamedNode' && term.value.startsWith(FederatedQuadSource.SKOLEM_PREFIX)) {\n const colonSeparator = term.value.indexOf(':', FederatedQuadSource.SKOLEM_PREFIX.length);\n const termSourceId = term.value.slice(FederatedQuadSource.SKOLEM_PREFIX.length, colonSeparator);\n // We had a skolemized term\n if (termSourceId === sourceId) {\n // It came from the correct source\n const termLabel = term.value.slice(colonSeparator + 1, term.value.length);\n return DF.blankNode(termLabel);\n }\n // It came from a different source\n return null;\n }\n return term;\n }\n /**\n * Deskolemize all terms in the given quad.\n * @param quad An RDF quad.\n * @param sourceId A source identifier.\n * @return The deskolemized quad.\n */\n static deskolemizeQuad(quad, sourceId) {\n return (0, rdf_terms_1.mapTerms)(quad, (term) => {\n const newTerm = FederatedQuadSource.deskolemizeTerm(term, sourceId);\n // If the term was skolemized in a different source then dont deskolemize it\n return !newTerm ? term : newTerm;\n });\n }\n /**\n * If the given source is guaranteed to produce an empty result for the given pattern.\n *\n * This prediction is done based on the 'emptyPatterns' datastructure that is stored within this actor.\n * Every time an empty pattern is passed, this pattern is stored in this datastructure for this source.\n * If this pattern (or a more bound pattern) is queried, we know for certain that it will be empty again.\n * This is under the assumption that sources will remain static during query evaluation.\n *\n * @param {IQuerySource} source\n * @param {RDF.BaseQuad} pattern\n * @return {boolean}\n */\n isSourceEmpty(source, pattern) {\n if (!this.skipEmptyPatterns) {\n return false;\n }\n const emptyPatterns = this.emptyPatterns.get(source);\n if (emptyPatterns) {\n for (const emptyPattern of emptyPatterns) {\n if (FederatedQuadSource.isSubPatternOf(pattern, emptyPattern)) {\n return true;\n }\n }\n }\n return false;\n }\n /**\n * Get the unique, deterministic id for the given source.\n * @param source A data source.\n * @return The id of the given source.\n */\n getSourceId(source) {\n let sourceId = this.sourceIds.get(source);\n if (sourceId === undefined) {\n sourceId = `${this.sourceIds.size}`;\n this.sourceIds.set(source, sourceId);\n }\n return sourceId;\n }\n match(subject, predicate, object, graph) {\n // Counters for our metadata\n const metadata = { cardinality: { type: 'exact', value: 0 }, canContainUndefs: false };\n let remainingSources = this.sources.length;\n // Anonymous function to handle cardinality from metadata\n const checkEmitMetadata = (currentTotalItems, source, pattern, lastMetadata) => {\n if (this.skipEmptyPatterns && !currentTotalItems && pattern && !this.isSourceEmpty(source, pattern)) {\n this.emptyPatterns.get(source).push(pattern);\n }\n if (!remainingSources) {\n if (lastMetadata && this.sources.length === 1) {\n // If we only had one source, emit the metadata as-is.\n it.setProperty('metadata', lastMetadata);\n }\n else {\n it.setProperty('metadata', metadata);\n }\n }\n };\n const proxyIt = Promise.all(this.sources.map(async (source) => {\n const sourceId = this.getSourceId(source);\n // Deskolemize terms, so we send the original blank nodes to each source.\n // Note that some sources may not match bnodes by label. SPARQL endpoints for example consider them variables.\n const patternS = FederatedQuadSource.deskolemizeTerm(subject, sourceId);\n const patternP = FederatedQuadSource.deskolemizeTerm(predicate, sourceId);\n const patternO = FederatedQuadSource.deskolemizeTerm(object, sourceId);\n const patternG = FederatedQuadSource.deskolemizeTerm(graph, sourceId);\n let pattern;\n // Prepare the context for this specific source\n let context = (0, bus_rdf_resolve_quad_pattern_1.getDataSourceContext)(source, this.contextDefault);\n context = context.set(context_entries_1.KeysRdfResolveQuadPattern.source, { type: (0, bus_rdf_resolve_quad_pattern_1.getDataSourceType)(source), value: (0, bus_rdf_resolve_quad_pattern_1.getDataSourceValue)(source) });\n let output;\n // If any of the deskolemized blank nodes originate from another source,\n // or if we can predict that the given source will have no bindings for the given pattern,\n // return an empty iterator.\n if (!patternS || !patternP || !patternO || !patternG ||\n // eslint-disable-next-line no-cond-assign\n this.isSourceEmpty(source, pattern = this.algebraFactory\n .createPattern(patternS, patternP, patternO, patternG))) {\n output = { data: new asynciterator_1.ArrayIterator([], { autoStart: false }) };\n output.data.setProperty('metadata', { cardinality: 0, canContainUndefs: false });\n }\n else {\n output = await this.mediatorResolveQuadPattern.mediate({ pattern, context });\n }\n // Handle the metadata from this source\n output.data.getProperty('metadata', (subMetadata) => {\n if (!subMetadata.cardinality || !Number.isFinite(subMetadata.cardinality.value)) {\n // We're already at infinite, so ignore any later metadata\n metadata.cardinality.type = 'estimate';\n metadata.cardinality.value = Number.POSITIVE_INFINITY;\n remainingSources = 0;\n }\n else {\n if (subMetadata.cardinality.type === 'estimate') {\n metadata.cardinality.type = 'estimate';\n }\n metadata.cardinality.value += subMetadata.cardinality.value;\n remainingSources--;\n }\n if (metadata.requestTime || subMetadata.requestTime) {\n metadata.requestTime = metadata.requestTime || 0;\n subMetadata.requestTime = subMetadata.requestTime || 0;\n metadata.requestTime += subMetadata.requestTime;\n }\n if (metadata.pageSize || subMetadata.pageSize) {\n metadata.pageSize = metadata.pageSize || 0;\n subMetadata.pageSize = subMetadata.pageSize || 0;\n metadata.pageSize += subMetadata.pageSize;\n }\n if (subMetadata.canContainUndefs) {\n metadata.canContainUndefs = true;\n }\n checkEmitMetadata(metadata.cardinality.value, source, pattern, subMetadata);\n });\n // Determine the data stream from this source\n let data = output.data.map(quad => FederatedQuadSource.skolemizeQuad(quad, sourceId));\n // SPARQL query semantics allow graph variables to only match with named graphs, excluding the default graph\n if (graph.termType === 'Variable') {\n data = data.filter(quad => quad.graph.termType !== 'DefaultGraph');\n }\n // Forward errors to our final iterator\n data.on('error', error => it.emit('error', error));\n return data;\n }));\n // Take the union of all source streams\n const it = new asynciterator_1.TransformIterator(async () => new asynciterator_1.UnionIterator(await proxyIt), { autoStart: false });\n // If we have 0 sources, immediately emit metadata\n if (this.sources.length === 0) {\n it.setProperty('metadata', metadata);\n }\n return it;\n }\n}\nexports.FederatedQuadSource = FederatedQuadSource;\nFederatedQuadSource.SKOLEM_PREFIX = 'urn:comunica_skolem:source_';\n//# sourceMappingURL=FederatedQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternFederated\"), exports);\n__exportStar(require(\"./FederatedQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternHypermedia = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst LRUCache = require(\"lru-cache\");\nconst MediatedQuadSource_1 = require(\"./MediatedQuadSource\");\n/**\n * A comunica Hypermedia RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternHypermedia extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(({ url }) => url ? cache.del(url) : cache.reset());\n }\n }\n async test(action) {\n const sources = (0, bus_rdf_resolve_quad_pattern_1.hasContextSingleSource)(action.context);\n if (!sources) {\n throw new Error(`Actor ${this.name} can only resolve quad pattern queries against a single source.`);\n }\n return true;\n }\n getSource(context, operation) {\n const contextSource = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(context);\n const url = (0, bus_rdf_resolve_quad_pattern_1.getContextSourceUrl)(contextSource);\n let source;\n // Try to read from cache\n if (this.cache && this.cache.has(url)) {\n source = this.cache.get(url);\n }\n else {\n // If not in cache, create a new source\n source = new MediatedQuadSource_1.MediatedQuadSource(this.cacheSize, context, url, (0, bus_rdf_resolve_quad_pattern_1.getDataSourceType)(contextSource), this.maxIterators, {\n mediatorMetadata: this.mediatorMetadata,\n mediatorMetadataExtract: this.mediatorMetadataExtract,\n mediatorDereferenceRdf: this.mediatorDereferenceRdf,\n mediatorRdfResolveHypermedia: this.mediatorRdfResolveHypermedia,\n mediatorRdfResolveHypermediaLinks: this.mediatorRdfResolveHypermediaLinks,\n mediatorRdfResolveHypermediaLinksQueue: this.mediatorRdfResolveHypermediaLinksQueue,\n });\n // Set in cache\n if (this.cache) {\n this.cache.set(url, source);\n }\n }\n return Promise.resolve(source);\n }\n}\nexports.ActorRdfResolveQuadPatternHypermedia = ActorRdfResolveQuadPatternHypermedia;\n//# sourceMappingURL=ActorRdfResolveQuadPatternHypermedia.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedRdfSourcesAsyncRdfIterator = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\nconst LRUCache = require(\"lru-cache\");\nclass LinkedRdfSourcesAsyncRdfIterator extends asynciterator_1.BufferedIterator {\n constructor(cacheSize, subject, predicate, object, graph, firstUrl, maxIterators) {\n super({ autoStart: true });\n this.started = false;\n this.cacheSize = cacheSize;\n this.subject = subject;\n this.predicate = predicate;\n this.object = object;\n this.graph = graph;\n this.firstUrl = firstUrl;\n this.maxIterators = maxIterators;\n if (this.maxIterators <= 0) {\n throw new Error(`LinkedRdfSourcesAsyncRdfIterator.maxIterators must be larger than zero, but got ${this.maxIterators}`);\n }\n this.currentIterators = [];\n this.iteratorsPendingCreation = 0;\n }\n /**\n * This method can optionally called after constructing an instance\n * for allowing the sources state to be cached.\n *\n * When calling without args, then the default logic will be followed to determine the sources state.\n * When calling with an arg, then the given sources state will be set instead of following the default logic.\n *\n * After calling this method, the `sourcesState` field can be retrieved and optionally cached.\n *\n * This sources state also contains a hash of all handled datasets that will be copied upon first use.\n *\n * @param {ISourcesState} sourcesState An optional sources state.\n */\n setSourcesState(sourcesState) {\n if (sourcesState) {\n this.sourcesState = sourcesState;\n }\n else {\n this.sourcesState = {\n sources: new LRUCache({ max: this.cacheSize }),\n };\n // Ignore the response, we just want the promise to be cached\n this.getSourceCached({ url: this.firstUrl }, {})\n .catch(error => this.destroy(error));\n }\n }\n /**\n * Resolve a source for the given URL.\n * This will first try to retrieve the source from cache.\n * @param link A source ILink.\n * @param handledDatasets A hash of dataset identifiers that have already been handled.\n */\n getSourceCached(link, handledDatasets) {\n let source = this.sourcesState.sources.get(link.url);\n if (source) {\n return source;\n }\n source = this.getSource(link, handledDatasets);\n this.sourcesState.sources.set(link.url, source);\n return source;\n }\n _read(count, done) {\n if (!this.started) {\n // The first time this is called, prepare the first source\n this.started = true;\n // Create a sources state if needed (can be defined if set from actor cache)\n if (!this.sourcesState) {\n this.setSourcesState();\n }\n // Await the source to be set, and start the source iterator\n this.getSourceCached({ url: this.firstUrl }, {})\n .then(sourceState => {\n this.startIterator(sourceState, true);\n done();\n })\n .catch(error => {\n // We can safely ignore this error, since it handled in setSourcesState\n done();\n });\n }\n else {\n // Read from all current iterators\n for (const iterator of this.currentIterators) {\n while (count > 0) {\n const read = iterator.read();\n if (read !== null) {\n count--;\n this._push(read);\n }\n else {\n break;\n }\n }\n if (count <= 0) {\n break;\n }\n }\n // Schedule new iterators if needed\n if (count >= 0 && this.canStartNewIterator()) {\n this.getSourceCached({ url: this.firstUrl }, {})\n .then(sourceState => {\n this.startIteratorsForNextUrls(sourceState.handledDatasets, false);\n done();\n })\n .catch(error => this.destroy(error));\n }\n else {\n done();\n }\n }\n }\n canStartNewIterator() {\n return (this.currentIterators.length + this.iteratorsPendingCreation) < this.maxIterators && !this.readable;\n }\n areIteratorsRunning() {\n return (this.currentIterators.length + this.iteratorsPendingCreation) > 0;\n }\n /**\n * Start a new iterator for the given source.\n * Once the iterator is done, it will either determine a new source, or it will close the linked iterator.\n * @param {ISourceState} startSource The start source state.\n * @param {boolean} emitMetadata If the metadata event should be emitted.\n */\n startIterator(startSource, emitMetadata) {\n // Delegate the quad pattern query to the given source\n const iterator = startSource.source\n .match(this.subject, this.predicate, this.object, this.graph);\n this.currentIterators.push(iterator);\n let receivedMetadata = false;\n // Attach readers to the newly created iterator\n iterator._destination = this;\n iterator.on('error', (error) => this.destroy(error));\n iterator.on('readable', () => this._fillBuffer());\n iterator.on('end', () => {\n this.currentIterators.splice(this.currentIterators.indexOf(iterator), 1);\n // If the metadata was already received, handle the next URL in the queue\n if (receivedMetadata) {\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }\n });\n // Listen for the metadata of the source\n // The metadata property is guaranteed to be set\n iterator.getProperty('metadata', (metadata) => {\n startSource.metadata = { ...startSource.metadata, ...metadata };\n // Emit metadata if needed\n if (emitMetadata) {\n this.setProperty('metadata', startSource.metadata);\n }\n // Determine next urls, which will eventually become a next-next source.\n this.getSourceLinks(startSource.metadata)\n .then((nextUrls) => Promise.all(nextUrls))\n .then(async (nextUrls) => {\n // Append all next URLs to our queue\n const linkQueue = await this.getLinkQueue();\n for (const nextUrl of nextUrls) {\n linkQueue.push(nextUrl, startSource.link);\n }\n receivedMetadata = true;\n this.startIteratorsForNextUrls(startSource.handledDatasets, true);\n }).catch(error => this.destroy(error));\n });\n }\n /**\n * Check if a next URL is in the queue.\n * If yes, start a new iterator.\n * If no, close this iterator.\n * @param handledDatasets\n * @param canClose\n */\n startIteratorsForNextUrls(handledDatasets, canClose) {\n this.getLinkQueue()\n .then(linkQueue => {\n // Create as many new iterators as possible\n while (this.canStartNewIterator() && !this.done) {\n const nextLink = linkQueue.pop();\n if (nextLink) {\n this.iteratorsPendingCreation++;\n this.getSourceCached(nextLink, handledDatasets)\n .then(nextSourceState => {\n this.iteratorsPendingCreation--;\n this.startIterator(nextSourceState, false);\n })\n .catch(error => this.destroy(error));\n }\n else {\n break;\n }\n }\n // Close, only if no other iterators are still running\n if (canClose && linkQueue.isEmpty() && !this.areIteratorsRunning()) {\n this.close();\n }\n })\n .catch(error => this.destroy(error));\n }\n}\nexports.LinkedRdfSourcesAsyncRdfIterator = LinkedRdfSourcesAsyncRdfIterator;\n//# sourceMappingURL=LinkedRdfSourcesAsyncRdfIterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatedLinkedRdfSourcesAsyncRdfIterator = void 0;\nconst stream_1 = require(\"stream\");\nconst LinkedRdfSourcesAsyncRdfIterator_1 = require(\"./LinkedRdfSourcesAsyncRdfIterator\");\n/**\n * An quad iterator that can iterate over consecutive RDF sources\n * that are determined using the rdf-resolve-hypermedia-links bus.\n *\n * @see LinkedRdfSourcesAsyncRdfIterator\n */\nclass MediatedLinkedRdfSourcesAsyncRdfIterator extends LinkedRdfSourcesAsyncRdfIterator_1.LinkedRdfSourcesAsyncRdfIterator {\n constructor(cacheSize, context, forceSourceType, subject, predicate, object, graph, firstUrl, maxIterators, mediators) {\n super(cacheSize, subject, predicate, object, graph, firstUrl, maxIterators);\n this.context = context;\n this.forceSourceType = forceSourceType;\n this.mediatorDereferenceRdf = mediators.mediatorDereferenceRdf;\n this.mediatorMetadata = mediators.mediatorMetadata;\n this.mediatorMetadataExtract = mediators.mediatorMetadataExtract;\n this.mediatorRdfResolveHypermedia = mediators.mediatorRdfResolveHypermedia;\n this.mediatorRdfResolveHypermediaLinks = mediators.mediatorRdfResolveHypermediaLinks;\n this.mediatorRdfResolveHypermediaLinksQueue = mediators.mediatorRdfResolveHypermediaLinksQueue;\n this.handledUrls = { [firstUrl]: true };\n }\n getLinkQueue() {\n if (!this.linkQueue) {\n this.linkQueue = this.mediatorRdfResolveHypermediaLinksQueue\n .mediate({ firstUrl: this.firstUrl, context: this.context })\n .then(result => result.linkQueue);\n }\n return this.linkQueue;\n }\n async getSourceLinks(metadata) {\n try {\n const { links } = await this.mediatorRdfResolveHypermediaLinks.mediate({ context: this.context, metadata });\n // Filter URLs to avoid cyclic next-page loops\n return links.filter(link => {\n if (this.handledUrls[link.url]) {\n return false;\n }\n this.handledUrls[link.url] = true;\n return true;\n });\n }\n catch {\n // No next URLs may be available, for example when we've reached the end of a Hydra next-page sequence.\n return [];\n }\n }\n async getSource(link, handledDatasets) {\n // Include context entries from link\n let context = this.context;\n if (link.context) {\n context = context.merge(link.context);\n }\n // Get the RDF representation of the given document\n let url = link.url;\n let quads;\n let metadata;\n try {\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf\n .mediate({ context, url });\n url = dereferenceRdfOutput.url;\n // Determine the metadata\n const rdfMetadataOutput = await this.mediatorMetadata.mediate({ context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples });\n rdfMetadataOutput.data.on('error', () => {\n // Silence errors in the data stream,\n // as they will be emitted again in the metadata stream,\n // and will result in a promise rejection anyways.\n // If we don't do this, we end up with an unhandled error message\n });\n metadata = (await this.mediatorMetadataExtract.mediate({\n context,\n url,\n // The problem appears to be conflicting metadata keys here\n metadata: rdfMetadataOutput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n quads = rdfMetadataOutput.data;\n // Optionally filter the resulting data\n if (link.transform) {\n quads = await link.transform(quads);\n }\n }\n catch (error) {\n // Make sure that dereference errors are only emitted once an actor really needs the read quads\n // This for example allows SPARQL endpoints that error on service description fetching to still be source-forcible\n quads = new stream_1.Readable();\n quads.read = () => {\n quads.emit('error', error);\n return null;\n };\n metadata = {};\n }\n // Determine the source\n const { source, dataset } = await this.mediatorRdfResolveHypermedia.mediate({\n context,\n forceSourceType: this.forceSourceType,\n handledDatasets,\n metadata,\n quads,\n url,\n });\n if (dataset) {\n // Mark the dataset as applied\n // This is needed to make sure that things like QPF search forms are only applied once,\n // and next page links are followed after that.\n handledDatasets[dataset] = true;\n }\n return { link, source, metadata, handledDatasets };\n }\n}\nexports.MediatedLinkedRdfSourcesAsyncRdfIterator = MediatedLinkedRdfSourcesAsyncRdfIterator;\n//# sourceMappingURL=MediatedLinkedRdfSourcesAsyncRdfIterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatedQuadSource = void 0;\nconst MediatedLinkedRdfSourcesAsyncRdfIterator_1 = require(\"./MediatedLinkedRdfSourcesAsyncRdfIterator\");\n/**\n * A lazy quad source that creates {@link MediatedLinkedRdfSourcesAsyncRdfIterator} instances when matching quads.\n *\n * @see MediatedLinkedRdfSourcesAsyncRdfIterator\n */\nclass MediatedQuadSource {\n constructor(cacheSize, context, firstUrl, forceSourceType, maxIterators, mediators) {\n this.cacheSize = cacheSize;\n this.context = context;\n this.firstUrl = firstUrl;\n this.forceSourceType = forceSourceType;\n this.maxIterators = maxIterators;\n this.mediators = mediators;\n }\n match(subject, predicate, object, graph) {\n const it = new MediatedLinkedRdfSourcesAsyncRdfIterator_1.MediatedLinkedRdfSourcesAsyncRdfIterator(this.cacheSize, this.context, this.forceSourceType, subject, predicate, object, graph, this.firstUrl, this.maxIterators, this.mediators);\n if (!this.sourcesState) {\n it.setSourcesState();\n this.sourcesState = it.sourcesState;\n }\n else {\n it.setSourcesState(this.sourcesState);\n }\n return it;\n }\n}\nexports.MediatedQuadSource = MediatedQuadSource;\n//# sourceMappingURL=MediatedQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternHypermedia\"), exports);\n__exportStar(require(\"./MediatedQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternRdfJsSource = void 0;\nconst bus_rdf_resolve_quad_pattern_1 = require(\"@comunica/bus-rdf-resolve-quad-pattern\");\nconst RdfJsQuadSource_1 = require(\"./RdfJsQuadSource\");\n/**\n * A comunica RDFJS Source RDF Resolve Quad Pattern Actor.\n */\nclass ActorRdfResolveQuadPatternRdfJsSource extends bus_rdf_resolve_quad_pattern_1.ActorRdfResolveQuadPatternSource {\n constructor(args) {\n super(args);\n }\n async test(action) {\n if (!(0, bus_rdf_resolve_quad_pattern_1.hasContextSingleSourceOfType)('rdfjsSource', action.context)) {\n throw new Error(`${this.name} requires a single source with an rdfjsSource to be present in the context.`);\n }\n const source = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(action.context);\n if (!source || typeof source === 'string' || (!('match' in source) && !source.value.match)) {\n throw new Error(`${this.name} received an invalid rdfjsSource.`);\n }\n return true;\n }\n async getSource(context) {\n const source = (0, bus_rdf_resolve_quad_pattern_1.getContextSource)(context);\n return new RdfJsQuadSource_1.RdfJsQuadSource('match' in source ? source : source.value);\n }\n}\nexports.ActorRdfResolveQuadPatternRdfJsSource = ActorRdfResolveQuadPatternRdfJsSource;\n//# sourceMappingURL=ActorRdfResolveQuadPatternRdfJsSource.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IRdfJsSourceExtended.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfJsQuadSource = void 0;\nconst asynciterator_1 = require(\"asynciterator\");\n/**\n * A quad source that wraps over an {@link RDF.Source}.\n */\nclass RdfJsQuadSource {\n constructor(source) {\n this.source = source;\n }\n static nullifyVariables(term) {\n return !term || term.termType === 'Variable' ? undefined : term;\n }\n match(subject, predicate, object, graph) {\n // Create an async iterator from the matched quad stream\n const rawStream = this.source.match(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n const it = (0, asynciterator_1.wrap)(rawStream, { autoStart: false });\n // Determine metadata\n this.setMetadata(it, subject, predicate, object, graph)\n .catch(error => it.destroy(error));\n return it;\n }\n async setMetadata(it, subject, predicate, object, graph) {\n let cardinality;\n if (this.source.countQuads) {\n // If the source provides a dedicated method for determining cardinality, use that.\n cardinality = await this.source.countQuads(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n }\n else {\n // Otherwise, fallback to a sub-optimal alternative where we just call match again to count the quads.\n // WARNING: we can NOT reuse the original data stream here,\n // because we may loose data elements due to things happening async.\n let i = 0;\n cardinality = await new Promise((resolve, reject) => {\n const matches = this.source.match(RdfJsQuadSource.nullifyVariables(subject), RdfJsQuadSource.nullifyVariables(predicate), RdfJsQuadSource.nullifyVariables(object), RdfJsQuadSource.nullifyVariables(graph));\n matches.on('error', reject);\n matches.on('end', () => resolve(i));\n matches.on('data', () => i++);\n });\n }\n it.setProperty('metadata', { cardinality: { type: 'exact', value: cardinality }, canContainUndefs: false });\n }\n}\nexports.RdfJsQuadSource = RdfJsQuadSource;\n//# sourceMappingURL=RdfJsQuadSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPatternRdfJsSource\"), exports);\n__exportStar(require(\"./IRdfJsSourceExtended\"), exports);\n__exportStar(require(\"./RdfJsQuadSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeJsonLd = void 0;\nconst bus_rdf_serialize_1 = require(\"@comunica/bus-rdf-serialize\");\nconst jsonld_streaming_serializer_1 = require(\"jsonld-streaming-serializer\");\n/**\n * A comunica Jsonld RDF Serialize Actor.\n */\nclass ActorRdfSerializeJsonLd extends bus_rdf_serialize_1.ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/ld+json\": 1.0\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/ld+json\": \"http://www.w3.org/ns/formats/JSON-LD\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const data = new jsonld_streaming_serializer_1.JsonLdSerializer({ space: ' '.repeat(this.jsonStringifyIndentSpaces) }).import(action.quadStream);\n return { data };\n }\n}\nexports.ActorRdfSerializeJsonLd = ActorRdfSerializeJsonLd;\n//# sourceMappingURL=ActorRdfSerializeJsonLd.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerializeJsonLd\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeN3 = void 0;\nconst bus_rdf_serialize_1 = require(\"@comunica/bus-rdf-serialize\");\nconst n3_1 = require(\"n3\");\n/**\n * A comunica N3 RDF Serialize Actor.\n */\nclass ActorRdfSerializeN3 extends bus_rdf_serialize_1.ActorRdfSerializeFixedMediaTypes {\n /**\n * @param args -\n * \\ @defaultNested {{\n * \"application/n-quads\": 1.0,\n * \"application/trig\": 0.95,\n * \"application/n-triples\": 0.8,\n * \"text/turtle\": 0.6,\n * \"text/n3\": 0.35\n * }} mediaTypePriorities\n * \\ @defaultNested {{\n * \"application/n-quads\": \"http://www.w3.org/ns/formats/N-Quads\",\n * \"application/trig\": \"http://www.w3.org/ns/formats/TriG\",\n * \"application/n-triples\": \"http://www.w3.org/ns/formats/N-Triples\",\n * \"text/turtle\": \"http://www.w3.org/ns/formats/Turtle\",\n * \"text/n3\": \"http://www.w3.org/ns/formats/N3\"\n * }} mediaTypeFormats\n */\n constructor(args) {\n super(args);\n }\n async runHandle(action, mediaType, context) {\n const data = new n3_1.StreamWriter({ format: mediaType }).import(action.quadStream);\n return { data,\n triples: mediaType === 'text/turtle' ||\n mediaType === 'application/n-triples' ||\n mediaType === 'text/n3' };\n }\n}\nexports.ActorRdfSerializeN3 = ActorRdfSerializeN3;\n//# sourceMappingURL=ActorRdfSerializeN3.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerializeN3\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaPatchSparqlUpdate = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationPatchSparqlUpdate_1 = require(\"./QuadDestinationPatchSparqlUpdate\");\n/**\n * A comunica Patch SPARQL Update RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaPatchSparqlUpdate extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'patchSparqlUpdate');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType && !action.metadata.patchSparqlUpdate) {\n throw new Error(`Actor ${this.name} could not detect a destination with 'application/sparql-update' as 'Accept-Patch' header.`);\n }\n if (!action.forceDestinationType && !action.exists) {\n throw new Error(`Actor ${this.name} can only patch a destination that already exists.`);\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as patchSparqlUpdate destination: ${action.url}`);\n return {\n destination: new QuadDestinationPatchSparqlUpdate_1.QuadDestinationPatchSparqlUpdate(action.url, action.context, this.mediatorHttp),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaPatchSparqlUpdate = ActorRdfUpdateHypermediaPatchSparqlUpdate;\n//# sourceMappingURL=ActorRdfUpdateHypermediaPatchSparqlUpdate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationPatchSparqlUpdate = void 0;\nconst stream_1 = require(\"stream\");\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst cross_fetch_1 = require(\"cross-fetch\");\nconst rdf_string_ttl_1 = require(\"rdf-string-ttl\");\n/**\n * A quad destination that represents a resource that is patchable via SPARQL Update.\n */\nclass QuadDestinationPatchSparqlUpdate {\n constructor(url, context, mediatorHttp) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n }\n insert(quads) {\n return this.wrapSparqlUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n return this.wrapSparqlUpdateRequest('DELETE', quads);\n }\n async wrapSparqlUpdateRequest(type, quads) {\n // Wrap triples in DATA block\n const dataWrapped = quads\n .map((quad) => {\n let stringQuad = `${(0, rdf_string_ttl_1.termToString)(quad.subject)} ${(0, rdf_string_ttl_1.termToString)(quad.predicate)} ${(0, rdf_string_ttl_1.termToString)(quad.object)} .`;\n if (quad.graph.termType !== 'DefaultGraph') {\n stringQuad = ` GRAPH ${(0, rdf_string_ttl_1.termToString)(quad.graph)} { ${stringQuad} }\\n`;\n }\n else {\n stringQuad = ` ${stringQuad}\\n`;\n }\n return stringQuad;\n })\n .prepend([`${type} DATA {\\n`])\n .append(['}']);\n const readable = new stream_1.Readable();\n readable._read = () => true;\n dataWrapped.on('data', (quad) => readable.push(quad));\n dataWrapped.on('end', () => readable.push(null));\n // Send data in PUT request\n const headers = new cross_fetch_1.Headers({ 'content-type': 'application/sparql-update' });\n const httpResponse = await this.mediatorHttp.mediate({\n context: this.context,\n init: {\n headers,\n method: 'PATCH',\n body: bus_http_1.ActorHttp.toWebReadableStream(readable),\n },\n input: this.url,\n });\n await (0, bus_rdf_update_quads_1.validateHttpResponse)(this.url, httpResponse);\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n throw new Error(`Patch-based SPARQL Update destinations don't support named graphs`);\n }\n async createGraphs(graphs, requireNonExistence) {\n throw new Error(`Patch-based SPARQL Update destinations don't support named graphs`);\n }\n}\nexports.QuadDestinationPatchSparqlUpdate = QuadDestinationPatchSparqlUpdate;\n//# sourceMappingURL=QuadDestinationPatchSparqlUpdate.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaPatchSparqlUpdate\"), exports);\n__exportStar(require(\"./QuadDestinationPatchSparqlUpdate\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaPutLdp = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationPutLdp_1 = require(\"./QuadDestinationPutLdp\");\n/**\n * A comunica Post LDP RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaPutLdp extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'putLdp');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType) {\n if (!action.metadata.allowHttpMethods || !action.metadata.allowHttpMethods.includes('PUT')) {\n throw new Error(`Actor ${this.name} could not detect a destination with 'Allow: PUT' header.`);\n }\n if (action.exists) {\n throw new Error(`Actor ${this.name} can only put on a destination that does not already exists.`);\n }\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as putLdp destination: ${action.url}`);\n return {\n destination: new QuadDestinationPutLdp_1.QuadDestinationPutLdp(action.url, action.context, action.metadata.putAccepted || [], this.mediatorHttp, this.mediatorRdfSerializeMediatypes, this.mediatorRdfSerialize),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaPutLdp = ActorRdfUpdateHypermediaPutLdp;\n//# sourceMappingURL=ActorRdfUpdateHypermediaPutLdp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationPutLdp = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst cross_fetch_1 = require(\"cross-fetch\");\n/**\n * A quad destination that represents a resource that can be PUT.\n */\nclass QuadDestinationPutLdp {\n constructor(url, context, mediaTypes, mediatorHttp, mediatorRdfSerializeMediatypes, mediatorRdfSerialize) {\n this.url = url;\n this.context = context;\n this.mediaTypes = mediaTypes;\n this.mediatorHttp = mediatorHttp;\n this.mediatorRdfSerializeMediatypes = mediatorRdfSerializeMediatypes;\n this.mediatorRdfSerialize = mediatorRdfSerialize;\n }\n insert(quads) {\n return this.wrapRdfUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n throw new Error(`Put-based LDP destinations don't support deletions`);\n }\n async wrapRdfUpdateRequest(type, quads) {\n // Determine media type for serialization\n const { mediaTypes } = await this.mediatorRdfSerializeMediatypes.mediate({ context: this.context, mediaTypes: true });\n const availableMediaTypes = this.mediaTypes\n .filter(mediaType => mediaType in mediaTypes);\n // Fallback to our own preferred media type\n const mediaType = availableMediaTypes.length > 0 ?\n availableMediaTypes[0] :\n Object.keys(mediaTypes).sort((typeA, typeB) => mediaTypes[typeB] - mediaTypes[typeA])[0];\n // Serialize quads\n const { handle: { data } } = await this.mediatorRdfSerialize.mediate({\n context: this.context,\n handle: { quadStream: quads, context: this.context },\n handleMediaType: mediaType,\n });\n // Send data in (LDP) PUT request\n const headers = new cross_fetch_1.Headers({ 'content-type': mediaType });\n const httpResponse = await this.mediatorHttp.mediate({\n context: this.context,\n init: {\n headers,\n method: 'PUT',\n body: bus_http_1.ActorHttp.toWebReadableStream(data),\n },\n input: this.url,\n });\n await (0, bus_rdf_update_quads_1.validateHttpResponse)(this.url, httpResponse);\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n throw new Error(`Put-based LDP destinations don't support named graphs`);\n }\n async createGraphs(graphs, requireNonExistence) {\n throw new Error(`Put-based LDP destinations don't support named graphs`);\n }\n}\nexports.QuadDestinationPutLdp = QuadDestinationPutLdp;\n//# sourceMappingURL=QuadDestinationPutLdp.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaPutLdp\"), exports);\n__exportStar(require(\"./QuadDestinationPutLdp\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermediaSparql = void 0;\nconst bus_rdf_update_hypermedia_1 = require(\"@comunica/bus-rdf-update-hypermedia\");\nconst QuadDestinationSparql_1 = require(\"./QuadDestinationSparql\");\n/**\n * A comunica SPARQL RDF Update Hypermedia Actor.\n */\nclass ActorRdfUpdateHypermediaSparql extends bus_rdf_update_hypermedia_1.ActorRdfUpdateHypermedia {\n constructor(args) {\n super(args, 'sparql');\n }\n async testMetadata(action) {\n if (!action.forceDestinationType && !action.metadata.sparqlService &&\n !(this.checkUrlSuffixSparql && action.url.endsWith('/sparql')) &&\n !(this.checkUrlSuffixUpdate && action.url.endsWith('/update'))) {\n throw new Error(`Actor ${this.name} could not detect a SPARQL service description or URL ending on /sparql or /update.`);\n }\n return true;\n }\n async run(action) {\n this.logInfo(action.context, `Identified as sparql destination: ${action.url}`);\n return {\n destination: new QuadDestinationSparql_1.QuadDestinationSparql(action.metadata.sparqlService || action.url, action.context, this.mediatorHttp),\n };\n }\n}\nexports.ActorRdfUpdateHypermediaSparql = ActorRdfUpdateHypermediaSparql;\n//# sourceMappingURL=ActorRdfUpdateHypermediaSparql.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuadDestinationSparql = void 0;\nconst fetch_sparql_endpoint_1 = require(\"fetch-sparql-endpoint\");\nconst rdf_string_ttl_1 = require(\"rdf-string-ttl\");\nconst stringifyStream = require('stream-to-string');\n/**\n * A quad destination that represents an LDP resource.\n */\nclass QuadDestinationSparql {\n constructor(url, context, mediatorHttp) {\n this.url = url;\n this.context = context;\n this.mediatorHttp = mediatorHttp;\n this.endpointFetcher = new fetch_sparql_endpoint_1.SparqlEndpointFetcher({\n fetch: (input, init) => this.mediatorHttp.mediate({ input, init, context: this.context }),\n prefixVariableQuestionMark: true,\n });\n }\n insert(quads) {\n return this.wrapSparqlUpdateRequest('INSERT', quads);\n }\n async delete(quads) {\n return this.wrapSparqlUpdateRequest('DELETE', quads);\n }\n async wrapSparqlUpdateRequest(type, quads) {\n // Wrap triples in DATA block\n const dataWrapped = quads\n .map((quad) => {\n let stringQuad = `${(0, rdf_string_ttl_1.termToString)(quad.subject)} ${(0, rdf_string_ttl_1.termToString)(quad.predicate)} ${(0, rdf_string_ttl_1.termToString)(quad.object)} .`;\n if (quad.graph.termType !== 'DefaultGraph') {\n stringQuad = ` GRAPH ${(0, rdf_string_ttl_1.termToString)(quad.graph)} { ${stringQuad} }\\n`;\n }\n else {\n stringQuad = ` ${stringQuad}\\n`;\n }\n return stringQuad;\n })\n .prepend([`${type} DATA {\\n`])\n .append(['}']);\n // Serialize query stream to string\n const query = await stringifyStream(dataWrapped);\n // Send update query to endpoint\n await this.endpointFetcher.fetchUpdate(this.url, query);\n }\n async deleteGraphs(graphsIn, requireExistence, dropGraphs) {\n const graphs = Array.isArray(graphsIn) ?\n graphsIn :\n [graphsIn];\n const queries = [];\n for (const graph of graphs) {\n let graphValue;\n if (typeof graph === 'string') {\n graphValue = graph;\n }\n else if (graph.termType === 'DefaultGraph') {\n graphValue = 'DEFAULT';\n }\n else {\n graphValue = `GRAPH <${graph.value}>`;\n }\n queries.push(`${dropGraphs ? 'DROP' : 'CLEAR'} ${requireExistence ? '' : 'SILENT '}${graphValue}`);\n }\n await this.endpointFetcher.fetchUpdate(this.url, queries.join('; '));\n }\n async createGraphs(graphs, requireNonExistence) {\n const queries = [];\n for (const graph of graphs) {\n queries.push(`CREATE${requireNonExistence ? '' : ' SILENT'} GRAPH <${graph.value}>`);\n }\n await this.endpointFetcher.fetchUpdate(this.url, queries.join('; '));\n }\n}\nexports.QuadDestinationSparql = QuadDestinationSparql;\n//# sourceMappingURL=QuadDestinationSparql.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermediaSparql\"), exports);\n__exportStar(require(\"./QuadDestinationSparql\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsHypermedia = void 0;\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst LRUCache = require(\"lru-cache\");\n/**\n * A comunica Hypermedia RDF Update Quads Actor.\n */\nclass ActorRdfUpdateQuadsHypermedia extends bus_rdf_update_quads_1.ActorRdfUpdateQuadsDestination {\n constructor(args) {\n super(args);\n this.cache = this.cacheSize ? new LRUCache({ max: this.cacheSize }) : undefined;\n const cache = this.cache;\n if (cache) {\n this.httpInvalidator.addInvalidateListener(({ url }) => url ? cache.del(url) : cache.reset());\n }\n }\n async test(action) {\n const url = (0, bus_rdf_update_quads_1.getContextDestinationUrl)((0, bus_rdf_update_quads_1.getContextDestination)(action.context));\n if (!url) {\n throw new Error(`Actor ${this.name} can only update quads against a single destination URL.`);\n }\n return true;\n }\n getDestination(context) {\n const dataDestination = (0, bus_rdf_update_quads_1.getContextDestination)(context);\n let url = (0, bus_rdf_update_quads_1.getContextDestinationUrl)(dataDestination);\n // Try to read from cache\n if (this.cache && this.cache.has(url)) {\n return this.cache.get(url);\n }\n // Otherwise, call mediators\n const ret = (async () => {\n let metadata;\n let exists;\n try {\n // Dereference destination URL\n const dereferenceRdfOutput = await this.mediatorDereferenceRdf\n .mediate({ context, url, acceptErrors: true });\n exists = dereferenceRdfOutput.exists;\n url = dereferenceRdfOutput.url;\n // Determine the metadata\n const rdfMetadataOuput = await this.mediatorMetadata.mediate({ context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples });\n metadata = (await this.mediatorMetadataExtract.mediate({\n context,\n url,\n metadata: rdfMetadataOuput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n }\n catch {\n metadata = {};\n exists = false;\n }\n // Obtain destination\n const { destination } = await this.mediatorRdfUpdateHypermedia.mediate({\n context,\n url,\n metadata,\n exists,\n forceDestinationType: (0, bus_rdf_update_quads_1.getDataDestinationType)(dataDestination),\n });\n return destination;\n })();\n if (this.cache) {\n this.cache.set(url, ret);\n }\n return ret;\n }\n}\nexports.ActorRdfUpdateQuadsHypermedia = ActorRdfUpdateQuadsHypermedia;\n//# sourceMappingURL=ActorRdfUpdateQuadsHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuadsHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsRdfJsStore = void 0;\nconst bus_rdf_update_quads_1 = require(\"@comunica/bus-rdf-update-quads\");\nconst RdfJsQuadDestination_1 = require(\"./RdfJsQuadDestination\");\n/**\n * A comunica RDFJS Store RDF Update Quads Actor.\n */\nclass ActorRdfUpdateQuadsRdfJsStore extends bus_rdf_update_quads_1.ActorRdfUpdateQuadsDestination {\n constructor(args) {\n super(args);\n }\n async test(action) {\n const destination = (0, bus_rdf_update_quads_1.getContextDestination)(action.context);\n if (!destination || typeof destination === 'string' ||\n (!('remove' in destination) && 'value' in destination && !destination.value.remove)) {\n throw new Error(`${this.name} received an invalid rdfjsStore.`);\n }\n return true;\n }\n async getDestination(context) {\n const destination = (0, bus_rdf_update_quads_1.getContextDestination)(context);\n return new RdfJsQuadDestination_1.RdfJsQuadDestination('remove' in destination ? destination : destination.value);\n }\n}\nexports.ActorRdfUpdateQuadsRdfJsStore = ActorRdfUpdateQuadsRdfJsStore;\n//# sourceMappingURL=ActorRdfUpdateQuadsRdfJsStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RdfJsQuadDestination = void 0;\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A quad destination that wraps around an {@link RDF.Store}.\n */\nclass RdfJsQuadDestination {\n constructor(store) {\n this.store = store;\n }\n promisifyEventEmitter(eventEmitter) {\n return new Promise((resolve, reject) => {\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n delete(quads) {\n return this.promisifyEventEmitter(this.store.remove(quads));\n }\n insert(quads) {\n return this.promisifyEventEmitter(this.store.import(quads));\n }\n async deleteGraphs(graphs, requireExistence, dropGraphs) {\n switch (graphs) {\n case 'ALL':\n /* eslint-disable no-fallthrough */\n // Remove the default graph\n await this.promisifyEventEmitter(this.store.deleteGraph(DF.defaultGraph()));\n // Drop through to remove all named graphs\n case 'NAMED':\n /* eslint-enable no-fallthrough */\n // Warning: this is sub-optimal!\n // Query ALL quads to determine all named graphs\n // eslint-disable-next-line no-case-declarations\n const allQuads = this.store.match();\n // eslint-disable-next-line no-case-declarations\n const namedGraphs = {};\n allQuads.on('data', (quad) => {\n if (quad.graph.termType !== 'DefaultGraph') {\n namedGraphs[(0, rdf_string_1.termToString)(quad.graph)] = true;\n }\n });\n await this.promisifyEventEmitter(allQuads);\n // Delete all named graphs\n await Promise.all(Object.keys(namedGraphs)\n .map(namedGraph => this.promisifyEventEmitter(this.store\n .deleteGraph((0, rdf_string_1.stringToTerm)(namedGraph)))));\n break;\n default:\n // Delete the default graph or a named graph\n for (const graph of Array.isArray(graphs) ? graphs : [graphs]) {\n await this.promisifyEventEmitter(this.store.deleteGraph(graph));\n }\n }\n }\n async createGraphs(graphs, requireNonExistence) {\n // We don't have to create anything, since RDF/JS stores don't record empty graphs.\n // The only check we have to do is error on existence\n if (requireNonExistence) {\n for (const graph of graphs) {\n const eventEmitter = this.store.match(undefined, undefined, undefined, graph);\n await new Promise((resolve, reject) => {\n eventEmitter.once('data', () => {\n reject(new Error(`Unable to create graph ${graph.value} as it already exists`));\n });\n eventEmitter.on('end', resolve);\n eventEmitter.on('error', reject);\n });\n }\n }\n }\n}\nexports.RdfJsQuadDestination = RdfJsQuadDestination;\n//# sourceMappingURL=RdfJsQuadDestination.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuadsRdfJsStore\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bindings = void 0;\nconst immutable_1 = require(\"immutable\");\nconst bindingsToString_1 = require(\"./bindingsToString\");\n/**\n * An immutable.js-based Bindings object.\n */\nclass Bindings {\n constructor(dataFactory, entries) {\n this.type = 'bindings';\n this.dataFactory = dataFactory;\n this.entries = entries;\n }\n has(key) {\n return this.entries.has(typeof key === 'string' ? key : key.value);\n }\n get(key) {\n return this.entries.get(typeof key === 'string' ? key : key.value);\n }\n set(key, value) {\n return new Bindings(this.dataFactory, this.entries.set(typeof key === 'string' ? key : key.value, value));\n }\n delete(key) {\n return new Bindings(this.dataFactory, this.entries.delete(typeof key === 'string' ? key : key.value));\n }\n keys() {\n return this.mapIterable(this.iteratorToIterable(this.entries.keys()), key => this.dataFactory.variable(key));\n }\n values() {\n return this.iteratorToIterable(this.entries.values());\n }\n forEach(fn) {\n this.entries.forEach((value, key) => fn(value, this.dataFactory.variable(key)));\n }\n get size() {\n return this.entries.size;\n }\n [Symbol.iterator]() {\n return this.mapIterable(this.iteratorToIterable(this.entries.entries()), ([key, value]) => [this.dataFactory.variable(key), value])[Symbol.iterator]();\n }\n equals(other) {\n if (!other) {\n return false;\n }\n if (this === other) {\n return true;\n }\n // First check if size is equal\n if (this.size !== other.size) {\n return false;\n }\n // Then check if keys and values are equal\n for (const key of this.keys()) {\n if (!this.get(key)?.equals(other.get(key))) {\n return false;\n }\n }\n return true;\n }\n filter(fn) {\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(this.entries\n .filter((value, key) => fn(value, this.dataFactory.variable(key)))));\n }\n map(fn) {\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(this.entries\n .map((value, key) => fn(value, this.dataFactory.variable(key)))));\n }\n merge(other) {\n // Determine the union of keys\n const keys = new Set([\n ...this.iteratorToIterable(this.entries.keys()),\n ...[...other.keys()].map(key => key.value),\n ]);\n // Collect entries\n const entries = [];\n for (const key of keys) {\n const left = this.entries.get(key);\n const right = other.get(this.dataFactory.variable(key));\n if (left && right && !left.equals(right)) {\n return;\n }\n const value = left || right;\n entries.push([key, value]);\n }\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(entries));\n }\n mergeWith(merger, other) {\n // Determine the union of keys\n const keys = new Set([\n ...this.iteratorToIterable(this.entries.keys()),\n ...[...other.keys()].map(key => key.value),\n ]);\n // Collect entries\n const entries = [];\n for (const key of keys) {\n const variable = this.dataFactory.variable(key);\n const left = this.entries.get(key);\n const right = other.get(variable);\n let value;\n if (left && right && !left.equals(right)) {\n value = merger(left, right, variable);\n }\n else {\n value = left || right;\n }\n entries.push([key, value]);\n }\n return new Bindings(this.dataFactory, (0, immutable_1.Map)(entries));\n }\n toString() {\n return (0, bindingsToString_1.bindingsToString)(this);\n }\n *mapIterable(iterable, callback) {\n for (const x of iterable) {\n // eslint-disable-next-line callback-return\n yield callback(x);\n }\n }\n iteratorToIterable(iterator) {\n return {\n [Symbol.iterator]: () => iterator,\n };\n }\n}\nexports.Bindings = Bindings;\n//# sourceMappingURL=Bindings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingsFactory = void 0;\nconst immutable_1 = require(\"immutable\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst Bindings_1 = require(\"./Bindings\");\n/**\n * A Bindings factory that provides Bindings backed by immutable.js.\n */\nclass BindingsFactory {\n constructor(dataFactory = new rdf_data_factory_1.DataFactory()) {\n this.dataFactory = dataFactory;\n }\n bindings(entries = []) {\n return new Bindings_1.Bindings(this.dataFactory, (0, immutable_1.Map)(entries.map(([key, value]) => [key.value, value])));\n }\n fromBindings(bindings) {\n return this.bindings([...bindings]);\n }\n fromRecord(record) {\n return this.bindings(Object.entries(record).map(([key, value]) => [this.dataFactory.variable(key), value]));\n }\n}\nexports.BindingsFactory = BindingsFactory;\n//# sourceMappingURL=BindingsFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindingsToString = void 0;\nconst rdf_string_1 = require(\"rdf-string\");\n/**\n * Stringify a bindings object.\n * @param bindings A bindings object.\n */\nfunction bindingsToString(bindings) {\n const raw = {};\n for (const key of bindings.keys()) {\n raw[key.value] = (0, rdf_string_1.termToString)(bindings.get(key));\n }\n return JSON.stringify(raw, null, ' ');\n}\nexports.bindingsToString = bindingsToString;\n//# sourceMappingURL=bindingsToString.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Bindings\"), exports);\n__exportStar(require(\"./BindingsFactory\"), exports);\n__exportStar(require(\"./bindingsToString\"), exports);\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorContextPreprocess = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for context-preprocess events.\n *\n * Actor types:\n * * Input: IAction: A context that will be processed.\n * * Test: \n * * Output: IActorContextPreprocessOutput: The resulting context.\n *\n * @see IActionContextPreprocess\n * @see IActorContextPreprocessOutput\n */\nclass ActorContextPreprocess extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorContextPreprocess = ActorContextPreprocess;\n//# sourceMappingURL=ActorContextPreprocess.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorContextPreprocess\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceRdf = void 0;\nconst bus_dereference_1 = require(\"@comunica/bus-dereference\");\n/**\n * A base actor for dereferencing URLs to quad streams.\n *\n * Actor types:\n * * Input: IActionDereferenceRdf: A URL.\n * * Test: \n * * Output: IActorDereferenceRdfOutput: A quad stream.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorDereferenceRdf extends bus_dereference_1.ActorDereferenceParse {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorDereferenceRdf = ActorDereferenceRdf;\n//# sourceMappingURL=ActorDereferenceRdf.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorDereferenceRdf\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereference = void 0;\nconst ActorDereferenceBase_1 = require(\"./ActorDereferenceBase\");\n/**\n * A base actor for dereferencing URLs to (generic) streams.\n *\n * Actor types:\n * * Input: IActionDereference: A URL.\n * * Test: \n * * Output: IActorDereferenceOutput: A Readable stream\n *\n * @see IActionDereference\n * @see IActorDereferenceOutput\n */\nclass ActorDereference extends ActorDereferenceBase_1.ActorDereferenceBase {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Handle the given error as a rejection or delegate it to the logger,\n * depending on whether or not hard errors are enabled.\n * @param {IActionDereference} action A dereference action.\n * @param {Error} error An error that has occurred.\n * @param headers Optional HTTP headers to pass.\n * @param {number} requestTime The time it took to request the page in milliseconds.\n * @return {Promise} A promise that rejects or resolves to an empty output.\n */\n async handleDereferenceErrors(action, error, headers, requestTime = 0) {\n return this.dereferenceErrorHandler(action, error, { url: action.url, exists: false, headers, requestTime });\n }\n}\nexports.ActorDereference = ActorDereference;\n//# sourceMappingURL=ActorDereference.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceBase = exports.isHardError = exports.emptyReadable = void 0;\nconst stream_1 = require(\"stream\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nfunction emptyReadable() {\n const data = new stream_1.Readable();\n data.push(null);\n return data;\n}\nexports.emptyReadable = emptyReadable;\n/**\n * Check if hard errors should occur on HTTP or parse errors.\n * @param {IActionDereference} action A dereference action.\n * @return {boolean} If hard errors are enabled.\n */\nfunction isHardError(context) {\n return !context.get(context_entries_1.KeysInitQuery.lenient);\n}\nexports.isHardError = isHardError;\n/**\n * A base actor for dereferencing URLs to (generic) streams.\n *\n * Actor types:\n * * Input: IActionDereference: A URL.\n * * Test: \n * * Output: IActorDereferenceOutput: A Readable stream\n *\n * @see IActionDereference\n * @see IActorDereferenceOutput\n */\nclass ActorDereferenceBase extends core_1.Actor {\n constructor(args) {\n super(args);\n }\n /**\n * Handle the given error as a rejection or delegate it to the logger,\n * depending on whether or not hard errors are enabled.\n * @param {I} action An action.\n * @param {Error} error An error that has occurred.\n * @param {N} output Data to add to the output\n */\n async dereferenceErrorHandler(action, error, output) {\n if (isHardError(action.context)) {\n throw error;\n }\n this.logError(action.context, error.message);\n return { ...output, data: emptyReadable() };\n }\n}\nexports.ActorDereferenceBase = ActorDereferenceBase;\n//# sourceMappingURL=ActorDereferenceBase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorDereferenceParse = exports.getMediaTypeFromExtension = void 0;\nconst stream_1 = require(\"stream\");\nconst ActorDereferenceBase_1 = require(\"./ActorDereferenceBase\");\n/**\n * Get the media type based on the extension of the given path,\n * which can be an URL or file path.\n * @param {string} path A path.\n * @param {Record} mediaMappings A collection of mappings,\n * mapping file extensions to their corresponding media type.\n * @return {string} A media type or the empty string.\n */\nfunction getMediaTypeFromExtension(path, mediaMappings) {\n const dotIndex = path.lastIndexOf('.');\n // Get extension after last dot and map to media\n return (dotIndex >= 0 && mediaMappings?.[path.slice(dotIndex + 1)]) || '';\n}\nexports.getMediaTypeFromExtension = getMediaTypeFromExtension;\n/**\n * An abstract actor that handles dereference and parse actions.\n *\n * Actor types:\n * Input: IActionDereferenceParse: A URL.\n * Test: \n * Output: IActorDereferenceParseOutput: A data stream of type output by the Parser.\n *\n */\nclass ActorDereferenceParse extends ActorDereferenceBase_1.ActorDereferenceBase {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n /**\n * If hard errors are disabled, modify the given stream so that errors are delegated to the logger.\n * @param {IActionDereferenceParse} action A dereference action.\n * @param {Readable} data A data stream.\n * @return {Readable} The resulting data stream.\n */\n handleDereferenceStreamErrors(action, data) {\n // If we don't emit hard errors, make parsing error events log instead, and silence them downstream.\n if (!(0, ActorDereferenceBase_1.isHardError)(action.context)) {\n data.on('error', error => {\n this.logError(action.context, error.message, () => ({ url: action.url }));\n // Make sure the errored stream is ended.\n data.push(null);\n });\n data = data.pipe(new stream_1.PassThrough({ objectMode: true }));\n }\n return data;\n }\n async run(action) {\n const { context } = action;\n const dereference = await this.mediatorDereference.mediate({\n ...action,\n mediaTypes: async () => (await this.mediatorParseMediatypes?.mediate({ context, mediaTypes: true }))?.mediaTypes,\n });\n let result;\n try {\n result = (await this.mediatorParse.mediate({\n context,\n handle: { context, ...dereference, metadata: await this.getMetadata(dereference) },\n handleMediaType: dereference.mediaType ||\n getMediaTypeFromExtension(dereference.url, this.mediaMappings) ||\n action.mediaType,\n })).handle;\n result.data = this.handleDereferenceStreamErrors(action, result.data);\n }\n catch (error) {\n // Close the body, to avoid process to hang\n await dereference.data.close?.();\n result = await this.dereferenceErrorHandler(action, error, {});\n }\n // Return the parsed stream and any metadata\n return { ...dereference, ...result };\n }\n}\nexports.ActorDereferenceParse = ActorDereferenceParse;\n//# sourceMappingURL=ActorDereferenceParse.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorDereference\"), exports);\n__exportStar(require(\"./ActorDereferenceParse\"), exports);\n__exportStar(require(\"./ActorDereferenceBase\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHashBindings = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for hash-bindings events.\n *\n * Actor types:\n * * Input: IActionHashBindings: Metadata for selecting a hash function.\n * * Test: IActorTest:\n * * Output: IActorHashBindingsOutput: The resulting hash function.\n *\n * @see IActionHashBindings\n * @see IActorHashBindingsTest\n * @see IActorHashBindingsOutput\n */\nclass ActorHashBindings extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorHashBindings = ActorHashBindings;\n//# sourceMappingURL=ActorHashBindings.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHashBindings\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttpInvalidate = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for http-invalidate events.\n *\n * Actor types:\n * * Input: IActionHttpInvalidate: An action for invalidating the cached contents of given URL.\n * * Test: \n * * Output: IActorHttpInvalidateOutput: An empty response.\n *\n * @see IActionHttpInvalidate\n * @see IActorHttpInvalidateOutput\n */\nclass ActorHttpInvalidate extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorHttpInvalidate = ActorHttpInvalidate;\n//# sourceMappingURL=ActorHttpInvalidate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttpInvalidateListenable = void 0;\nconst ActorHttpInvalidate_1 = require(\"./ActorHttpInvalidate\");\n/**\n * An ActorHttpInvalidate actor that allows listeners to be attached.\n *\n * @see ActorHttpInvalidate\n */\nclass ActorHttpInvalidateListenable extends ActorHttpInvalidate_1.ActorHttpInvalidate {\n constructor(args) {\n super(args);\n this.invalidateListeners = [];\n this.invalidateListeners = [];\n }\n addInvalidateListener(listener) {\n this.invalidateListeners.push(listener);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n for (const listener of this.invalidateListeners) {\n listener(action);\n }\n return {};\n }\n}\nexports.ActorHttpInvalidateListenable = ActorHttpInvalidateListenable;\n//# sourceMappingURL=ActorHttpInvalidateListenable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttpInvalidate\"), exports);\n__exportStar(require(\"./ActorHttpInvalidateListenable\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorHttp = void 0;\nconst core_1 = require(\"@comunica/core\");\nconst readable_web_to_node_stream_1 = require(\"readable-web-to-node-stream\");\nconst isStream = require('is-stream');\nconst toWebReadableStream = require('web-streams-node').toWebReadableStream;\n/**\n * A base actor for listening to HTTP events.\n *\n * Actor types:\n * * Input: IActionHttp: The HTTP request.\n * * Test: IActorHttpTest: An estimate for the response time.\n * * Output: IActorHttpOutput: The HTTP response.\n *\n * @see IActionHttp\n * @see IActorHttpTest\n * @see IActorHttpOutput\n */\nclass ActorHttp extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Converts WhatWG streams to Node streams if required.\n * Returns the input in case the stream already is a Node stream.\n * @param {ReadableStream} body\n * @returns {NodeJS.ReadableStream}\n */\n static toNodeReadable(body) {\n return isStream(body) || body === null ?\n body :\n new readable_web_to_node_stream_1.ReadableWebToNodeStream(body);\n }\n /**\n * Converts Node streams to WhatWG streams.\n * @param {NodeJS.ReadableStream} body\n * @returns {ReadableStream}\n */\n static toWebReadableStream(body) {\n return toWebReadableStream(body);\n }\n /**\n * Convert the given headers object into a raw hash.\n * @param headers A headers object.\n */\n static headersToHash(headers) {\n const hash = {};\n headers.forEach((value, key) => {\n hash[key] = value;\n });\n return hash;\n }\n}\nexports.ActorHttp = ActorHttp;\n//# sourceMappingURL=ActorHttp.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorHttp\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorInit = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A base actor for listening to init events.\n *\n * Actor types:\n * * Input: IActionInit: Contains process information\n * such as the list of arguments,\n * environment variables and input stream.\n * * Test: \n * * Output: IActorOutputInit: Contains process output streams.\n *\n * @see IActionInit\n */\nclass ActorInit extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorInit = ActorInit;\n//# sourceMappingURL=ActorInit.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorInit\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorOptimizeQueryOperation = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for optimize-query-operation events.\n *\n * Actor types:\n * * Input: IActionOptimizeQueryOperation: An incoming SPARQL operation.\n * * Test: \n * * Output: IActorOptimizeQueryOperationOutput: A (possibly optimized) outgoing SPARQL operation.\n *\n * @see IActionOptimizeQueryOperation\n * @see IActorOptimizeQueryOperationOutput\n */\nclass ActorOptimizeQueryOperation extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorOptimizeQueryOperation = ActorOptimizeQueryOperation;\n//# sourceMappingURL=ActorOptimizeQueryOperation.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorOptimizeQueryOperation\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperation = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst data_factory_1 = require(\"@comunica/data-factory\");\nconst Bindings_1 = require(\"./Bindings\");\n/**\n * A counter that keeps track blank node generated through BNODE() SPARQL\n * expressions.\n *\n * @type {number}\n */\nlet bnodeCounter = 0;\n/**\n * A comunica actor for query-operation events.\n *\n * Actor types:\n * * Input: IActionQueryOperation: A SPARQL Algebra operation.\n * * Test: \n * * Output: IActorQueryOperationOutput: A bindings stream.\n *\n * @see IActionQueryOperation\n * @see IQueryOperationResult\n */\nclass ActorQueryOperation extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /**\n * Safely cast a query operation output to a bindings output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBindings} A bindings query operation output.\n */\n static getSafeBindings(output) {\n ActorQueryOperation.validateQueryOutput(output, 'bindings');\n return output;\n }\n /**\n * Safely cast a query operation output to a quads output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultQuads} A quads query operation output.\n */\n static getSafeQuads(output) {\n ActorQueryOperation.validateQueryOutput(output, 'quads');\n return output;\n }\n /**\n * Safely cast a query operation output to a boolean output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultBoolean} A boolean query operation output.\n */\n static getSafeBoolean(output) {\n ActorQueryOperation.validateQueryOutput(output, 'boolean');\n return output;\n }\n /**\n * Safely cast a query operation output to a void output.\n * This will throw a runtime error if the output is of the incorrect type.\n * @param {IQueryOperationResult} output A query operation output.\n * @return {IQueryOperationResultVoid} A void query operation output.\n */\n static getSafeVoid(output) {\n ActorQueryOperation.validateQueryOutput(output, 'void');\n return output;\n }\n /**\n * Convert a metadata callback to a lazy callback where the response value is cached.\n * @param {() => Promise} metadata A metadata callback\n * @return {() => Promise<{[p: string]: any}>} The callback where the response will be cached.\n */\n static cachifyMetadata(metadata) {\n let lastReturn;\n // eslint-disable-next-line no-return-assign,@typescript-eslint/no-misused-promises\n return () => (lastReturn || (lastReturn = metadata()));\n }\n /**\n * Throw an error if the output type does not match the expected type.\n * @param {IQueryOperationResult} output A query operation output.\n * @param {string} expectedType The expected output type.\n */\n static validateQueryOutput(output, expectedType) {\n if (output.type !== expectedType) {\n throw new Error(`Invalid query output type: Expected '${expectedType}' but got '${output.type}'`);\n }\n }\n static getBaseExpressionContext(context) {\n const now = context.get(context_entries_1.KeysInitQuery.queryTimestamp);\n const baseIRI = context.get(context_entries_1.KeysInitQuery.baseIRI);\n // Handle two variants of providing extension functions\n if (context.has(context_entries_1.KeysInitQuery.extensionFunctionCreator) && context.has(context_entries_1.KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n let extensionFunctionCreator = context\n .get(context_entries_1.KeysInitQuery.extensionFunctionCreator);\n // Convert dictionary-based variant to callback\n const extensionFunctions = context\n .get(context_entries_1.KeysInitQuery.extensionFunctions);\n if (extensionFunctions) {\n extensionFunctionCreator = functionNamedNode => extensionFunctions[functionNamedNode.value];\n }\n return { now, baseIRI, extensionFunctionCreator };\n }\n /**\n * Create an options object that can be used to construct a sparqlee synchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n static getExpressionContext(context, mediatorQueryOperation) {\n return {\n ...this.getBaseExpressionContext(context),\n bnode: (input) => new data_factory_1.BlankNodeBindingsScoped(input || `BNODE_${bnodeCounter++}`),\n };\n }\n /**\n * Create an options object that can be used to construct a sparqlee asynchronous evaluator.\n * @param context An action context.\n * @param mediatorQueryOperation An optional query query operation mediator.\n * If defined, the existence resolver will be defined as `exists`.\n */\n static getAsyncExpressionContext(context, mediatorQueryOperation) {\n const expressionContext = {\n ...this.getBaseExpressionContext(context),\n bnode: (input) => Promise.resolve(new data_factory_1.BlankNodeBindingsScoped(input || `BNODE_${bnodeCounter++}`)),\n };\n if (mediatorQueryOperation) {\n expressionContext.exists = ActorQueryOperation.createExistenceResolver(context, mediatorQueryOperation);\n }\n return expressionContext;\n }\n /**\n * Create an existence resolver for usage within an expression context.\n * @param context An action context.\n * @param mediatorQueryOperation A query operation mediator.\n */\n static createExistenceResolver(context, mediatorQueryOperation) {\n return async (expr, bindings) => {\n const operation = (0, Bindings_1.materializeOperation)(expr.input, bindings);\n const outputRaw = await mediatorQueryOperation.mediate({ operation, context });\n const output = ActorQueryOperation.getSafeBindings(outputRaw);\n return new Promise((resolve, reject) => {\n output.bindingsStream.on('end', () => {\n resolve(false);\n });\n output.bindingsStream.on('error', reject);\n output.bindingsStream.on('data', () => {\n output.bindingsStream.close();\n resolve(true);\n });\n })\n .then((exists) => expr.not ? !exists : exists);\n };\n }\n /**\n * Throw an error if the context contains the readOnly flag.\n * @param context An action context.\n */\n static throwOnReadOnly(context) {\n if (context.get(context_entries_1.KeysQueryOperation.readOnly)) {\n throw new Error(`Attempted a write operation in read-only mode`);\n }\n }\n}\nexports.ActorQueryOperation = ActorQueryOperation;\n//# sourceMappingURL=ActorQueryOperation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationTyped = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst ActorQueryOperation_1 = require(\"./ActorQueryOperation\");\n/**\n * A base implementation for query operation actors for a specific operation type.\n */\nclass ActorQueryOperationTyped extends ActorQueryOperation_1.ActorQueryOperation {\n constructor(args, operationName) {\n super({ ...args, operationName });\n if (!this.operationName) {\n throw new Error('A valid \"operationName\" argument must be provided.');\n }\n }\n async test(action) {\n if (!action.operation) {\n throw new Error('Missing field \\'operation\\' in a query operation action.');\n }\n if (action.operation.type !== this.operationName) {\n throw new Error(`Actor ${this.name} only supports ${this.operationName} operations, but got ${action.operation.type}`);\n }\n const operation = action.operation;\n return this.testOperation(operation, action.context);\n }\n async run(action) {\n // Log to physical plan\n const physicalQueryPlanLogger = action.context\n .get(context_entries_1.KeysInitQuery.physicalQueryPlanLogger);\n if (physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(action.operation.type, undefined, action.operation, action.context.get(context_entries_1.KeysInitQuery.physicalQueryPlanNode), this.name, {});\n action.context = action.context.set(context_entries_1.KeysInitQuery.physicalQueryPlanNode, action.operation);\n }\n const operation = action.operation;\n const subContext = action.context.set(context_entries_1.KeysQueryOperation.operation, operation);\n const output = await this.runOperation(operation, subContext);\n if ('metadata' in output) {\n output.metadata = ActorQueryOperation_1.ActorQueryOperation\n .cachifyMetadata(output.metadata);\n }\n return output;\n }\n}\nexports.ActorQueryOperationTyped = ActorQueryOperationTyped;\n//# sourceMappingURL=ActorQueryOperationTyped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryOperationTypedMediated = void 0;\nconst ActorQueryOperationTyped_1 = require(\"./ActorQueryOperationTyped\");\n/**\n * A base implementation for query operation actors for a specific operation type that have a query operation mediator.\n */\nclass ActorQueryOperationTypedMediated extends ActorQueryOperationTyped_1.ActorQueryOperationTyped {\n constructor(args, operationName) {\n super(args, operationName);\n }\n}\nexports.ActorQueryOperationTypedMediated = ActorQueryOperationTypedMediated;\n//# sourceMappingURL=ActorQueryOperationTypedMediated.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.materializeOperation = exports.materializeTerm = void 0;\nconst bindings_factory_1 = require(\"@comunica/bindings-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst sparqlalgebrajs_1 = require(\"sparqlalgebrajs\");\nconst BF = new bindings_factory_1.BindingsFactory();\n/**\n * Materialize a term with the given binding.\n *\n * If the given term is a variable,\n * and that variable exist in the given bindings object,\n * the value of that binding is returned.\n * In all other cases, the term itself is returned.\n *\n * @param {RDF.Term} term A term.\n * @param {Bindings} bindings A bindings object.\n * @return {RDF.Term} The materialized term.\n */\nfunction materializeTerm(term, bindings) {\n if (term.termType === 'Variable') {\n const value = bindings.get(term);\n if (value) {\n return value;\n }\n }\n return term;\n}\nexports.materializeTerm = materializeTerm;\n/**\n * Materialize the given operation (recursively) with the given bindings.\n * Essentially, all variables in the given operation will be replaced\n * by the terms bound to the variables in the given bindings.\n * @param {Operation} operation SPARQL algebra operation.\n * @param {Bindings} bindings A bindings object.\n * @param options Options for materializations.\n * @return Algebra.Operation A new operation materialized with the given bindings.\n */\nfunction materializeOperation(operation, bindings, options = {}) {\n options = {\n strictTargetVariables: 'strictTargetVariables' in options ? options.strictTargetVariables : false,\n bindFilter: 'bindFilter' in options ? options.bindFilter : true,\n };\n return sparqlalgebrajs_1.Util.mapOperation(operation, {\n path(op, factory) {\n // Materialize variables in a path expression.\n // The predicate expression will be recursed.\n return {\n recurse: false,\n result: factory.createPath(materializeTerm(op.subject, bindings), op.predicate, materializeTerm(op.object, bindings), materializeTerm(op.graph, bindings)),\n };\n },\n pattern(op, factory) {\n // Materialize variables in the quad pattern.\n return {\n recurse: false,\n result: factory.createPattern(materializeTerm(op.subject, bindings), materializeTerm(op.predicate, bindings), materializeTerm(op.object, bindings), materializeTerm(op.graph, bindings)),\n };\n },\n extend(op) {\n // Materialize an extend operation.\n // If strictTargetVariables is true, we throw if the extension target variable is attempted to be bound.\n // Otherwise, we remove the extend operation.\n if (bindings.has(op.variable)) {\n if (options.strictTargetVariables) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(op.variable)} in a BIND operator.`);\n }\n else {\n return {\n recurse: true,\n result: materializeOperation(op.input, bindings, options),\n };\n }\n }\n return {\n recurse: true,\n result: op,\n };\n },\n group(op, factory) {\n // Materialize a group operation.\n // If strictTargetVariables is true, we throw if the group target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a GROUP BY operator.`);\n }\n }\n return {\n recurse: true,\n result: op,\n };\n }\n const variables = op.variables.filter(variable => !bindings.has(variable));\n return {\n recurse: true,\n result: factory.createGroup(op.input, variables, op.aggregates),\n };\n },\n project(op, factory) {\n // Materialize a project operation.\n // If strictTargetVariables is true, we throw if the project target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a SELECT operator.`);\n }\n }\n return {\n recurse: true,\n result: op,\n };\n }\n const variables = op.variables.filter(variable => !bindings.has(variable));\n // Only include projected variables in the sub-bindings that will be passed down recursively.\n // If we don't do this, we may be binding variables that may have the same label, but are not considered equal.\n const subBindings = BF.bindings(op.variables.map(variable => {\n const binding = bindings.get(variable);\n if (binding) {\n return [variable, binding];\n }\n // eslint-disable-next-line no-useless-return\n return;\n }).filter(entry => Boolean(entry)));\n return {\n recurse: false,\n result: factory.createProject(materializeOperation(op.input, subBindings, options), variables),\n };\n },\n values(op, factory) {\n // Materialize a values operation.\n // If strictTargetVariables is true, we throw if the values target variable is attempted to be bound.\n // Otherwise, we just filter out the bound variables and their bindings.\n if (options.strictTargetVariables) {\n for (const variable of op.variables) {\n if (bindings.has(variable)) {\n throw new Error(`Tried to bind variable ${(0, rdf_string_1.termToString)(variable)} in a VALUES operator.`);\n }\n }\n }\n else {\n const variables = op.variables.filter(variable => !bindings.has(variable));\n const valueBindings = op.bindings.map(binding => {\n const newBinding = { ...binding };\n let valid = true;\n bindings.forEach((value, key) => {\n const keyString = (0, rdf_string_1.termToString)(key);\n if (keyString in newBinding) {\n if (!value.equals(newBinding[keyString])) {\n // If the value of the binding is not equal, remove this binding completely from the VALUES clause\n valid = false;\n }\n delete newBinding[keyString];\n }\n });\n return valid ? newBinding : undefined;\n }).filter(Boolean);\n return {\n recurse: true,\n result: factory.createValues(variables, valueBindings),\n };\n }\n return {\n recurse: false,\n result: op,\n };\n },\n expression(op, factory) {\n if (!options.bindFilter) {\n return {\n recurse: false,\n result: op,\n };\n }\n if (op.expressionType === 'term') {\n // Materialize a term expression\n return {\n recurse: false,\n result: factory.createTermExpression(materializeTerm(op.term, bindings)),\n };\n }\n if (op.expressionType === 'aggregate' &&\n 'variable' in op &&\n bindings.has(op.variable)) {\n // Materialize a bound aggregate operation.\n // If strictTargetVariables is true, we throw if the expression target variable is attempted to be bound.\n // Otherwise, we ignore this operation.\n if (options.strictTargetVariables) {\n throw new Error(`Tried to bind ${(0, rdf_string_1.termToString)(op.variable)} in a ${op.aggregator} aggregate.`);\n }\n else {\n return {\n recurse: true,\n result: op,\n };\n }\n }\n return {\n recurse: true,\n result: op,\n };\n },\n });\n}\nexports.materializeOperation = materializeOperation;\n//# sourceMappingURL=Bindings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BusQueryOperation = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * Indexed bus for query operations.\n */\nclass BusQueryOperation extends core_1.BusIndexed {\n constructor(args) {\n super({\n ...args,\n actorIdentifierFields: ['operationName'],\n actionIdentifierFields: ['operation', 'type'],\n });\n }\n}\nexports.BusQueryOperation = BusQueryOperation;\n//# sourceMappingURL=BusQueryOperation.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryOperation\"), exports);\n__exportStar(require(\"./ActorQueryOperationTyped\"), exports);\n__exportStar(require(\"./ActorQueryOperationTypedMediated\"), exports);\n__exportStar(require(\"./Bindings\"), exports);\n__exportStar(require(\"./BusQueryOperation\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryParse = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for query-parse events.\n *\n * Actor types:\n * * Input: IActionSparqlParse: A SPARQL query string.\n * * Test: \n * * Output: IActorSparqlParseOutput: A parsed query in SPARQL query algebra.\n *\n * @see IActionQueryParse\n * @see IActorQueryParseOutput\n */\nclass ActorQueryParse extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorQueryParse = ActorQueryParse;\n//# sourceMappingURL=ActorQueryParse.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryParse\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerialize = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A comunica actor for query-result-serialize events.\n *\n * Actor types:\n * * Input: IActionSparqlSerialize: SPARQL bindings or a quad stream.\n * * Test: \n * * Output: IActorQueryResultSerializeOutput: A text stream.\n *\n * @see IActionSparqlSerialize\n * @see IActorQueryResultSerializeOutput\n */\nclass ActorQueryResultSerialize extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorQueryResultSerialize = ActorQueryResultSerialize;\n//# sourceMappingURL=ActorQueryResultSerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorQueryResultSerializeFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to SPARQL serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionSparqlSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorQueryResultSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nclass ActorQueryResultSerializeFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action, context) {\n return true;\n }\n}\nexports.ActorQueryResultSerializeFixedMediaTypes = ActorQueryResultSerializeFixedMediaTypes;\n//# sourceMappingURL=ActorQueryResultSerializeFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorQueryResultSerialize\"), exports);\n__exportStar(require(\"./ActorQueryResultSerializeFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinEntriesSort = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-join-entries-sort events.\n *\n * Actor types:\n * * Input: IActionRdfJoinEntriesSort: Join entries.\n * * Test: IActorTest: Test result.\n * * Output: IActorRdfJoinEntriesSortOutput: The sorted join entries.\n *\n * @see IActionRdfJoinEntriesSort\n * @see IActorTest\n * @see IActorRdfJoinEntriesSortOutput\n */\nclass ActorRdfJoinEntriesSort extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfJoinEntriesSort = ActorRdfJoinEntriesSort;\n//# sourceMappingURL=ActorRdfJoinEntriesSort.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinEntriesSort\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoinSelectivity = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-join-selectivity events.\n *\n * Actor types:\n * * Input: IActionRdfJoinSelectivity: Join entries.\n * * Test: IMediatorTypeAccuracy: The accuracy of the selectivity calculator.\n * * Output: IActorRdfJoinSelectivityOutput: The calculated join selectivity.\n *\n * @see IActionRdfJoinSelectivity\n * @see IActorRdfJoinSelectivityTest\n * @see IActorRdfJoinSelectivityOutput\n */\nclass ActorRdfJoinSelectivity extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfJoinSelectivity = ActorRdfJoinSelectivity;\n//# sourceMappingURL=ActorRdfJoinSelectivity.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoinSelectivity\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfJoin = void 0;\nconst bus_query_operation_1 = require(\"@comunica/bus-query-operation\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\nconst rdf_data_factory_1 = require(\"rdf-data-factory\");\nconst rdf_string_1 = require(\"rdf-string\");\nconst DF = new rdf_data_factory_1.DataFactory();\n/**\n * A comunica actor for joining 2 binding streams.\n *\n * Actor types:\n * * Input: IActionRdfJoin: The streams that need to be joined.\n * * Test: IMediatorTypeJoinCoefficients: Join coefficients.\n * * Output: IActorRdfJoinOutput: The resulting joined stream.\n *\n * @see IActionRdfJoin\n * @see IActorQueryOperationOutput\n */\nclass ActorRdfJoin extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param options - Actor-specific join options.\n */\n constructor(args, options) {\n super(args);\n /**\n * If this actor will be logged in the debugger and physical query plan logger\n */\n this.includeInLogs = true;\n this.logicalType = options.logicalType;\n this.physicalName = options.physicalName;\n this.limitEntries = options.limitEntries ?? Number.POSITIVE_INFINITY;\n this.limitEntriesMin = options.limitEntriesMin ?? false;\n this.canHandleUndefs = options.canHandleUndefs ?? false;\n }\n /**\n * Creates a hash of the given bindings by concatenating the results of the given variables.\n * This function will not sort the variables and expects them to be in the same order for every call.\n * @param {Bindings} bindings\n * @param {string[]} variables\n * @returns {string}\n */\n static hash(bindings, variables) {\n return variables\n .filter(variable => bindings.has(variable))\n .map(variable => (0, rdf_string_1.termToString)(bindings.get(variable)))\n .join('');\n }\n /**\n * Returns an array containing all the variable names that occur in all bindings streams.\n * @param {MetadataBindings[]} metadatas An array of optional metadata objects for the entries.\n * @returns {string[]}\n */\n static overlappingVariables(metadatas) {\n const variables = metadatas.map(metadata => metadata.variables);\n let baseArray = variables[0];\n for (const array of variables.slice(1)) {\n baseArray = baseArray.filter(el => array.some(value => value.value === el.value));\n }\n return baseArray;\n }\n /**\n * Returns the variables that will occur in the joined bindings.\n * @param {MetadataBindings[]} metadatas An array of metadata objects for the entries.\n * @returns {string[]}\n */\n static joinVariables(metadatas) {\n return [...new Set(metadatas.flatMap(metadata => metadata.variables.map(variable => variable.value)))]\n .map(variable => DF.variable(variable));\n }\n /**\n * Returns the result of joining bindings, or `null` if no join is possible.\n * @param {Bindings[]} bindings\n * @returns {Bindings}\n */\n static joinBindings(...bindings) {\n if (bindings.length === 0) {\n return null;\n }\n if (bindings.length === 1) {\n return bindings[0];\n }\n let acc = bindings[0];\n for (const binding of bindings.slice(1)) {\n const merged = acc.merge(binding);\n if (!merged) {\n return null;\n }\n acc = merged;\n }\n return acc;\n }\n /**\n * Get the estimated number of items from the given metadata.\n * @param {Record} metadata A metadata object.\n * @return {number} The estimated number of items, or `Infinity` if cardinality is falsy.\n */\n static getCardinality(metadata) {\n return metadata.cardinality;\n }\n /**\n * Obtain the metadata from all given join entries.\n * @param entries Join entries.\n */\n static async getMetadatas(entries) {\n return await Promise.all(entries.map(entry => entry.output.metadata()));\n }\n /**\n * Obtain the join entries witt metadata from all given join entries.\n * @param entries Join entries.\n */\n static async getEntriesWithMetadatas(entries) {\n const metadatas = await ActorRdfJoin.getMetadatas(entries);\n return entries.map((entry, i) => ({ ...entry, metadata: metadatas[i] }));\n }\n /**\n * Calculate the time to initiate a request for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n static getRequestInitialTimes(metadatas) {\n return metadatas.map(metadata => metadata.pageSize ? 0 : metadata.requestTime || 0);\n }\n /**\n * Calculate the time to receive a single item for the given metadata entries.\n * @param metadatas An array of checked metadata.\n */\n static getRequestItemTimes(metadatas) {\n return metadatas\n .map(metadata => !metadata.pageSize ? 0 : (metadata.requestTime || 0) / metadata.pageSize);\n }\n /**\n * Helper function to create a new metadata object for the join result.\n * For required metadata entries that are not provided, sane defaults are calculated.\n * @param entries Join entries.\n * @param metadatas Metadata of the join entries.\n * @param context The action context.\n * @param partialMetadata Partial metadata entries.\n */\n async constructResultMetadata(entries, metadatas, context, partialMetadata = {}) {\n let cardinalityJoined;\n if (partialMetadata.cardinality) {\n cardinalityJoined = partialMetadata.cardinality;\n }\n else {\n cardinalityJoined = metadatas\n .reduce((acc, metadata) => {\n const cardinalityThis = ActorRdfJoin.getCardinality(metadata);\n return {\n type: cardinalityThis.type === 'estimate' ? 'estimate' : acc.type,\n value: acc.value * cardinalityThis.value,\n };\n }, { type: 'exact', value: 1 });\n cardinalityJoined.value *= (await this.mediatorJoinSelectivity.mediate({ entries, context })).selectivity;\n }\n return {\n ...partialMetadata,\n cardinality: {\n type: cardinalityJoined.type,\n value: cardinalityJoined.value,\n },\n canContainUndefs: partialMetadata.canContainUndefs ?? metadatas.some(metadata => metadata.canContainUndefs),\n variables: ActorRdfJoin.joinVariables(metadatas),\n };\n }\n /**\n * Default test function for join actors.\n * Checks whether all iterators have metadata.\n * If yes: call the abstract getIterations method, if not: return Infinity.\n * @param {IActionRdfJoin} action The input action containing the relevant iterators\n * @returns {Promise} The join coefficients.\n */\n async test(action) {\n // Validate logical join type\n if (action.type !== this.logicalType) {\n throw new Error(`${this.name} can only handle logical joins of type '${this.logicalType}', while '${action.type}' was given.`);\n }\n // Don't allow joining of one or zero streams\n if (action.entries.length <= 1) {\n throw new Error(`${this.name} requires at least two join entries.`);\n }\n // Check if this actor can handle the given number of streams\n if (this.limitEntriesMin ? action.entries.length < this.limitEntries : action.entries.length > this.limitEntries) {\n throw new Error(`${this.name} requires ${this.limitEntries} join entries at ${this.limitEntriesMin ? 'least' : 'most'}. The input contained ${action.entries.length}.`);\n }\n // Check if all streams are bindings streams\n for (const entry of action.entries) {\n if (entry.output.type !== 'bindings') {\n throw new Error(`Invalid type of a join entry: Expected 'bindings' but got '${entry.output.type}'`);\n }\n }\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n // Check if this actor can handle undefs\n if (!this.canHandleUndefs) {\n for (const metadata of metadatas) {\n if (metadata.canContainUndefs) {\n throw new Error(`Actor ${this.name} can not join streams containing undefs`);\n }\n }\n }\n return await this.getJoinCoefficients(action, metadatas);\n }\n /**\n * Returns default input for 0 or 1 entries. Calls the getOutput function otherwise\n * @param {IActionRdfJoin} action\n * @returns {Promise}\n */\n async run(action) {\n // Prepare logging to physical plan\n // This must be called before getOutput, because we need to override the plan node in the context\n let parentPhysicalQueryPlanNode;\n if (action.context.has(context_entries_1.KeysInitQuery.physicalQueryPlanLogger)) {\n parentPhysicalQueryPlanNode = action.context.get(context_entries_1.KeysInitQuery.physicalQueryPlanNode);\n action.context = action.context.set(context_entries_1.KeysInitQuery.physicalQueryPlanNode, action);\n }\n const { result, physicalPlanMetadata } = await this.getOutput(action);\n const metadatas = await ActorRdfJoin.getMetadatas(action.entries);\n // Log to physical plan\n const physicalQueryPlanLogger = action.context.get(context_entries_1.KeysInitQuery\n .physicalQueryPlanLogger);\n if (this.includeInLogs && physicalQueryPlanLogger) {\n physicalQueryPlanLogger.logOperation(`join-${this.logicalType}`, this.physicalName, action, parentPhysicalQueryPlanNode, this.name, {\n ...physicalPlanMetadata,\n cardinalities: metadatas.map(ActorRdfJoin.getCardinality),\n joinCoefficients: await this.getJoinCoefficients(action, metadatas),\n });\n }\n // Cache metadata\n result.metadata = bus_query_operation_1.ActorQueryOperation.cachifyMetadata(result.metadata);\n return result;\n }\n}\nexports.ActorRdfJoin = ActorRdfJoin;\n//# sourceMappingURL=ActorRdfJoin.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfJoin\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadataExtract = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-metadata-extract events.\n *\n * Actor types:\n * * Input: IActionRdfMetadataExtract: A metadata quad stream\n * * Test: \n * * Output: IActorRdfMetadataExtractOutput: A metadata hash.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorRdfMetadataExtract extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfMetadataExtract = ActorRdfMetadataExtract;\n//# sourceMappingURL=ActorRdfMetadataExtract.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadataExtract\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfMetadata = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-metadata events.\n *\n * Actor types:\n * * Input: IActionRdfMetadata: An RDF quad stream.\n * * Test: \n * * Output: IActorRdfMetadataOutput: An RDF quad data stream and RDF quad metadata stream.\n *\n * @see IActionDereferenceRdf\n * @see IActorDereferenceRdfOutput\n */\nclass ActorRdfMetadata extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfMetadata = ActorRdfMetadata;\n//# sourceMappingURL=ActorRdfMetadata.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfMetadata\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseHtml = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-parse-html events.\n *\n * Actor types:\n * * Input: IActionRdfParseHtml: Callbacks for parsing results.\n * * Test: \n * * Output: IActorRdfParseHtmlOutput: An HTML event listeners.\n *\n * @see IActionRdfParseHtml\n * @see IActorRdfParseHtmlOutput\n */\nclass ActorRdfParseHtml extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfParseHtml = ActorRdfParseHtml;\n//# sourceMappingURL=ActorRdfParseHtml.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParseHtml\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParse = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF parse events.\n *\n * Actor types:\n * * Input: IActionRdfParseOrMediaType: A parse input or a media type input.\n * * Test: \n * * Output: IActorOutputRdfParseOrMediaType: The parsed quads.\n *\n * @see IActionInit\n */\nclass ActorRdfParse extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfParse = ActorRdfParse;\n//# sourceMappingURL=ActorRdfParse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfParseFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF parse events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRdfParseOrMediaType: A parse input or a media type input.\n * * Test: \n * * Output: IActorOutputRdfParseOrMediaType: The parsed quads.\n *\n * @see IActionInit\n */\nclass ActorRdfParseFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action) {\n return true;\n }\n}\nexports.ActorRdfParseFixedMediaTypes = ActorRdfParseFixedMediaTypes;\n//# sourceMappingURL=ActorRdfParseFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfParse\"), exports);\n__exportStar(require(\"./ActorRdfParseFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinksQueue = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia-links-queue events.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermediaLinksQueue: Creates a new {@link ILinkQueue} for the given seed URL.\n * * Test: \n * * Output: IActorRdfResolveHypermediaLinksQueueOutput: The created {@link ILinkQueue}.\n *\n * @see IActionRdfResolveHypermediaLinksQueue\n * @see IActorRdfResolveHypermediaLinksQueueOutput\n */\nclass ActorRdfResolveHypermediaLinksQueue extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveHypermediaLinksQueue = ActorRdfResolveHypermediaLinksQueue;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinksQueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ILinkQueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkQueueWrapper = void 0;\n/**\n * A link queue that wraps a given link queue.\n */\nclass LinkQueueWrapper {\n constructor(linkQueue) {\n this.linkQueue = linkQueue;\n }\n push(link, parent) {\n return this.linkQueue.push(link, parent);\n }\n getSize() {\n return this.linkQueue.getSize();\n }\n isEmpty() {\n return this.linkQueue.isEmpty();\n }\n pop() {\n return this.linkQueue.pop();\n }\n peek() {\n return this.linkQueue.peek();\n }\n}\nexports.LinkQueueWrapper = LinkQueueWrapper;\n//# sourceMappingURL=LinkQueueWrapper.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinksQueue\"), exports);\n__exportStar(require(\"./ILinkQueue\"), exports);\n__exportStar(require(\"./LinkQueueWrapper\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermediaLinks = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia-links events.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermediaLinks: The metadata from which the links should be extracted.\n * * Test: \n * * Output: IActorRdfResolveHypermediaLinksOutput: The URLs that were detected.\n *\n * @see IActionRdfResolveHypermediaLinks\n * @see IActorRdfResolveHypermediaLinksOutput\n */\nclass ActorRdfResolveHypermediaLinks extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveHypermediaLinks = ActorRdfResolveHypermediaLinks;\n//# sourceMappingURL=ActorRdfResolveHypermediaLinks.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermediaLinks\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveHypermedia = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-hypermedia bus.\n *\n * Actor types:\n * * Input: IActionRdfResolveHypermedia: The metadata in the document and a query operation.\n * * Test: \n * * Output: IActorRdfResolveHypermediaOutput: An RDF source.\n *\n * @see IActionRdfResolveQuadPattern\n * @see IActorRdfResolveQuadPatternOutput\n */\nclass ActorRdfResolveHypermedia extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param sourceType The source type.\n */\n constructor(args, sourceType) {\n super(args);\n this.sourceType = sourceType;\n }\n async test(action) {\n if (action.forceSourceType && this.sourceType !== action.forceSourceType) {\n throw new Error(`Actor ${this.name} is not able to handle source type ${action.forceSourceType}.`);\n }\n return this.testMetadata(action);\n }\n}\nexports.ActorRdfResolveHypermedia = ActorRdfResolveHypermedia;\n//# sourceMappingURL=ActorRdfResolveHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPattern = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-resolve-quad-pattern events.\n *\n * Actor types:\n * * Input: IActionRdfResolveQuadPattern: A quad pattern and an optional context.\n * * Test: \n * * Output: IActorRdfResolveQuadPatternOutput: The resulting quad stream and optional metadata.\n *\n * @see IActionRdfResolveQuadPattern\n * @see IActorRdfResolveQuadPatternOutput\n */\nclass ActorRdfResolveQuadPattern extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfResolveQuadPattern = ActorRdfResolveQuadPattern;\n//# sourceMappingURL=ActorRdfResolveQuadPattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfResolveQuadPatternSource = void 0;\nconst ActorRdfResolveQuadPattern_1 = require(\"./ActorRdfResolveQuadPattern\");\n/**\n * A base implementation for rdf-resolve-quad-pattern events\n * that wraps around an {@link IQuadSource}.\n *\n * @see IQuadSource\n */\nclass ActorRdfResolveQuadPatternSource extends ActorRdfResolveQuadPattern_1.ActorRdfResolveQuadPattern {\n constructor(args) {\n super(args);\n }\n async test(action) {\n return true;\n }\n async run(action) {\n const source = await this.getSource(action.context, action.pattern);\n return await this.getOutput(source, action.pattern, action.context);\n }\n /**\n * Get the output of the given action on a source.\n * @param {IQuadSource} source A quad source, possibly lazy.\n * @param {Algebra.Operation} operation The operation to apply.\n * @param ActionContext context Optional context data.\n * @return {Promise} A promise that resolves to a hash containing\n * a data RDFJS stream.\n */\n async getOutput(source, pattern, context) {\n // Create data stream\n const data = source.match(pattern.subject, pattern.predicate, pattern.object, pattern.graph);\n return { data };\n }\n}\nexports.ActorRdfResolveQuadPatternSource = ActorRdfResolveQuadPatternSource;\n//# sourceMappingURL=ActorRdfResolveQuadPatternSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfResolveQuadPattern\"), exports);\n__exportStar(require(\"./ActorRdfResolveQuadPatternSource\"), exports);\n__exportStar(require(\"./utils\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasContextSingleSourceOfType = exports.hasContextSingleSource = exports.getContextSourceUrl = exports.getContextSourceFirst = exports.getContextSource = exports.getContextSources = exports.getDataSourceContext = exports.getDataSourceValue = exports.getDataSourceType = exports.isDataSourceRawType = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * Check if the given data source is a string or RDF store.\n * @param dataSource A data source.\n */\nfunction isDataSourceRawType(dataSource) {\n return typeof dataSource === 'string' || 'match' in dataSource;\n}\nexports.isDataSourceRawType = isDataSourceRawType;\n/**\n * Get the data source type.\n * @param dataSource A data source.\n */\nfunction getDataSourceType(dataSource) {\n if (typeof dataSource === 'string') {\n return '';\n }\n return 'match' in dataSource ? 'rdfjsSource' : dataSource.type;\n}\nexports.getDataSourceType = getDataSourceType;\n/**\n * Get the data source value.\n * @param dataSource A data source.\n */\nfunction getDataSourceValue(dataSource) {\n return isDataSourceRawType(dataSource) ? dataSource : dataSource.value;\n}\nexports.getDataSourceValue = getDataSourceValue;\n/**\n * Get the data source from the given context.\n * @param {ActionContext} context An optional context.\n * @param {IDataSource} dataSource The source or undefined.\n */\nfunction getDataSourceContext(dataSource, context) {\n if (typeof dataSource === 'string' || 'match' in dataSource || !dataSource.context) {\n return context;\n }\n return context.merge(dataSource.context);\n}\nexports.getDataSourceContext = getDataSourceContext;\n/**\n * Get the sources from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataSource[]} The array of sources or undefined.\n */\nfunction getContextSources(context) {\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n}\nexports.getContextSources = getContextSources;\n/**\n * Get the source from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataSource} The source or undefined.\n */\nfunction getContextSource(context) {\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.source);\n}\nexports.getContextSource = getContextSource;\n/**\n * Get the single source if the context contains just a single source.\n * This will check both the source and sources context entries.\n * @param {IActionContext} context A context, can be null.\n * @return {IDataSource} The single datasource or undefined.\n */\nfunction getContextSourceFirst(context) {\n if (context.has(context_entries_1.KeysRdfResolveQuadPattern.source)) {\n // If the single source is set\n return context.get(context_entries_1.KeysRdfResolveQuadPattern.source);\n }\n // If multiple sources are set\n const datasources = context.get(context_entries_1.KeysRdfResolveQuadPattern.sources);\n if (datasources?.length === 1) {\n return datasources[0];\n }\n}\nexports.getContextSourceFirst = getContextSourceFirst;\n/**\n * Get the source's raw URL value from the given context.\n * @param {IDataSource} source A source.\n * @return {string} The URL or null.\n */\nfunction getContextSourceUrl(source) {\n if (source) {\n let fileUrl = getDataSourceValue(source);\n if (typeof fileUrl === 'string') {\n // Remove hashes from source\n const hashPosition = fileUrl.indexOf('#');\n if (hashPosition >= 0) {\n fileUrl = fileUrl.slice(0, hashPosition);\n }\n return fileUrl;\n }\n }\n}\nexports.getContextSourceUrl = getContextSourceUrl;\n/**\n * Check if the given context has a single source.\n * @param {ActionContext} context An optional context.\n * @return {boolean} If the given context has a single source of the given type.\n */\nfunction hasContextSingleSource(context) {\n const source = getContextSource(context);\n return Boolean(source && (isDataSourceRawType(source) || source.value));\n}\nexports.hasContextSingleSource = hasContextSingleSource;\n/**\n * Check if the given context has a single source of the given type.\n * @param {string} requiredType The required source type name.\n * @param {ActionContext} context An optional context.\n * @return {boolean} If the given context has a single source of the given type.\n */\nfunction hasContextSingleSourceOfType(requiredType, context) {\n const source = getContextSource(context);\n return Boolean(source && getDataSourceType(source) === requiredType && getDataSourceValue(source));\n}\nexports.hasContextSingleSourceOfType = hasContextSingleSourceOfType;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerialize = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A comunica actor for RDF parse events.\n *\n * Actor types:\n * * Input: IActionRdfSerialize: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutput: The serialized quads.\n *\n * @see IActionRdfSerialize\n * @see IActorRdfSerializeOutput\n */\nclass ActorRdfSerialize extends actor_abstract_mediatyped_1.ActorAbstractMediaTyped {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfSerialize = ActorRdfSerialize;\n//# sourceMappingURL=ActorRdfSerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfSerializeFixedMediaTypes = void 0;\nconst actor_abstract_mediatyped_1 = require(\"@comunica/actor-abstract-mediatyped\");\n/**\n * A base actor for listening to RDF serialize events that has fixed media types.\n *\n * Actor types:\n * * Input: IActionRdfSerializeOrMediaType: A serialize input or a media type input.\n * * Test: \n * * Output: IActorRdfSerializeOutputOrMediaType: The serialized quads.\n *\n * @see IActionInit\n */\nclass ActorRdfSerializeFixedMediaTypes extends actor_abstract_mediatyped_1.ActorAbstractMediaTypedFixed {\n /* eslint-disable max-len */\n /**\n * TODO: rm this (and eslint-disable) once we remove the abstract media typed actor\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n /* eslint-enable max-len */\n async testHandleChecked(action) {\n return true;\n }\n}\nexports.ActorRdfSerializeFixedMediaTypes = ActorRdfSerializeFixedMediaTypes;\n//# sourceMappingURL=ActorRdfSerializeFixedMediaTypes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfSerialize\"), exports);\n__exportStar(require(\"./ActorRdfSerializeFixedMediaTypes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateHypermedia = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-update-hypermedia events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateHypermedia: The metadata in the document.\n * * Test: \n * * Output: IActorRdfUpdateHypermediaOutput: An RDF destination.\n *\n * @see IActionRdfUpdateHypermedia\n * @see IActorRdfUpdateHypermediaOutput\n */\nclass ActorRdfUpdateHypermedia extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n * @param destinationType - The destination type.\n */\n constructor(args, destinationType) {\n super(args);\n this.destinationType = destinationType;\n }\n async test(action) {\n if (action.forceDestinationType && this.destinationType !== action.forceDestinationType) {\n throw new Error(`Actor ${this.name} is not able to handle destination type ${action.forceDestinationType}.`);\n }\n return this.testMetadata(action);\n }\n}\nexports.ActorRdfUpdateHypermedia = ActorRdfUpdateHypermedia;\n//# sourceMappingURL=ActorRdfUpdateHypermedia.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateHypermedia\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuads = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica actor for rdf-update-quads events.\n *\n * Actor types:\n * * Input: IActionRdfUpdateQuads: Quad insertion and deletion streams.\n * * Test: \n * * Output: IActorRdfUpdateQuadsOutput: A promise resolving when the update operation is done.\n *\n * @see IActionRdfUpdateQuads\n * @see IActorRdfUpdateQuadsOutput\n */\nclass ActorRdfUpdateQuads extends core_1.Actor {\n /**\n * @param args - @defaultNested { a } bus\n */\n constructor(args) {\n super(args);\n }\n}\nexports.ActorRdfUpdateQuads = ActorRdfUpdateQuads;\n//# sourceMappingURL=ActorRdfUpdateQuads.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActorRdfUpdateQuadsDestination = void 0;\nconst actor_rdf_resolve_quad_pattern_federated_1 = require(\"@comunica/actor-rdf-resolve-quad-pattern-federated\");\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst ActorRdfUpdateQuads_1 = require(\"./ActorRdfUpdateQuads\");\nfunction deskolemizeStream(stream, id) {\n return stream?.map(quad => actor_rdf_resolve_quad_pattern_federated_1.FederatedQuadSource.deskolemizeQuad(quad, id));\n}\nfunction deskolemize(action) {\n const destination = action.context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n const id = action.context.get(context_entries_1.KeysRdfResolveQuadPattern.sourceIds)?.get(destination);\n if (!id) {\n return action;\n }\n return {\n ...action,\n quadStreamInsert: deskolemizeStream(action.quadStreamInsert, id),\n quadStreamDelete: deskolemizeStream(action.quadStreamDelete, id),\n };\n}\n/**\n * A base implementation for rdf-update-quads events\n * that wraps around an {@link IQuadDestination}.\n *\n * @see IQuadDestination\n */\nclass ActorRdfUpdateQuadsDestination extends ActorRdfUpdateQuads_1.ActorRdfUpdateQuads {\n async test(action) {\n return true;\n }\n async run(action) {\n const destination = await this.getDestination(action.context);\n return await this.getOutput(destination, deskolemize(action), action.context);\n }\n /**\n * Get the output of the given action on a destination.\n * @param {IQuadDestination} destination A quad destination, possibly lazy.\n * @param {IActionRdfUpdateQuads} action The action.\n * @param {ActionContext} context Optional context data.\n */\n async getOutput(destination, action, context) {\n const execute = () => Promise.all([\n action.quadStreamInsert ? destination.insert(action.quadStreamInsert) : Promise.resolve(),\n action.quadStreamDelete ? destination.delete(action.quadStreamDelete) : Promise.resolve(),\n action.deleteGraphs ?\n destination.deleteGraphs(action.deleteGraphs.graphs, action.deleteGraphs.requireExistence, action.deleteGraphs.dropGraphs) :\n Promise.resolve(),\n action.createGraphs ?\n destination.createGraphs(action.createGraphs.graphs, action.createGraphs.requireNonExistence) :\n Promise.resolve(),\n ]).then(() => {\n // Return void\n });\n return { execute };\n }\n}\nexports.ActorRdfUpdateQuadsDestination = ActorRdfUpdateQuadsDestination;\n//# sourceMappingURL=ActorRdfUpdateQuadsDestination.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateHttpResponse = void 0;\nconst bus_http_1 = require(\"@comunica/bus-http\");\nconst stringifyStream = require(\"stream-to-string\");\n/**\n * Check if the http response is valid, and throw an error if not.\n * @param url The original URL that was to be updated.\n * @param httpResponse The update response.\n */\nasync function validateHttpResponse(url, httpResponse) {\n // Check if update was successful\n if (httpResponse.status >= 400) {\n // Consume the body, to avoid process to hang\n let bodyString = 'empty response';\n if (httpResponse.body) {\n const responseStream = bus_http_1.ActorHttp.toNodeReadable(httpResponse.body);\n bodyString = await stringifyStream(responseStream);\n }\n throw new Error(`Could not update ${url} (HTTP status ${httpResponse.status}):\\n${bodyString}`);\n }\n // Close response body, as we don't need it\n await httpResponse.body?.cancel();\n}\nexports.validateHttpResponse = validateHttpResponse;\n//# sourceMappingURL=IQuadDestination.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActorRdfUpdateQuads\"), exports);\n__exportStar(require(\"./ActorRdfUpdateQuadsDestination\"), exports);\n__exportStar(require(\"./IQuadDestination\"), exports);\n__exportStar(require(\"./utils\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getContextDestinationUrl = exports.getContextDestinationFirst = exports.getContextDestination = exports.getDataDestinationContext = exports.getDataDestinationValue = exports.getDataDestinationType = exports.isDataDestinationRawType = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\n/**\n * Check if the given data destination is a string or RDF store.\n * @param dataDestination A data destination.\n */\nfunction isDataDestinationRawType(dataDestination) {\n return typeof dataDestination === 'string' || 'remove' in dataDestination;\n}\nexports.isDataDestinationRawType = isDataDestinationRawType;\n/**\n * Get the data destination type.\n * @param dataDestination A data destination.\n */\nfunction getDataDestinationType(dataDestination) {\n if (typeof dataDestination === 'string') {\n return '';\n }\n return 'remove' in dataDestination ? 'rdfjsStore' : dataDestination.type;\n}\nexports.getDataDestinationType = getDataDestinationType;\n/**\n * Get the data destination value.\n * @param dataDestination A data destination.\n */\nfunction getDataDestinationValue(dataDestination) {\n return isDataDestinationRawType(dataDestination) ? dataDestination : dataDestination.value;\n}\nexports.getDataDestinationValue = getDataDestinationValue;\n/**\n * Get the context of the given destination, merged with the given context.\n * @param dataDestination A data destination.\n * @param context A context to merge with.\n */\nfunction getDataDestinationContext(dataDestination, context) {\n if (typeof dataDestination === 'string' || 'remove' in dataDestination || !dataDestination.context) {\n return context;\n }\n return context.merge(dataDestination.context);\n}\nexports.getDataDestinationContext = getDataDestinationContext;\n/**\n * Get the source destination from the given context.\n * @param {ActionContext} context An optional context.\n * @return {IDataDestination} The destination or undefined.\n */\nfunction getContextDestination(context) {\n return context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n}\nexports.getContextDestination = getContextDestination;\n/**\n * Get the single destination if the context contains just a single destination.\n * @param {ActionContext} context A context, can be null.\n * @return {IDataDestination} The single datadestination or undefined.\n */\nfunction getContextDestinationFirst(context) {\n if (context.has(context_entries_1.KeysRdfUpdateQuads.destination)) {\n // If the single destination is set\n return context.get(context_entries_1.KeysRdfUpdateQuads.destination);\n }\n}\nexports.getContextDestinationFirst = getContextDestinationFirst;\n/**\n * Get the destination's raw URL value from the given context.\n * @param {IDataDestination} destination A destination.\n * @return {string} The URL or undefined.\n */\nfunction getContextDestinationUrl(destination) {\n if (destination) {\n let fileUrl = getDataDestinationValue(destination);\n if (typeof fileUrl === 'string') {\n // Remove hashes from source\n const hashPosition = fileUrl.indexOf('#');\n if (hashPosition >= 0) {\n fileUrl = fileUrl.slice(0, hashPosition);\n }\n return fileUrl;\n }\n }\n}\nexports.getContextDestinationUrl = getContextDestinationUrl;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeysRdfUpdateQuads = exports.KeysRdfResolveQuadPattern = exports.KeysRdfParseHtmlScript = exports.KeysRdfParseJsonLd = exports.KeysQueryOperation = exports.KeysInitQuery = exports.KeysHttpProxy = exports.KeysHttpMemento = exports.KeysHttp = exports.KeysCore = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * When adding entries to this file, also add a shortcut for them in the contextKeyShortcuts TSDoc comment in\n * ActorIniQueryBase in @comunica/actor-init-query if it makes sense to use this entry externally.\n * Also, add this shortcut to IQueryContextCommon in @comunica/types.\n */\nexports.KeysCore = {\n // We create the core context keys in @comunica/core to avoid a cyclic dependency\n /**\n * A logger instance.\n */\n log: core_1.CONTEXT_KEY_LOGGER,\n};\nexports.KeysHttp = {\n /**\n * Include credentials flags.\n */\n includeCredentials: new core_1.ActionContextKey('@comunica/bus-http:include-credentials'),\n /**\n * Authentication for a source as a \"username:password\"-pair.\n */\n auth: new core_1.ActionContextKey('@comunica/bus-http:auth'),\n /**\n * Fetch function implementation.\n */\n fetch: new core_1.ActionContextKey('@comunica/bus-http:fetch'),\n};\nexports.KeysHttpMemento = {\n /**\n * The desired datetime for Memento datetime-negotiation.\n */\n datetime: new core_1.ActionContextKey('@comunica/actor-http-memento:datetime'),\n};\nexports.KeysHttpProxy = {\n /**\n * Interface.\n */\n httpProxyHandler: new core_1.ActionContextKey('@comunica/actor-http-proxy:httpProxyHandler'),\n};\nexports.KeysInitQuery = {\n /**\n * Variables that have to be pre-bound to values in the query.\n */\n initialBindings: new core_1.ActionContextKey('@comunica/actor-init-query:initialBindings'),\n /**\n * The provided query's format.\n * Defaults to { language: 'sparql', version: '1.1' }\n */\n queryFormat: new core_1.ActionContextKey('@comunica/actor-init-query:queryFormat'),\n /**\n * Which GraphQL bindings should be singularized.\n */\n graphqlSingularizeVariables: new core_1.ActionContextKey('@comunica/actor-init-query:singularizeVariables'),\n /**\n * If HTTP and parsing failures are ignored.\n */\n lenient: new core_1.ActionContextKey('@comunica/actor-init-query:lenient'),\n /**\n * The original query string.\n */\n queryString: new core_1.ActionContextKey('@comunica/actor-init-query:queryString'),\n /**\n * The original parsed query.\n */\n query: new core_1.ActionContextKey('@comunica/actor-init-query:query'),\n /**\n * The query's base IRI.\n */\n baseIRI: new core_1.ActionContextKey('@comunica/actor-init-query:baseIRI'),\n /**\n * A timestamp representing the current time.\n * This is required for certain SPARQL operations such as NOW().\n */\n queryTimestamp: new core_1.ActionContextKey('@comunica/actor-init-query:queryTimestamp'),\n /**\n * @range {functionNamedNode: RDF.NamedNode) => ((args: RDF.Term[]) => Promise) | undefined}\n * Extension function creator for a given function IRI.\n * Returned value should be an async function implementation.\n * Undefined may be returned if no implementation exists for the given function IRI.\n *\n * The dictionary-based extensionFunctions context entry may be used instead, but not simultaneously.\n */\n extensionFunctionCreator: new core_1.ActionContextKey('@comunica/actor-init-query:extensionFunctionCreator'),\n /**\n * Dictionary of extension functions.\n * Key is the IRI of the function, and value is the async function implementation.\n *\n * The callback-based extensionFunctionCreator context entry may be used instead, but not simultaneously.\n */\n extensionFunctions: new core_1.ActionContextKey('@comunica/actor-init-query:extensionFunctions'),\n /**\n * Enables manipulation of the CLI arguments and their processing.\n */\n cliArgsHandlers: new core_1.ActionContextKey('@comunica/actor-init-query:cliArgsHandlers'),\n /**\n * Explain mode of the query. Can be 'parsed', 'logical', or 'physical'.\n */\n explain: new core_1.ActionContextKey('@comunica/actor-init-query:explain'),\n /**\n * Logs the used physical operators\n */\n physicalQueryPlanLogger: new core_1.ActionContextKey('@comunica/actor-init-query:physicalQueryPlanLogger'),\n /**\n * The current physical operator within the query plan.\n * This is used to pass parent-child relationships for invoking the query plan logger.\n */\n physicalQueryPlanNode: new core_1.ActionContextKey('@comunica/actor-init-query:physicalQueryPlanNode'),\n /**\n * A JSON-LD context\n */\n jsonLdContext: new core_1.ActionContextKey('@context'),\n};\nexports.KeysQueryOperation = {\n /**\n * Context entry for the current query operation.\n */\n operation: new core_1.ActionContextKey('@comunica/bus-query-operation:operation'),\n /**\n * @type {any} The metadata from the left streams within a join operation.\n */\n joinLeftMetadata: new core_1.ActionContextKey('@comunica/bus-query-operation:joinLeftMetadata'),\n /**\n * An array of metadata from the right streams within a join operation.\n */\n joinRightMetadatas: new core_1.ActionContextKey('@comunica/bus-query-operation:joinRightMetadatas'),\n /**\n * Indicates the bindings that were used to bind the operation.\n */\n joinBindings: new core_1.ActionContextKey('@comunica/bus-query-operation:joinBindings'),\n /**\n * Flag for indicating that only read operations are allowed, defaults to false.\n */\n readOnly: new core_1.ActionContextKey('@comunica/bus-query-operation:readOnly'),\n /**\n * An internal context entry to mark that a property path with arbitrary length and a distinct key is being processed.\n */\n isPathArbitraryLengthDistinctKey: new core_1.ActionContextKey('@comunica/bus-query-operation:isPathArbitraryLengthDistinct'),\n /**\n * An indicator that the stream will be limited to the given number of elements afterwards.\n */\n limitIndicator: new core_1.ActionContextKey('@comunica/bus-query-operation:limitIndicator'),\n};\nexports.KeysRdfParseJsonLd = {\n /**\n * @range {IDocumentLoader}\n */\n documentLoader: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:documentLoader'),\n /**\n * @range {boolean}\n */\n strictValues: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:strictValues'),\n /**\n * @range {Record}\n */\n parserOptions: new core_1.ActionContextKey('@comunica/actor-rdf-parse-jsonld:parserOptions'),\n};\nexports.KeysRdfParseHtmlScript = {\n /**\n * An internal context flag to determine if the engine is already processing an HTML script tag.\n */\n processingHtmlScript: new core_1.ActionContextKey('@comunica/actor-rdf-parse-html-script:processingHtmlScript'),\n /**\n * If all HTML script tags must be considered.\n */\n extractAllScripts: new core_1.ActionContextKey('extractAllScripts'),\n};\nexports.KeysRdfResolveQuadPattern = {\n /**\n * Data sources.\n */\n sources: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:sources'),\n /**\n * A data source.\n */\n source: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:source'),\n /**\n * A map containing unique IDs for each source\n */\n sourceIds: new core_1.ActionContextKey('@comunica/bus-rdf-resolve-quad-pattern:sourceIds'),\n};\nexports.KeysRdfUpdateQuads = {\n /**\n * A data destination.\n */\n destination: new core_1.ActionContextKey('@comunica/bus-rdf-update-quads:destination'),\n};\n//# sourceMappingURL=Keys.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Keys\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionContextKey = exports.ActionContext = void 0;\nconst immutable_1 = require(\"immutable\");\n/**\n * Implementation of {@link IActionContext} using Immutable.js.\n */\nclass ActionContext {\n constructor(data = {}) {\n this.map = (0, immutable_1.Map)(data);\n }\n /**\n * Will only set the value if the key is not already set.\n */\n setDefault(key, value) {\n return this.has(key) ? this : this.set(key, value);\n }\n set(key, value) {\n return this.setRaw(key.name, value);\n }\n setRaw(key, value) {\n return new ActionContext(this.map.set(key, value));\n }\n delete(key) {\n return new ActionContext(this.map.delete(key.name));\n }\n get(key) {\n return this.getRaw(key.name);\n }\n getRaw(key) {\n return this.map.get(key);\n }\n has(key) {\n return this.hasRaw(key.name);\n }\n hasRaw(key) {\n return this.map.has(key);\n }\n merge(...contexts) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n let context = this;\n for (const source of contexts) {\n for (const key of source.keys()) {\n context = context.set(key, source.get(key));\n }\n }\n return context;\n }\n keys() {\n return [...this.map.keys()]\n .map(keyName => new ActionContextKey(keyName));\n }\n toJS() {\n return this.map.toJS();\n }\n toString() {\n return `ActionContext(${JSON.stringify(this.map.toJS())})`;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `ActionContext(${JSON.stringify(this.map.toJS(), null, ' ')})`;\n }\n /**\n * Convert the given object to an action context object if it is not an action context object yet.\n * If it already is an action context object, return the object as-is.\n * @param maybeActionContext An action context or record.\n * @return {ActionContext} An action context object.\n */\n static ensureActionContext(maybeActionContext) {\n return maybeActionContext instanceof ActionContext ?\n maybeActionContext :\n new ActionContext((0, immutable_1.Map)(maybeActionContext || {}));\n }\n}\nexports.ActionContext = ActionContext;\n/**\n * Simple implementation of {@link IActionContextKey}.\n */\nclass ActionContextKey {\n constructor(name) {\n this.name = name;\n }\n}\nexports.ActionContextKey = ActionContextKey;\n//# sourceMappingURL=ActionContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionObserver = void 0;\n/**\n * An ActionObserver can passively listen to {@link Actor#run} inputs and outputs for all actors on a certain bus.\n *\n * ActionObserver should not edit inputs and outputs,\n * they should be considered immutable.\n *\n * @see Actor\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template O The output type of an actor.\n */\nclass ActionObserver {\n /**\n * All enumerable properties from the `args` object are inherited to this observer.\n *\n * The observer will NOT automatically subscribe to the given bus when this constructor is called.\n *\n * @param {IActionObserverArgs} args Arguments object\n * @throws When required arguments are missing.\n */\n constructor(args) {\n Object.assign(this, args);\n }\n}\nexports.ActionObserver = ActionObserver;\n//# sourceMappingURL=ActionObserver.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Actor = void 0;\nconst ContextEntries_1 = require(\"./ContextEntries\");\n/**\n * An actor can act on messages of certain types and provide output of a certain type.\n *\n * The flow of an actor is as follows:\n * 1. Send a message to {@link Actor#test} to test if an actor can run that action.\n * 2. If the actor can reply to the message, let the actor run the action using {@link Actor#run}.\n *\n * An actor is typically subscribed to a bus,\n * using which the applicability to an action can be tested.\n *\n * @see Bus\n *\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Actor {\n /**\n * All enumerable properties from the `args` object are inherited to this actor.\n *\n * The actor will subscribe to the given bus when this constructor is called.\n *\n * @param {IActorArgs} args Arguments object\n * @param {string} args.name The name for this actor.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this actor subscribes to.\n * @throws When required arguments are missing.\n */\n constructor(args) {\n this.beforeActors = [];\n Object.assign(this, args);\n this.bus.subscribe(this);\n if (this.beforeActors.length > 0) {\n this.bus.addDependencies(this, this.beforeActors);\n }\n }\n /**\n * Get the logger from the given context.\n * @param {ActionContext} context An optional context.\n * @return {Logger} The logger or undefined.\n */\n static getContextLogger(context) {\n return context.get(ContextEntries_1.CONTEXT_KEY_LOGGER);\n }\n /**\n * Run the given action on this actor\n * AND invokes the {@link Bus#onRun} method.\n *\n * @param {I} action The action to run.\n * @return {Promise} A promise that resolves to the run result.\n */\n runObservable(action) {\n const output = this.run(action);\n this.bus.onRun(this, action, output);\n return output;\n }\n /**\n * Initialize this actor.\n * This should be used for doing things that take a while,\n * such as opening files.\n *\n * @return {Promise} A promise that resolves when the actor has been initialized.\n */\n async initialize() {\n return true;\n }\n /**\n * Deinitialize this actor.\n * This should be used for cleaning up things when the application is shut down,\n * such as closing files and removing temporary files.\n *\n * @return {Promise} A promise that resolves when the actor has been deinitialized.\n */\n async deinitialize() {\n return true;\n }\n /* Proxy methods for the (optional) logger that is defined in the context */\n getDefaultLogData(context, data) {\n const dataActual = data ? data() : {};\n dataActual.actor = this.name;\n return dataActual;\n }\n logTrace(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.trace(message, this.getDefaultLogData(context, data));\n }\n }\n logDebug(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.debug(message, this.getDefaultLogData(context, data));\n }\n }\n logInfo(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.info(message, this.getDefaultLogData(context, data));\n }\n }\n logWarn(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.warn(message, this.getDefaultLogData(context, data));\n }\n }\n logError(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.error(message, this.getDefaultLogData(context, data));\n }\n }\n logFatal(context, message, data) {\n const logger = Actor.getContextLogger(context);\n if (logger) {\n logger.fatal(message, this.getDefaultLogData(context, data));\n }\n }\n}\nexports.Actor = Actor;\n//# sourceMappingURL=Actor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bus = void 0;\n/**\n * A publish-subscribe bus for sending actions to actors\n * to test whether or not they can run an action.\n *\n * This bus does not run the action itself,\n * for that a {@link Mediator} can be used.\n *\n * @see Actor\n * @see Mediator\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Bus {\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n constructor(args) {\n this.actors = [];\n this.observers = [];\n // Mapping from dependency (after) to dependents (before)\n this.dependencyLinks = new Map();\n Object.assign(this, args);\n }\n /**\n * Subscribe the given actor to the bus.\n * After this, the given actor can be unsubscribed from the bus by calling {@link Bus#unsubscribe}.\n *\n * An actor that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {A} actor The actor to subscribe.\n */\n subscribe(actor) {\n this.actors.push(actor);\n this.reorderForDependencies();\n }\n /**\n * Subscribe the given observer to the bus.\n * After this, the given observer can be unsubscribed from the bus by calling {@link Bus#unsubscribeObserver}.\n *\n * An observer that is subscribed multiple times will exist that amount of times in the bus.\n *\n * @param {ActionObserver} observer The observer to subscribe.\n */\n subscribeObserver(observer) {\n this.observers.push(observer);\n }\n /**\n * Unsubscribe the given actor from the bus.\n *\n * An actor that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {A} actor The actor to unsubscribe\n * @return {boolean} If the given actor was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n unsubscribe(actor) {\n const index = this.actors.indexOf(actor);\n if (index >= 0) {\n this.actors.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n * Unsubscribe the given observer from the bus.\n *\n * An observer that is subscribed multiple times will be unsubscribed only once.\n *\n * @param {ActionObserver} observer The observer to unsubscribe.\n * @return {boolean} If the given observer was successfully unsubscribed,\n * otherwise it was not subscribed before.\n */\n unsubscribeObserver(observer) {\n const index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n * Publish an action to all actors in the bus to test if they can run the action.\n *\n * @param {I} action An action to publish\n * @return {IActorReply, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>[]}\n * An array of reply objects. Each object contains a reference to the actor,\n * and a promise to its {@link Actor#test} result.\n */\n publish(action) {\n return this.actors.map((actor) => ({ actor, reply: actor.test(action) }));\n }\n /**\n * Invoked when an action was run by an actor.\n *\n * @param actor The action on which the {@link Actor#run} method was invoked.\n * @param {I} action The original action input.\n * @param {Promise} output A promise resolving to the final action output.\n */\n onRun(actor, action, output) {\n for (const observer of this.observers) {\n observer.onRun(actor, action, output);\n }\n }\n /**\n * Indicate that the given actor has the given actor dependencies.\n *\n * This will ensure that the given actor will be present in the bus *before* the given dependencies.\n *\n * @param {A} dependent A dependent actor that will be placed before the given actors.\n * @param {A[]} dependencies Actor dependencies that will be placed after the given actor.\n */\n addDependencies(dependent, dependencies) {\n for (const dependency of dependencies) {\n let existingDependencies = this.dependencyLinks.get(dependency);\n if (!existingDependencies) {\n existingDependencies = [];\n this.dependencyLinks.set(dependency, existingDependencies);\n }\n existingDependencies.push(dependent);\n }\n this.reorderForDependencies();\n }\n /**\n * Reorder the bus based on all present dependencies.\n */\n reorderForDependencies() {\n if (this.dependencyLinks.size > 0) {\n const actorsAfter = [];\n // Temporarily remove all actors that have dependencies\n for (const actorAfter of this.dependencyLinks.keys()) {\n const dependentPos = this.actors.indexOf(actorAfter);\n if (dependentPos >= 0) {\n this.actors.splice(dependentPos, 1);\n actorsAfter.push(actorAfter);\n }\n }\n // Iteratively append actors based on the first dependency link\n // that has all of its dependencies available in the array\n while (actorsAfter.length > 0) {\n // Find the first actor that has all of its dependencies available.\n let activeActorAfterId = -1;\n for (let i = 0; i < actorsAfter.length; i++) {\n let validLink = true;\n for (const dependency of this.dependencyLinks.get(actorsAfter[i])) {\n if (!this.actors.includes(dependency) && actorsAfter.includes(dependency)) {\n validLink = false;\n break;\n }\n }\n if (validLink) {\n activeActorAfterId = i;\n break;\n }\n }\n // If none of the pending links are possible, there must be a cyclic dependency\n if (activeActorAfterId < 0) {\n throw new Error(`Cyclic dependency links detected in bus ${this.name}`);\n }\n // The dependent may not be available (yet), so we don't add it to the array (yet).\n const activeActorAfter = actorsAfter.splice(activeActorAfterId, 1)[0];\n this.actors.push(activeActorAfter);\n }\n }\n }\n}\nexports.Bus = Bus;\n//# sourceMappingURL=Bus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BusIndexed = void 0;\nconst Bus_1 = require(\"./Bus\");\n/**\n * A bus that indexes identified actors,\n * so that actions with a corresponding identifier can be published more efficiently.\n *\n * Multiple actors with the same identifier can be subscribed.\n *\n * If actors or actions do not have a valid identifier,\n * then this will fallback to the normal bus behaviour.\n *\n * @see Bus\n *\n * @template A The actor type that can subscribe to the sub.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass BusIndexed extends Bus_1.Bus {\n /**\n * All enumerable properties from the `args` object are inherited to this bus.\n *\n * @param {IBusIndexedArgs} args Arguments object\n * @param {string} args.name The name for the bus\n * @throws When required arguments are missing.\n */\n constructor(args) {\n super(args);\n this.actorsIndex = {};\n }\n subscribe(actor) {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n let actors = this.actorsIndex[actorId];\n if (!actors) {\n actors = this.actorsIndex[actorId] = [];\n }\n actors.push(actor);\n super.subscribe(actor);\n }\n unsubscribe(actor) {\n const actorId = this.getActorIdentifier(actor) || '_undefined_';\n const actors = this.actorsIndex[actorId];\n if (actors) {\n const i = actors.indexOf(actor);\n if (i >= 0) {\n actors.splice(i, 1);\n }\n if (actors.length === 0) {\n delete this.actorsIndex[actorId];\n }\n }\n return super.unsubscribe(actor);\n }\n publish(action) {\n const actionId = this.getActionIdentifier(action);\n if (actionId) {\n const actors = [...this.actorsIndex[actionId] || [], ...this.actorsIndex._undefined_ || []];\n return actors.map((actor) => ({ actor, reply: actor.test(action) }));\n }\n return super.publish(action);\n }\n getActorIdentifier(actor) {\n return this.actorIdentifierFields.reduce((object, field) => object[field], actor);\n }\n getActionIdentifier(action) {\n return this.actionIdentifierFields.reduce((object, field) => object[field], action);\n }\n}\nexports.BusIndexed = BusIndexed;\n//# sourceMappingURL=BusIndexed.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONTEXT_KEY_LOGGER = void 0;\nconst ActionContext_1 = require(\"./ActionContext\");\nexports.CONTEXT_KEY_LOGGER = new ActionContext_1.ActionContextKey('@comunica/core:log');\n//# sourceMappingURL=ContextEntries.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logger = void 0;\n/**\n * A logger accepts messages from different levels\n * and emits them in a certain way.\n */\nclass Logger {\n /**\n * Convert a string-based logging level to a numerical logging level.\n * @param level A string-based logging level\n * @return The numerical logging level, or undefined.\n */\n static getLevelOrdinal(level) {\n return Logger.LEVELS[level];\n }\n}\nexports.Logger = Logger;\n/**\n * All available logging levels.\n * @type {{trace: number; debug: number; info: number; warn: number; error: number; fatal: number}}\n */\nLogger.LEVELS = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n};\n//# sourceMappingURL=Logger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mediator = void 0;\n/**\n * A mediator can mediate an action over a bus of actors.\n *\n * It does the following:\n * 1. Accepts an action in {@link Mediator#mediate}.\n * 2. Sends the action to the bus to test its applicability on all actors.\n * 3. It _mediates_ over these test results.\n * 4. It selects the _best_ actor.\n * 5. The action is run by the _best_ actor, and the result if returned.\n *\n * The _mediates_ and _best_ parts are filled in by subclasses of this abstract Mediator class.\n *\n * @template A The type of actor to mediator over.\n * @template I The input type of an actor.\n * @template T The test type of an actor.\n * @template O The output type of an actor.\n */\nclass Mediator {\n /**\n * All enumerable properties from the `args` object are inherited to this mediator.\n *\n * @param {IMediatorArgs, I extends IAction, T extends IActorTest,\n * O extends IActorOutput>} args Arguments object\n * @param {string} args.name The name for this mediator.\n * @param {Bus, I extends IAction, T extends IActorTest, O extends IActorOutput>} args.bus\n * The bus this mediator will mediate over.\n * @throws When required arguments are missing.\n */\n constructor(args) {\n Object.assign(this, args);\n }\n /**\n * Publish the given action in the bus.\n *\n * This will send the test action on all actors in the bus.\n * All actor replies will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {IActorReply, I extends IAction, T extends IActorTest, O extends IActorOutput>[]}\n * The list of actor replies.\n */\n publish(action) {\n // Test all actors in the bus\n const actors = this.bus.publish(action);\n if (actors.length === 0) {\n throw new Error(`No actors are able to reply to a message in the bus ${this.bus.name}`);\n }\n return actors;\n }\n /**\n * Mediate for the given action to get an actor.\n *\n * This will send the test action on all actors in the bus.\n * The actor that tests _best_ will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the _best_ actor.\n */\n async mediateActor(action) {\n // Mediate to one actor and run that actor.\n return await this.mediateWith(action, this.publish(action));\n }\n /**\n * Mediate for the given action.\n *\n * This will send the test action on all actors in the bus.\n * The action will be run on the actor that tests _best_,\n * of which the result will be returned.\n *\n * @param {I} action The action to mediate for.\n * @return {Promise} A promise that resolves to the mediation result.\n */\n async mediate(action) {\n // Mediate to one actor and run the action on it\n const actor = await this.mediateActor(action);\n return actor.runObservable(action);\n }\n}\nexports.Mediator = Mediator;\n//# sourceMappingURL=Mediator.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ActionContext\"), exports);\n__exportStar(require(\"./Bus\"), exports);\n__exportStar(require(\"./BusIndexed\"), exports);\n__exportStar(require(\"./ContextEntries\"), exports);\n__exportStar(require(\"./ActionObserver\"), exports);\n__exportStar(require(\"./Actor\"), exports);\n__exportStar(require(\"./Logger\"), exports);\n__exportStar(require(\"./Mediator\"), exports);\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNodeBindingsScoped = void 0;\n/**\n * A blank node that is scoped to a set of bindings.\n */\nclass BlankNodeBindingsScoped {\n constructor(value) {\n this.termType = 'BlankNode';\n this.singleBindingsScope = true;\n this.value = value;\n }\n equals(other) {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNodeBindingsScoped = BlankNodeBindingsScoped;\n//# sourceMappingURL=BlankNodeBindingsScoped.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlankNodeScoped = void 0;\n/**\n * A blank node that is scoped to a certain source.\n */\nclass BlankNodeScoped {\n constructor(value, skolemized) {\n this.termType = 'BlankNode';\n this.value = value;\n this.skolemized = skolemized;\n }\n equals(other) {\n // eslint-disable-next-line no-implicit-coercion\n return !!other && other.termType === 'BlankNode' && other.value === this.value;\n }\n}\nexports.BlankNodeScoped = BlankNodeScoped;\n//# sourceMappingURL=BlankNodeScoped.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./BlankNodeScoped\"), exports);\n__exportStar(require(\"./BlankNodeBindingsScoped\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoggerVoid = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A logger that voids everything.\n */\nclass LoggerVoid extends core_1.Logger {\n debug() {\n // Void\n }\n error() {\n // Void\n }\n fatal() {\n // Void\n }\n info() {\n // Void\n }\n trace() {\n // Void\n }\n warn() {\n // Void\n }\n}\nexports.LoggerVoid = LoggerVoid;\n//# sourceMappingURL=LoggerVoid.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LoggerVoid\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorAll = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that runs all actors that resolve their test.\n * This mediator will always resolve to the first actor's output.\n */\nclass MediatorAll extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediate(action) {\n // Collect all actors that resolve their test\n const validActors = [];\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n testResults = [];\n }\n for (const testResult of testResults) {\n try {\n await testResult.reply;\n validActors.push(testResult.actor);\n }\n catch {\n // Ignore errors\n }\n }\n // Send action to all valid actors\n const outputs = await Promise.all(validActors.map(actor => actor.runObservable(action)));\n return outputs[0];\n }\n async mediateWith() {\n throw new Error('Unsupported operation: MediatorAll#mediateWith');\n }\n}\nexports.MediatorAll = MediatorAll;\n//# sourceMappingURL=MediatorAll.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorAll\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorCombinePipeline = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that goes over all actors in sequence and forwards I/O.\n * This required the action input and the actor output to be of the same type.\n */\nclass MediatorCombinePipeline extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediate(action) {\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n // If no actors are available, just return the input as output\n return action;\n }\n if (this.filterErrors) {\n const _testResults = [];\n for (const result of testResults) {\n try {\n await result.reply;\n _testResults.push(result);\n }\n catch {\n // Ignore errors\n }\n }\n testResults = _testResults;\n }\n // Delegate test errors.\n testResults = await Promise.all(testResults.map(async ({ actor, reply }) => ({ actor, reply: await reply })));\n // Order the test results if ordering is enabled\n if (this.order) {\n // A function used to extract an ordering value from a test result\n const getOrder = (elem) => {\n // If there is a field key use it, otherwise use the input\n // element for ordering\n const value = this.field ? elem[this.field] : elem;\n // Check the ordering value is a number\n if (typeof value !== 'number') {\n throw new Error('Cannot order elements that are not numbers.');\n }\n return value;\n };\n testResults = testResults.sort((actor1, actor2) => (this.order === 'increasing' ? 1 : -1) *\n (getOrder(actor1.reply) - getOrder(actor2.reply)));\n }\n // Pass action to first actor,\n // and each actor output as input to the following actor.\n let handle = action;\n for (const { actor } of testResults) {\n handle = { ...handle, ...await actor.runObservable(handle) };\n }\n // Return the final actor output\n return handle;\n }\n mediateWith() {\n throw new Error('Method not supported.');\n }\n}\nexports.MediatorCombinePipeline = MediatorCombinePipeline;\n//# sourceMappingURL=MediatorCombinePipeline.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorCombinePipeline\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorCombineUnion = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A comunica mediator that takes the union of all actor results.\n *\n * The actors that are registered first will have priority on setting overlapping fields.\n */\nclass MediatorCombineUnion extends core_1.Mediator {\n constructor(args) {\n super(args);\n this.combiner = this.createCombiner();\n }\n async mediate(action) {\n let testResults;\n try {\n testResults = this.publish(action);\n }\n catch {\n testResults = [];\n }\n // Delegate test errors.\n await Promise.all(testResults.map(({ reply }) => reply));\n // Run action on all actors.\n const results = await Promise.all(testResults.map(result => result.actor.runObservable(action)));\n // Return the combined results.\n return this.combiner(results);\n }\n mediateWith() {\n throw new Error('Method not supported.');\n }\n createCombiner() {\n return (results) => {\n const data = {};\n data[this.field] = {};\n // eslint-disable-next-line unicorn/prefer-spread\n [{}].concat(results.map((result) => result[this.field]))\n .forEach((value, index, arr) => {\n data[this.field] = { ...value, ...data[this.field] };\n });\n return data;\n };\n }\n}\nexports.MediatorCombineUnion = MediatorCombineUnion;\n//# sourceMappingURL=MediatorCombineUnion.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorCombineUnion\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorJoinCoefficientsFixed = void 0;\nconst context_entries_1 = require(\"@comunica/context-entries\");\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that mediates over actors implementing the Join Coefficients mediator type and assigns fixed weights\n * to calculate an overall score and pick the actor with the lowest score.\n */\nclass MediatorJoinCoefficientsFixed extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n async mediateWith(action, testResults) {\n // Obtain test results\n const errors = [];\n const promises = testResults\n .map(({ reply }) => reply)\n .map(promise => promise.catch(error => {\n errors.push(error);\n }));\n const coefficients = await Promise.all(promises);\n // Check if we had a limit indicator in the context\n const limitIndicator = action.context.get(context_entries_1.KeysQueryOperation.limitIndicator);\n // Calculate costs\n const costs = coefficients\n // eslint-disable-next-line array-callback-return\n .map(coeff => {\n if (coeff &&\n // If we have a limit indicator,\n // disallow entries that have a number of iterations that is higher than the limit AND persist items.\n // In these cases, join operators that produce results early on will be preferred.\n (!limitIndicator || coeff.iterations < limitIndicator || coeff.persistedItems === 0)) {\n return coeff.iterations * this.cpuWeight +\n coeff.persistedItems * this.memoryWeight +\n coeff.blockingItems * this.timeWeight +\n coeff.requestTime * this.ioWeight;\n }\n });\n // Determine index with lowest cost\n let minIndex = -1;\n let minValue = Number.POSITIVE_INFINITY;\n for (const [i, cost] of costs.entries()) {\n if (cost !== undefined && (minIndex === -1 || cost < minValue)) {\n minIndex = i;\n minValue = cost;\n }\n }\n // Reject if all actors rejected\n if (minIndex < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${errors.map(error => error.message).join('\\n')}`);\n }\n // Return actor with lowest cost\n const bestActor = testResults[minIndex].actor;\n // Emit calculations in logger\n if (bestActor.includeInLogs) {\n core_1.Actor.getContextLogger(action.context)?.debug(`Determined physical join operator '${bestActor.logicalType}-${bestActor.physicalName}'`, {\n entries: action.entries.length,\n variables: await Promise.all(action.entries\n .map(async (entry) => (await entry.output.metadata()).variables.map(variable => variable.value))),\n costs: Object.fromEntries(costs.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ])),\n coefficients: Object.fromEntries(coefficients.map((coeff, i) => [\n `${testResults[i].actor.logicalType}-${testResults[i].actor.physicalName}`,\n coeff,\n ])),\n });\n }\n return bestActor;\n }\n}\nexports.MediatorJoinCoefficientsFixed = MediatorJoinCoefficientsFixed;\n//# sourceMappingURL=MediatorJoinCoefficientsFixed.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorJoinCoefficientsFixed\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorNumber = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that can mediate over a single number field.\n *\n * It takes the required 'field' and 'type' parameters.\n * The 'field' parameter represents the field name of the test result field over which must be mediated.\n * The 'type' parameter\n */\nclass MediatorNumber extends core_1.Mediator {\n constructor(args) {\n super(args);\n this.indexPicker = this.createIndexPicker();\n }\n /**\n * @return {(tests: T[]) => number} A function that returns the index of the test result\n * that has been chosen by this mediator.\n */\n createIndexPicker() {\n switch (this.type) {\n case 'min':\n return (tests) => tests.reduce((prev, curr, i) => {\n const val = this.getOrDefault(curr[this.field], Number.POSITIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] > val) ? [val, i] : prev;\n }, [Number.NaN, -1])[1];\n case 'max':\n return (tests) => tests.reduce((prev, curr, i) => {\n const val = this.getOrDefault(curr[this.field], Number.NEGATIVE_INFINITY);\n return val !== null && (Number.isNaN(prev[0]) || prev[0] < val) ? [val, i] : prev;\n }, [Number.NaN, -1])[1];\n default:\n throw new Error(`No valid \"type\" value was given, must be either 'min' or 'max', but got: ${this.type}`);\n }\n }\n getOrDefault(value, defaultValue) {\n return value === undefined ? defaultValue : value;\n }\n async mediateWith(action, testResults) {\n let promises = testResults.map(({ reply }) => reply);\n const errors = [];\n if (this.ignoreErrors) {\n const dummy = {};\n dummy[this.field] = null;\n promises = promises.map(promise => promise.catch(error => {\n errors.push(error);\n return dummy;\n }));\n }\n const results = await Promise.all(promises);\n const index = this.indexPicker(results);\n if (index < 0) {\n throw new Error(`All actors rejected their test in ${this.name}\\n${errors.map(error => error.message).join('\\n')}`);\n }\n return testResults[index].actor;\n }\n}\nexports.MediatorNumber = MediatorNumber;\n//# sourceMappingURL=MediatorNumber.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorNumber\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediatorRace = void 0;\nconst core_1 = require(\"@comunica/core\");\n/**\n * A mediator that picks the first actor that resolves its test.\n */\nclass MediatorRace extends core_1.Mediator {\n constructor(args) {\n super(args);\n }\n mediateWith(action, testResults) {\n return new Promise((resolve, reject) => {\n const errors = [];\n for (const testResult of testResults) {\n testResult.reply.then(() => {\n resolve(testResult.actor);\n }).catch(error => {\n // Reject if all replies were rejected\n errors.push(error);\n if (errors.length === testResults.length) {\n reject(new Error(`${this.name} mediated over all rejecting actors:\\n${errors.map(subError => subError.message).join('\\n')}`));\n }\n });\n }\n });\n }\n}\nexports.MediatorRace = MediatorRace;\n//# sourceMappingURL=MediatorRace.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./MediatorRace\"), exports);\n//# sourceMappingURL=index.js.map","'use strict'\n\nvar Parser = require('jsonparse')\n , through = require('through')\n\nvar bufferFrom = Buffer.from && Buffer.from !== Uint8Array.from\n\n/*\n\n the value of this.stack that creationix's jsonparse has is weird.\n\n it makes this code ugly, but his problem is way harder that mine,\n so i'll forgive him.\n\n*/\n\nexports.parse = function (path, map) {\n var header, footer\n var parser = new Parser()\n var stream = through(function (chunk) {\n if('string' === typeof chunk)\n chunk = bufferFrom ? Buffer.from(chunk) : new Buffer(chunk)\n parser.write(chunk)\n },\n function (data) {\n if(data)\n stream.write(data)\n if (header)\n stream.emit('header', header)\n if (footer)\n stream.emit('footer', footer)\n stream.queue(null)\n })\n\n if('string' === typeof path)\n path = path.split('.').map(function (e) {\n if (e === '$*')\n return {emitKey: true}\n else if (e === '*')\n return true\n else if (e === '') // '..'.split('.') returns an empty string\n return {recurse: true}\n else\n return e\n })\n\n\n var count = 0, _key\n if(!path || !path.length)\n path = null\n\n parser.onValue = function (value) {\n if (!this.root)\n stream.root = value\n\n if(! path) return\n\n var i = 0 // iterates on path\n var j = 0 // iterates on stack\n var emitKey = false;\n var emitPath = false;\n while (i < path.length) {\n var key = path[i]\n var c\n j++\n\n if (key && !key.recurse) {\n c = (j === this.stack.length) ? this : this.stack[j]\n if (!c) return\n if (! check(key, c.key)) {\n setHeaderFooter(c.key, value)\n return\n }\n emitKey = !!key.emitKey;\n emitPath = !!key.emitPath;\n i++\n } else {\n i++\n var nextKey = path[i]\n if (! nextKey) return\n while (true) {\n c = (j === this.stack.length) ? this : this.stack[j]\n if (!c) return\n if (check(nextKey, c.key)) {\n i++;\n if (!Object.isFrozen(this.stack[j]))\n this.stack[j].value = null\n break\n } else {\n setHeaderFooter(c.key, value)\n }\n j++\n }\n }\n\n }\n\n // emit header\n if (header) {\n stream.emit('header', header);\n header = false;\n }\n if (j !== this.stack.length) return\n\n count ++\n var actualPath = this.stack.slice(1).map(function(element) { return element.key }).concat([this.key])\n var data = value\n if(null != data)\n if(null != (data = map ? map(data, actualPath) : data)) {\n if (emitKey || emitPath) {\n data = { value: data };\n if (emitKey)\n data[\"key\"] = this.key;\n if (emitPath)\n data[\"path\"] = actualPath;\n }\n\n stream.queue(data)\n }\n if (this.value) delete this.value[this.key]\n for(var k in this.stack)\n if (!Object.isFrozen(this.stack[k]))\n this.stack[k].value = null\n }\n parser._onToken = parser.onToken;\n\n parser.onToken = function (token, value) {\n parser._onToken(token, value);\n if (this.stack.length === 0) {\n if (stream.root) {\n if(!path)\n stream.queue(stream.root)\n count = 0;\n stream.root = null;\n }\n }\n }\n\n parser.onError = function (err) {\n if(err.message.indexOf(\"at position\") > -1)\n err.message = \"Invalid JSON (\" + err.message + \")\";\n stream.emit('error', err)\n }\n\n return stream\n\n function setHeaderFooter(key, value) {\n // header has not been emitted yet\n if (header !== false) {\n header = header || {}\n header[key] = value\n }\n\n // footer has not been emitted yet but header has\n if (footer !== false && header === false) {\n footer = footer || {}\n footer[key] = value\n }\n }\n}\n\nfunction check (x, y) {\n if ('string' === typeof x)\n return y == x\n else if (x && 'function' === typeof x.exec)\n return x.exec(y)\n else if ('boolean' === typeof x || 'object' === typeof x)\n return x\n else if ('function' === typeof x)\n return x(y)\n return false\n}\n\nexports.stringify = function (op, sep, cl, indent) {\n indent = indent || 0\n if (op === false){\n op = ''\n sep = '\\n'\n cl = ''\n } else if (op == null) {\n\n op = '[\\n'\n sep = '\\n,\\n'\n cl = '\\n]\\n'\n\n }\n\n //else, what ever you like\n\n var stream\n , first = true\n , anyData = false\n stream = through(function (data) {\n anyData = true\n try {\n var json = JSON.stringify(data, null, indent)\n } catch (err) {\n return stream.emit('error', err)\n }\n if(first) { first = false ; stream.queue(op + json)}\n else stream.queue(sep + json)\n },\n function (data) {\n if(!anyData)\n stream.queue(op)\n stream.queue(cl)\n stream.queue(null)\n })\n\n return stream\n}\n\nexports.stringifyObject = function (op, sep, cl, indent) {\n indent = indent || 0\n if (op === false){\n op = ''\n sep = '\\n'\n cl = ''\n } else if (op == null) {\n\n op = '{\\n'\n sep = '\\n,\\n'\n cl = '\\n}\\n'\n\n }\n\n //else, what ever you like\n\n var first = true\n var anyData = false\n var stream = through(function (data) {\n anyData = true\n var json = JSON.stringify(data[0]) + ':' + JSON.stringify(data[1], null, indent)\n if(first) { first = false ; this.queue(op + json)}\n else this.queue(sep + json)\n },\n function (data) {\n if(!anyData) this.queue(op)\n this.queue(cl)\n\n this.queue(null)\n })\n\n return stream\n}\n\n\n","/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n","\nconst DynamicNestedLoopJoin = require('./join/DynamicNestedLoopJoin');\nconst HashJoin = require('./join/HashJoin');\nconst NestedLoopJoin = require('./join/NestedLoopJoin');\nconst SymmetricHashJoin = require('./join/SymmetricHashJoin');\n\nconst MergeStream = require('./util/MergeIterator');\n\nmodule.exports = {\n DynamicNestedLoopJoin,\n HashJoin,\n NestedLoopJoin,\n SymmetricHashJoin,\n\n MergeStream\n};","\nlet AsyncIterator = require('asynciterator');\nlet MultiTransformIterator = AsyncIterator.MultiTransformIterator;\nlet SimpleTransformIterator = AsyncIterator.SimpleTransformIterator;\n\n// Nested Loop Join, but the values of the inner loop are determined by each value of the outer loop, possibly reducing the number of necessary checks\nclass DynamicNestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, funRight, funJoin, options)\n {\n super(left, options);\n\n this.funRight = funRight;\n this.funJoin = funJoin;\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.funRight(leftItem), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = DynamicNestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Hash_join\nclass HashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.addedDataListener = false;\n this.left = left;\n this.right = right;\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.leftMap = new Map();\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.readable = false;\n\n this.left.on('end', allowJoining.bind(this));\n\n function allowJoining ()\n {\n if (this.leftMap.size <= 0)\n return this.close();\n this.readable = true;\n this.right.on('readable', () => this.readable = true);\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n this.on('newListener', (eventName) =>\n {\n if (eventName === 'data' && !this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n })\n }\n\n hasResults ()\n {\n return !this.right.ended || this.matchIdx < this.matches.length;\n }\n\n close ()\n {\n super.close();\n this.left.close();\n this.right.close();\n }\n\n read ()\n {\n if (!this.addedDataListener)\n {\n this.addedDataListener = true;\n this._addDataListener();\n }\n\n if (this.ended || !this.readable)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n this.match = this.right.read();\n\n if (this.match === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(this.match);\n this.matches = this.leftMap.get(hash) || [];\n this.matchIdx = 0;\n\n // array is filled again so recursive call can have results\n return this.read();\n }\n\n _addDataListener()\n {\n this.left.on('data', addItem.bind(this));\n\n function addItem(item)\n {\n let hash = this.funHash(item);\n if (!this.leftMap.has(hash))\n this.leftMap.set(hash, []);\n let arr = this.leftMap.get(hash);\n arr.push(item);\n }\n }\n}\n\nmodule.exports = HashJoin;\n","\nconst { MultiTransformIterator, SimpleTransformIterator, scheduleTask } = require('asynciterator');\n\n// https://en.wikipedia.org/wiki/Nested_loop_join\nclass NestedLoopJoin extends MultiTransformIterator\n{\n constructor (left, right, funJoin, options)\n {\n super(left, options);\n\n this.right = right;\n this.funJoin = funJoin; // function that joins 2 elements or returns null if join is not possible\n this.on('end', () => this.right.close());\n }\n\n close ()\n {\n super.close();\n scheduleTask(() => this.right.close());\n }\n\n _createTransformer (leftItem)\n {\n return new SimpleTransformIterator(this.right.clone(), { transform: (rightItem, done, push) =>\n {\n let result = this.funJoin(leftItem, rightItem);\n if (result !== null)\n push(result);\n done();\n }});\n }\n}\n\nmodule.exports = NestedLoopJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// https://en.wikipedia.org/wiki/Symmetric_Hash_Join\nclass SymmetricHashJoin extends AsyncIterator\n{\n constructor (left, right, funHash, funJoin)\n {\n super();\n\n this.left = left;\n this.right = right;\n\n this.funHash = funHash;\n this.funJoin = funJoin;\n\n this.usedLeft = false;\n this.leftMap = new Map();\n this.rightMap = new Map();\n\n this.on('end', () => this._cleanup() );\n\n this.match = null;\n this.matches = [];\n this.matchIdx = 0;\n\n if (this.left.readable || this.right.readable)\n {\n this.readable = true;\n }\n\n this.left.on('error', (error) => this.destroy(error));\n this.right.on('error', (error) => this.destroy(error));\n\n this.left.on('readable', () => this.readable = true);\n this.right.on('readable', () => this.readable = true);\n\n // this needs to be here since it's possible the left/right streams only get ended after there are no more results left\n this.left.on ('end', () => { if (!this.hasResults()) this._end(); });\n this.right.on('end', () => { if (!this.hasResults()) this._end(); });\n }\n\n hasResults()\n {\n // The \"!!this.match\" condition was added as a workaround to race\n // conditions and/or duplicate \"end\" events that may lead to premature\n // cleanups of the \"this.matches\" array.\n // See https://github.com/joachimvh/asyncjoin/issues/7\n return !this.left.ended || !this.right.ended || (!!this.matches && this.matchIdx < this.matches.length);\n }\n\n _cleanup ()\n {\n // motivate garbage collector to remove these\n this.leftMap = null;\n this.rightMap = null;\n this.matches = null;\n }\n\n close ()\n {\n super.close();\n this.left.close();\n this.right.close();\n }\n\n read ()\n {\n if (this.ended)\n return null;\n\n while (this.matchIdx < this.matches.length)\n {\n let item = this.matches[this.matchIdx++];\n let result = this.usedLeft ? this.funJoin(this.match, item) : this.funJoin(item, this.match);\n if (result !== null)\n return result;\n }\n\n if (!this.hasResults())\n this._end();\n\n let item = null;\n // try both streams if the first one has no value\n for (let i = 0; i < 2; ++i)\n {\n item = this.usedLeft ? this.right.read() : this.left.read();\n this.usedLeft = !this.usedLeft; // try other stream next time\n\n // found a result, no need to check the other stream this run\n if (item !== null)\n break;\n }\n\n if (item === null)\n {\n this.readable = false;\n return null;\n }\n\n let hash = this.funHash(item);\n let map = this.usedLeft ? this.leftMap : this.rightMap;\n if (!map.has(hash))\n map.set(hash, []);\n let arr = map.get(hash);\n arr.push(item);\n\n this.match = item;\n this.matches = (this.usedLeft ? this.rightMap : this.leftMap).get(hash) || [];\n this.matchIdx = 0;\n\n // array is filled again so recursive call can have results\n return this.read();\n }\n}\n\nmodule.exports = SymmetricHashJoin;\n","\nlet AsyncIterator = require('asynciterator').AsyncIterator;\n\n// merges the contents of multiple streams\nclass MergeIterator extends AsyncIterator\n{\n constructor (streams)\n {\n super();\n \n if (!Array.isArray(streams))\n streams = Array.prototype.slice.call(arguments);\n \n this.streams = streams;\n \n for (let stream of streams)\n {\n stream.on('readable', () => this.emit('readable'));\n stream.on('end', () => this._removeStream(stream));\n }\n \n if (this.streams.length === 0)\n this.close();\n \n this.idx = this.streams.length-1;\n }\n \n _removeStream (stream)\n {\n let idx = this.streams.indexOf(stream);\n if (idx < 0)\n return;\n \n this.streams.splice(idx, 1);\n if (this.idx >= this.streams.length)\n --this.idx;\n \n if (this.streams.length === 0)\n this._end();\n }\n \n close ()\n {\n super.close();\n for (let stream of this.streams)\n stream.close();\n }\n \n read ()\n {\n for (let attempts = 0; attempts < this.streams.length; ++attempts)\n {\n this.idx = (this.idx + 1) % this.streams.length;\n let item = this.streams[this.idx].read();\n if (item !== null)\n return item;\n }\n \n return null;\n }\n}\n\nmodule.exports = MergeIterator;","const df_395_1 = new (require('@comunica/logger-void').LoggerVoid)();\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-init/^2.0.0/components/ActorInit.jsonld#ActorInit_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-context-preprocess/^2.0.0/components/ActorContextPreprocess.jsonld#ActorContextPreprocess_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-hash-bindings/^2.0.0/components/ActorHashBindings.jsonld#ActorHashBindings_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-optimize-query-operation/^2.0.0/components/ActorOptimizeQueryOperation.jsonld#ActorOptimizeQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus = new (require('@comunica/bus-query-operation').BusQueryOperation)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-operation/^2.0.0/components/ActorQueryOperation.jsonld#ActorQueryOperation_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-parse/^2.0.0/components/ActorQueryParse.jsonld#ActorQueryParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-result-serialize/^2.0.0/components/ActorQueryResultSerialize.jsonld#ActorQueryResultSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http-invalidate/^2.0.0/components/ActorHttpInvalidate.jsonld#ActorHttpInvalidate_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-serialize/^2.0.0/components/ActorRdfSerialize.jsonld#ActorRdfSerialize_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-http/^2.0.0/components/ActorHttp.jsonld#ActorHttp_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference/^2.0.0/components/ActorDereference.jsonld#ActorDereference_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse/^2.0.0/components/ActorRdfParse.jsonld#ActorRdfParse_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-dereference-rdf/^2.0.0/components/ActorDereferenceRdf.jsonld#ActorDereferenceRdf_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-entries-sort/^2.0.0/components/ActorRdfJoinEntriesSort.jsonld#ActorRdfJoinEntriesSort_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join-selectivity/^2.0.0/components/ActorRdfJoinSelectivity.jsonld#ActorRdfJoinSelectivity_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata/^2.0.0/components/ActorRdfMetadata.jsonld#ActorRdfMetadata_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-metadata-extract/^2.0.0/components/ActorRdfMetadataExtract.jsonld#ActorRdfMetadataExtract_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-parse-html/^2.0.0/components/ActorRdfParseHtml.jsonld#ActorRdfParseHtml_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia/^2.0.0/components/ActorRdfResolveHypermedia.jsonld#ActorRdfResolveHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links/^2.0.0/components/ActorRdfResolveHypermediaLinks.jsonld#ActorRdfResolveHypermediaLinks_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-hypermedia-links-queue/^2.0.0/components/ActorRdfResolveHypermediaLinksQueue.jsonld#ActorRdfResolveHypermediaLinksQueue_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-hypermedia/^2.0.0/components/ActorRdfUpdateHypermedia.jsonld#ActorRdfUpdateHypermedia_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-update-quads/^2.0.0/components/ActorRdfUpdateQuads.jsonld#ActorRdfUpdateQuads_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-join/^2.0.0/components/ActorRdfJoin.jsonld#ActorRdfJoin_default_bus'\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus = new (require('@comunica/core').Bus)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-rdf-resolve-quad-pattern/^2.0.0/components/ActorRdfResolveQuadPattern.jsonld#ActorRdfResolveQuadPattern_default_bus'\n});\nconst urn_comunica_default_context_preprocess_actors_source_to_destination = new (require('@comunica/actor-context-preprocess-source-to-destination').ActorContextPreprocessSourceToDestination)({\n 'name': 'urn:comunica:default:context-preprocess/actors#source-to-destination',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_context_preprocess_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:context-preprocess/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_context_preprocess__2_0_0_components_ActorContextPreprocess_jsonld_ActorContextPreprocess_default_bus\n});\nconst urn_comunica_default_hash_bindings_actors_sha1 = new (require('@comunica/actor-hash-bindings-sha1').ActorHashBindingsSha1)({\n 'name': 'urn:comunica:default:hash-bindings/actors#sha1',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_hash_bindings_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:hash-bindings/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_hash_bindings__2_0_0_components_ActorHashBindings_jsonld_ActorHashBindings_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_mediators_main = new (require('@comunica/mediator-combine-pipeline').MediatorCombinePipeline)({\n 'name': 'urn:comunica:default:optimize-query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_bgp = new (require('@comunica/actor-optimize-query-operation-join-bgp').ActorOptimizeQueryOperationJoinBgp)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_bgp_to_join = new (require('@comunica/actor-optimize-query-operation-bgp-to-join').ActorOptimizeQueryOperationBgpToJoin)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#bgp-to-join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_optimize_query_operation_actors_join_connected = new (require('@comunica/actor-optimize-query-operation-join-connected').ActorOptimizeQueryOperationJoinConnected)({\n 'name': 'urn:comunica:default:optimize-query-operation/actors#join-connected',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_optimize_query_operation__2_0_0_components_ActorOptimizeQueryOperation_jsonld_ActorOptimizeQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'httpRequests',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:query-operation/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_values = new (require('@comunica/actor-query-operation-values').ActorQueryOperationValues)({\n 'name': 'urn:comunica:default:query-operation/actors#values',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_parse_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-parse/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_actors_sparql = new (require('@comunica/actor-query-parse-sparql').ActorQueryParseSparql)({\n 'prefixes': {\"dbpedia\":\"http://dbpedia.org/resource/\",\"dbpedia-owl\":\"http://dbpedia.org/ontology/\",\"dbpprop\":\"http://dbpedia.org/property/\",\"dc\":\"http://purl.org/dc/terms/\",\"dc11\":\"http://purl.org/dc/elements/1.1/\",\"dcterms\":\"http://purl.org/dc/terms/\",\"foaf\":\"http://xmlns.com/foaf/0.1/\",\"geo\":\"http://www.w3.org/2003/01/geo/wgs84_pos#\",\"owl\":\"http://www.w3.org/2002/07/owl#\",\"rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"rdfs\":\"http://www.w3.org/2000/01/rdf-schema#\",\"schema\":\"http://schema.org/\",\"skos\":\"http://www.w3.org/2008/05/skos#\",\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"},\n 'name': 'urn:comunica:default:query-parse/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_parse_actors_graphql = new (require('@comunica/actor-query-parse-graphql').ActorQueryParseGraphql)({\n 'name': 'urn:comunica:default:query-parse/actors#graphql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_parse__2_0_0_components_ActorQueryParse_jsonld_ActorQueryParse_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:query-result-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:query-result-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_json = new (require('@comunica/actor-query-result-serialize-json').ActorQueryResultSerializeJson)({\n 'mediaTypePriorities': {\"application/json\":1},\n 'mediaTypeFormats': {\"application/json\":\"https://comunica.linkeddatafragments.org/#results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_simple = new (require('@comunica/actor-query-result-serialize-simple').ActorQueryResultSerializeSimple)({\n 'mediaTypePriorities': {\"simple\":0.9},\n 'mediaTypeFormats': {\"simple\":\"https://comunica.linkeddatafragments.org/#results_simple\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#simple',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_csv = new (require('@comunica/actor-query-result-serialize-sparql-csv').ActorQueryResultSerializeSparqlCsv)({\n 'mediaTypePriorities': {\"text/csv\":0.75},\n 'mediaTypeFormats': {\"text/csv\":\"http://www.w3.org/ns/formats/SPARQL_Results_CSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#csv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_json = new (require('@comunica/actor-query-result-serialize-sparql-json').ActorQueryResultSerializeSparqlJson)({\n 'mediaTypePriorities': {\"application/sparql-results+json\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+json\":\"http://www.w3.org/ns/formats/SPARQL_Results_JSON\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-json',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_tsv = new (require('@comunica/actor-query-result-serialize-sparql-tsv').ActorQueryResultSerializeSparqlTsv)({\n 'mediaTypePriorities': {\"text/tab-separated-values\":0.75},\n 'mediaTypeFormats': {\"text/tab-separated-values\":\"http://www.w3.org/ns/formats/SPARQL_Results_TSV\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-tsv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_sparql_xml = new (require('@comunica/actor-query-result-serialize-sparql-xml').ActorQueryResultSerializeSparqlXml)({\n 'mediaTypePriorities': {\"application/sparql-results+xml\":0.8},\n 'mediaTypeFormats': {\"application/sparql-results+xml\":\"http://www.w3.org/ns/formats/SPARQL_Results_XML\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#sparql-xml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_table = new (require('@comunica/actor-query-result-serialize-table').ActorQueryResultSerializeTable)({\n 'columnWidth': 50,\n 'mediaTypePriorities': {\"table\":0.6},\n 'mediaTypeFormats': {\"table\":\"https://comunica.linkeddatafragments.org/#results_table\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#table',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_tree = new (require('@comunica/actor-query-result-serialize-tree').ActorQueryResultSerializeTree)({\n 'mediaTypePriorities': {\"tree\":0.5},\n 'mediaTypeFormats': {\"tree\":\"https://comunica.linkeddatafragments.org/#results_tree\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#tree',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_http_invalidate_mediators_main = new (require('@comunica/mediator-all').MediatorAll)({\n 'name': 'urn:comunica:default:http-invalidate/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_update_quads_hypermedia__2_0_0_components_ActorRdfUpdateQuadsHypermedia_jsonld_IActorRdfUpdateQuadsHypermediaArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-update-quads-hypermedia/^2.0.0/components/ActorRdfUpdateQuadsHypermedia.jsonld#IActorRdfUpdateQuadsHypermediaArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_resolve_quad_pattern_hypermedia__2_0_0_components_ActorRdfResolveQuadPatternHypermedia_jsonld_IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator = new (require('@comunica/bus-http-invalidate').ActorHttpInvalidateListenable)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-resolve-quad-pattern-hypermedia/^2.0.0/components/ActorRdfResolveQuadPatternHypermedia.jsonld#IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http_invalidate__2_0_0_components_ActorHttpInvalidate_jsonld_ActorHttpInvalidate_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_serialize = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-serialize/mediators#serialize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypeFormats',\n 'name': 'urn:comunica:default:rdf-serialize/mediators#mediaTypeFormat',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_n3 = new (require('@comunica/actor-rdf-serialize-n3').ActorRdfSerializeN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'name': 'urn:comunica:default:rdf-serialize/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst urn_comunica_default_rdf_serialize_actors_jsonld = new (require('@comunica/actor-rdf-serialize-jsonld').ActorRdfSerializeJsonLd)({\n 'jsonStringifyIndentSpaces': 2,\n 'mediaTypePriorities': {\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-serialize/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_serialize__2_0_0_components_ActorRdfSerialize_jsonld_ActorRdfSerialize_default_bus\n});\nconst https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__2_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer = new (require('@comunica/actor-query-result-serialize-stats').ActionObserverHttp)({\n 'name': 'https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-result-serialize-stats/^2.0.0/components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats_default_observer',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_http_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'time',\n 'type': 'min',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:http/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_http_actors_fetch = new (require('@comunica/actor-http-fetch').ActorHttpFetch)({\n 'agentOptions': {\"keepAlive\":true,\"maxSockets\":5},\n 'name': 'urn:comunica:default:http/actors#fetch',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus\n});\nconst urn_comunica_default_dereference_actors_fallback = new (require('@comunica/actor-dereference-fallback').ActorDereferenceFallback)({\n 'name': 'urn:comunica:default:dereference/actors#fallback',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_dereference_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus\n});\nconst urn_comunica_default_rdf_parse_mediators_parse = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-parse/mediators#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_mediators_mediaType = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'mediaTypes',\n 'name': 'urn:comunica:default:rdf-parse/mediators#mediaType',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_n3 = new (require('@comunica/actor-rdf-parse-n3').ActorRdfParseN3)({\n 'mediaTypePriorities': {\"application/n-quads\":1,\"application/n-triples\":0.8,\"application/trig\":0.95,\"text/n3\":0.35,\"text/turtle\":0.6},\n 'mediaTypeFormats': {\"application/n-quads\":\"http://www.w3.org/ns/formats/N-Quads\",\"application/n-triples\":\"http://www.w3.org/ns/formats/N-Triples\",\"application/trig\":\"http://www.w3.org/ns/formats/TriG\",\"text/n3\":\"http://www.w3.org/ns/formats/N3\",\"text/turtle\":\"http://www.w3.org/ns/formats/Turtle\"},\n 'priorityScale': 1,\n 'name': 'urn:comunica:default:rdf-parse/actors#n3',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_rdfxml = new (require('@comunica/actor-rdf-parse-rdfxml').ActorRdfParseRdfXml)({\n 'mediaTypePriorities': {\"application/rdf+xml\":1},\n 'mediaTypeFormats': {\"application/rdf+xml\":\"http://www.w3.org/ns/formats/RDF_XML\"},\n 'priorityScale': 0.5,\n 'name': 'urn:comunica:default:rdf-parse/actors#rdfxml',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_xmlrdfa = new (require('@comunica/actor-rdf-parse-xml-rdfa').ActorRdfParseXmlRdfa)({\n 'mediaTypePriorities': {\"application/xml\":1,\"image/svg+xml\":1,\"text/xml\":1},\n 'mediaTypeFormats': {\"application/xml\":\"http://www.w3.org/ns/formats/RDFa\",\"image/svg+xml\":\"http://www.w3.org/ns/formats/RDFa\",\"text/xml\":\"http://www.w3.org/ns/formats/RDFa\"},\n 'priorityScale': 0.3,\n 'name': 'urn:comunica:default:rdf-parse/actors#xmlrdfa',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_dereference_rdf_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:dereference-rdf/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_actors_cardinality = new (require('@comunica/actor-rdf-join-entries-sort-cardinality').ActorRdfJoinEntriesSortCardinality)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/actors#cardinality',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_entries_sort_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-join-entries-sort/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_entries_sort__2_0_0_components_ActorRdfJoinEntriesSort_jsonld_ActorRdfJoinEntriesSort_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_actors_variable_counting = new (require('@comunica/actor-rdf-join-selectivity-variable-counting').ActorRdfJoinSelectivityVariableCounting)({\n 'name': 'urn:comunica:default:rdf-join-selectivity/actors#variable-counting',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_join_selectivity_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'accuracy',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-join-selectivity/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join_selectivity__2_0_0_components_ActorRdfJoinSelectivity_jsonld_ActorRdfJoinSelectivity_default_bus\n});\nconst urn_comunica_default_rdf_metadata_actors_primary_topic = new (require('@comunica/actor-rdf-metadata-primary-topic').ActorRdfMetadataPrimaryTopic)({\n 'metadataToData': false,\n 'dataToMetadataOnInvalidMetadataGraph': true,\n 'name': 'urn:comunica:default:rdf-metadata/actors#primary-topic',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_actors_all = new (require('@comunica/actor-rdf-metadata-all').ActorRdfMetadataAll)({\n 'name': 'urn:comunica:default:rdf-metadata/actors#all',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-metadata/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata__2_0_0_components_ActorRdfMetadata_jsonld_ActorRdfMetadata_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_controls = new (require('@comunica/actor-rdf-metadata-extract-hydra-controls').ActorRdfMetadataExtractHydraControls)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-controls',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_count = new (require('@comunica/actor-rdf-metadata-extract-hydra-count').ActorRdfMetadataExtractHydraCount)({\n 'predicates': [\n 'http://www.w3.org/ns/hydra/core#totalItems',\n 'http://rdfs.org/ns/void#triples'\n],\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-count',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_hydra_pagesize = new (require('@comunica/actor-rdf-metadata-extract-hydra-pagesize').ActorRdfMetadataExtractHydraPagesize)({\n 'predicates': [\n 'http://www.w3.org/ns/hydra/core#itemsPerPage'\n],\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#hydra-pagesize',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_request_time = new (require('@comunica/actor-rdf-metadata-extract-request-time').ActorRdfMetadataExtractRequestTime)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#request-time',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_allow_http_methods = new (require('@comunica/actor-rdf-metadata-extract-allow-http-methods').ActorRdfMetadataExtractAllowHttpMethods)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#allow-http-methods',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_put_accepted = new (require('@comunica/actor-rdf-metadata-extract-put-accepted').ActorRdfMetadataExtractPutAccepted)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#put-accepted',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_patch_sparql_update = new (require('@comunica/actor-rdf-metadata-extract-patch-sparql-update').ActorRdfMetadataExtractPatchSparqlUpdate)({\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#patch-sparql-update',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_actors_sparql_service = new (require('@comunica/actor-rdf-metadata-extract-sparql-service').ActorRdfMetadataExtractSparqlService)({\n 'inferHttpsEndpoint': true,\n 'name': 'urn:comunica:default:rdf-metadata-extract/actors#sparql-service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_metadata_extract_mediators_main = new (require('@comunica/mediator-combine-union').MediatorCombineUnion)({\n 'field': 'metadata',\n 'name': 'urn:comunica:default:rdf-metadata-extract/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_metadata_extract__2_0_0_components_ActorRdfMetadataExtract_jsonld_ActorRdfMetadataExtract_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_html = new (require('@comunica/actor-rdf-parse-html').ActorRdfParseHtml)({\n 'busRdfParseHtml': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus,\n 'mediaTypePriorities': {\"application/xhtml+xml\":0.9,\"text/html\":1},\n 'mediaTypeFormats': {\"application/xhtml+xml\":\"http://www.w3.org/ns/formats/HTML\",\"text/html\":\"http://www.w3.org/ns/formats/HTML\"},\n 'priorityScale': 0.2,\n 'name': 'urn:comunica:default:rdf-parse/actors#html',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_microdata = new (require('@comunica/actor-rdf-parse-html-microdata').ActorRdfParseHtmlMicrodata)({\n 'name': 'urn:comunica:default:rdf-parse-html/actors#microdata',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_rdfa = new (require('@comunica/actor-rdf-parse-html-rdfa').ActorRdfParseHtmlRdfa)({\n 'name': 'urn:comunica:default:rdf-parse-html/actors#rdfa',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_actors_none = new (require('@comunica/actor-rdf-resolve-hypermedia-none').ActorRdfResolveHypermediaNone)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/actors#none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_mediators_main = new (require('@comunica/mediator-number').MediatorNumber)({\n 'field': 'filterFactor',\n 'type': 'max',\n 'ignoreErrors': true,\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_actors_next = new (require('@comunica/actor-rdf-resolve-hypermedia-links-next').ActorRdfResolveHypermediaLinksNext)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/actors#next',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links__2_0_0_components_ActorRdfResolveHypermediaLinks_jsonld_ActorRdfResolveHypermediaLinks_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_actors_fifo = new (require('@comunica/actor-rdf-resolve-hypermedia-links-queue-fifo').ActorRdfResolveHypermediaLinksQueueFifo)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/actors#fifo',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia-links-queue/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia_links_queue__2_0_0_components_ActorRdfResolveHypermediaLinksQueue_jsonld_ActorRdfResolveHypermediaLinksQueue_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-hypermedia/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_rdfjs_store = new (require('@comunica/actor-rdf-update-quads-rdfjs-store').ActorRdfUpdateQuadsRdfJsStore)({\n 'name': 'urn:comunica:default:rdf-update-quads/actors#rdfjs-store',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-update-quads/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_rdf_join_mediators_main = new (require('@comunica/mediator-join-coefficients-fixed').MediatorJoinCoefficientsFixed)({\n 'cpuWeight': 1,\n 'memoryWeight': 1,\n 'timeWeight': 10,\n 'ioWeight': 100,\n 'name': 'urn:comunica:default:rdf-join/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_mediators_main = new (require('@comunica/mediator-race').MediatorRace)({\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/mediators#main',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_rdfjs_source = new (require('@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source').ActorRdfResolveQuadPatternRdfJsSource)({\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#rdfjs-source',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_query_operation_actors_ask = new (require('@comunica/actor-query-operation-ask').ActorQueryOperationAsk)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#ask',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_bgp = new (require('@comunica/actor-query-operation-bgp-join').ActorQueryOperationBgpJoin)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#bgp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_construct = new (require('@comunica/actor-query-operation-construct').ActorQueryOperationConstruct)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#construct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_describe = new (require('@comunica/actor-query-operation-describe-subject').ActorQueryOperationDescribeSubject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#describe',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_distinct = new (require('@comunica/actor-query-operation-distinct-hash').ActorQueryOperationDistinctHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#distinct',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_extend = new (require('@comunica/actor-query-operation-extend').ActorQueryOperationExtend)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#extend',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_filter = new (require('@comunica/actor-query-operation-filter-sparqlee').ActorQueryOperationFilterSparqlee)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#filter',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_from = new (require('@comunica/actor-query-operation-from-quad').ActorQueryOperationFromQuad)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#from',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_group = new (require('@comunica/actor-query-operation-group').ActorQueryOperationGroup)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#group',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_nop = new (require('@comunica/actor-query-operation-nop').ActorQueryOperationNop)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#nop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_orderby = new (require('@comunica/actor-query-operation-orderby-sparqlee').ActorQueryOperationOrderBySparqlee)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#orderby',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_project = new (require('@comunica/actor-query-operation-project').ActorQueryOperationProject)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#project',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_reduced = new (require('@comunica/actor-query-operation-reduced-hash').ActorQueryOperationReducedHash)({\n 'mediatorHashBindings': urn_comunica_default_hash_bindings_mediators_main,\n 'cacheSize': 100,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#reduced',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_service = new (require('@comunica/actor-query-operation-service').ActorQueryOperationService)({\n 'forceSparqlEndpoint': false,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#service',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_slice = new (require('@comunica/actor-query-operation-slice').ActorQueryOperationSlice)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#slice',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_union = new (require('@comunica/actor-query-operation-union').ActorQueryOperationUnion)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#union',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_alt = new (require('@comunica/actor-query-operation-path-alt').ActorQueryOperationPathAlt)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-alt',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_inv = new (require('@comunica/actor-query-operation-path-inv').ActorQueryOperationPathInv)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-inv',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_link = new (require('@comunica/actor-query-operation-path-link').ActorQueryOperationPathLink)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-link',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_nps = new (require('@comunica/actor-query-operation-path-nps').ActorQueryOperationPathNps)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-nps',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_one_or_more = new (require('@comunica/actor-query-operation-path-one-or-more').ActorQueryOperationPathOneOrMore)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-one-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_more = new (require('@comunica/actor-query-operation-path-zero-or-more').ActorQueryOperationPathZeroOrMore)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-more',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_zero_or_one = new (require('@comunica/actor-query-operation-path-zero-or-one').ActorQueryOperationPathZeroOrOne)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-zero-or-one',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_add = new (require('@comunica/actor-query-operation-update-add-rewrite').ActorQueryOperationAddRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-add',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_composite = new (require('@comunica/actor-query-operation-update-compositeupdate').ActorQueryOperationUpdateCompositeUpdate)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-composite',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_copy = new (require('@comunica/actor-query-operation-update-copy-rewrite').ActorQueryOperationCopyRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-copy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_move = new (require('@comunica/actor-query-operation-update-move-rewrite').ActorQueryOperationMoveRewrite)({\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-move',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_init_actors_query = new (require('@comunica/actor-init-query').ActorInitQuery)({\n 'mediatorOptimizeQueryOperation': urn_comunica_default_optimize_query_operation_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorQueryParse': urn_comunica_default_query_parse_mediators_main,\n 'mediatorQueryResultSerialize': urn_comunica_default_query_result_serialize_mediators_serialize,\n 'mediatorQueryResultSerializeMediaTypeCombiner': urn_comunica_default_query_result_serialize_mediators_mediaType,\n 'mediatorQueryResultSerializeMediaTypeFormatCombiner': urn_comunica_default_query_result_serialize_mediators_mediaTypeFormat,\n 'mediatorContextPreprocess': urn_comunica_default_context_preprocess_mediators_main,\n 'mediatorHttpInvalidate': urn_comunica_default_http_invalidate_mediators_main,\n 'logger': df_395_1,\n 'defaultQueryInputFormat': 'sparql',\n 'contextKeyShortcuts': {\"baseIRI\":\"@comunica/actor-init-query:baseIRI\",\"datetime\":\"@comunica/actor-http-memento:datetime\",\"destination\":\"@comunica/bus-rdf-update-quads:destination\",\"explain\":\"@comunica/actor-init-query:explain\",\"extensionFunctionCreator\":\"@comunica/actor-init-query:extensionFunctionCreator\",\"extensionFunctions\":\"@comunica/actor-init-query:extensionFunctions\",\"fetch\":\"@comunica/bus-http:fetch\",\"httpAuth\":\"@comunica/bus-http:auth\",\"httpIncludeCredentials\":\"@comunica/bus-http:include-credentials\",\"httpProxyHandler\":\"@comunica/actor-http-proxy:httpProxyHandler\",\"initialBindings\":\"@comunica/actor-init-query:initialBindings\",\"lenient\":\"@comunica/actor-init-query:lenient\",\"log\":\"@comunica/core:log\",\"queryFormat\":\"@comunica/actor-init-query:queryFormat\",\"queryTimestamp\":\"@comunica/actor-init-query:queryTimestamp\",\"readOnly\":\"@comunica/bus-query-operation:readOnly\",\"source\":\"@comunica/bus-rdf-resolve-quad-pattern:source\",\"sources\":\"@comunica/bus-rdf-resolve-quad-pattern:sources\"},\n 'name': 'urn:comunica:default:init/actors#query',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_rdf = new (require('@comunica/actor-query-result-serialize-rdf').ActorQueryResultSerializeRdf)({\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'mediatorMediaTypeCombiner': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorMediaTypeFormatCombiner': urn_comunica_default_rdf_serialize_mediators_mediaTypeFormat,\n 'name': 'urn:comunica:default:query-result-serialize/actors#rdf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_query_result_serialize_actors_stats = new (require('@comunica/actor-query-result-serialize-stats').ActorQueryResultSerializeStats)({\n 'httpObserver': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_query_result_serialize_stats__2_0_0_components_ActorQueryResultSerializeStats_jsonld_ActorQueryResultSerializeStats_default_observer,\n 'mediaTypePriorities': {\"stats\":0.5},\n 'mediaTypeFormats': {\"stats\":\"https://comunica.linkeddatafragments.org/#results_stats\"},\n 'name': 'urn:comunica:default:query-result-serialize/actors#stats',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_result_serialize__2_0_0_components_ActorQueryResultSerialize_jsonld_ActorQueryResultSerialize_default_bus\n});\nconst urn_comunica_default_rdf_parse_actors_jsonld = new (require('@comunica/actor-rdf-parse-jsonld').ActorRdfParseJsonLd)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediaTypePriorities': {\"application/json\":0.5,\"application/ld+json\":1},\n 'mediaTypeFormats': {\"application/json\":\"http://www.w3.org/ns/formats/JSON-LD\",\"application/ld+json\":\"http://www.w3.org/ns/formats/JSON-LD\"},\n 'priorityScale': 0.9,\n 'name': 'urn:comunica:default:rdf-parse/actors#jsonld',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse__2_0_0_components_ActorRdfParse_jsonld_ActorRdfParse_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql = new (require('@comunica/actor-rdf-resolve-hypermedia-sparql').ActorRdfResolveHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffix': true,\n 'forceHttpGet': false,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_patch_sparql_update = new (require('@comunica/actor-rdf-update-hypermedia-patch-sparql-update').ActorRdfUpdateHypermediaPatchSparqlUpdate)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#patch-sparql-update',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_put_ldp = new (require('@comunica/actor-rdf-update-hypermedia-put-ldp').ActorRdfUpdateHypermediaPutLdp)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'mediatorRdfSerializeMediatypes': urn_comunica_default_rdf_serialize_mediators_mediaType,\n 'mediatorRdfSerialize': urn_comunica_default_rdf_serialize_mediators_serialize,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#put-ldp',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_update_hypermedia_actors_sparql = new (require('@comunica/actor-rdf-update-hypermedia-sparql').ActorRdfUpdateHypermediaSparql)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffixSparql': true,\n 'checkUrlSuffixUpdate': true,\n 'name': 'urn:comunica:default:rdf-update-hypermedia/actors#sparql',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_hypermedia__2_0_0_components_ActorRdfUpdateHypermedia_jsonld_ActorRdfUpdateHypermedia_default_bus\n});\nconst urn_comunica_default_query_operation_actors_sparql_endpoint = new (require('@comunica/actor-query-operation-sparql-endpoint').ActorQueryOperationSparqlEndpoint)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'checkUrlSuffixSparql': true,\n 'checkUrlSuffixUpdate': true,\n 'forceHttpGet': false,\n 'name': 'urn:comunica:default:query-operation/actors#sparql-endpoint',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_dereference_rdf_actors_parse = new (require('@comunica/actor-dereference-rdf-parse').ActorDereferenceRdfParse)({\n 'mediatorDereference': urn_comunica_default_dereference_mediators_main,\n 'mediatorParse': urn_comunica_default_rdf_parse_mediators_parse,\n 'mediatorParseMediatypes': urn_comunica_default_rdf_parse_mediators_mediaType,\n 'mediaMappings': {\"htm\":\"text/html\",\"html\":\"text/html\",\"json\":\"application/json\",\"jsonld\":\"application/ld+json\",\"n3\":\"text/n3\",\"nq\":\"application/n-quads\",\"nquads\":\"application/n-quads\",\"nt\":\"application/n-triples\",\"ntriples\":\"application/n-triples\",\"owl\":\"application/rdf+xml\",\"rdf\":\"application/rdf+xml\",\"rdfxml\":\"application/rdf+xml\",\"svg\":\"image/svg+xml\",\"svgz\":\"image/svg+xml\",\"trig\":\"application/trig\",\"ttl\":\"text/turtle\",\"turtle\":\"text/turtle\",\"xht\":\"application/xhtml+xml\",\"xhtml\":\"application/xhtml+xml\",\"xml\":\"application/xml\"},\n 'name': 'urn:comunica:default:dereference-rdf/actors#parse',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference_rdf__2_0_0_components_ActorDereferenceRdf_jsonld_ActorDereferenceRdf_default_bus\n});\nconst urn_comunica_default_rdf_parse_html_actors_script = new (require('@comunica/actor-rdf-parse-html-script').ActorRdfParseHtmlScript)({\n 'mediatorRdfParseMediatypes': urn_comunica_default_rdf_parse_mediators_mediaType,\n 'mediatorRdfParseHandle': urn_comunica_default_rdf_parse_mediators_parse,\n 'name': 'urn:comunica:default:rdf-parse-html/actors#script',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_parse_html__2_0_0_components_ActorRdfParseHtml_jsonld_ActorRdfParseHtml_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_none = new (require('@comunica/actor-rdf-join-inner-none').ActorRdfJoinNone)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-none',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_single = new (require('@comunica/actor-rdf-join-inner-single').ActorRdfJoinSingle)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-single',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_empty = new (require('@comunica/actor-rdf-join-inner-multi-empty').ActorRdfJoinMultiEmpty)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-empty',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_bind = new (require('@comunica/actor-rdf-join-inner-multi-bind').ActorRdfJoinMultiBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_hash = new (require('@comunica/actor-rdf-join-inner-hash').ActorRdfJoinHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_symmetric_hash = new (require('@comunica/actor-rdf-join-inner-symmetrichash').ActorRdfJoinSymmetricHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-symmetric-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_nested_loop = new (require('@comunica/actor-rdf-join-inner-nestedloop').ActorRdfJoinNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash = new (require('@comunica/actor-rdf-join-minus-hash').ActorRdfJoinMinusHash)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_minus_hash_undef = new (require('@comunica/actor-rdf-join-minus-hash-undef').ActorRdfJoinMinusHashUndef)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#minus-hash-undef',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_bind = new (require('@comunica/actor-rdf-join-optional-bind').ActorRdfJoinOptionalBind)({\n 'bindOrder': 'depth-first',\n 'selectivityModifier': 0.0001,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-bind',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_optional_nested_loop = new (require('@comunica/actor-rdf-join-optional-nestedloop').ActorRdfJoinOptionalNestedLoop)({\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#optional-nested-loop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_rdf_resolve_hypermedia_actors_qpf = new (require('@comunica/actor-rdf-resolve-hypermedia-qpf').ActorRdfResolveHypermediaQpf)({\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'subjectUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#subject',\n 'predicateUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate',\n 'objectUri': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#object',\n 'graphUri': 'http://www.w3.org/ns/sparql-service-description#graph',\n 'name': 'urn:comunica:default:rdf-resolve-hypermedia/actors#qpf',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_hypermedia__2_0_0_components_ActorRdfResolveHypermedia_jsonld_ActorRdfResolveHypermedia_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_hypermedia = new (require('@comunica/actor-rdf-resolve-quad-pattern-hypermedia').ActorRdfResolveQuadPatternHypermedia)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_resolve_quad_pattern_hypermedia__2_0_0_components_ActorRdfResolveQuadPatternHypermedia_jsonld_IActorRdfResolveQuadPatternHypermediaArgs_default_invalidator,\n 'maxIterators': 64,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorRdfResolveHypermedia': urn_comunica_default_rdf_resolve_hypermedia_mediators_main,\n 'mediatorRdfResolveHypermediaLinks': urn_comunica_default_rdf_resolve_hypermedia_links_mediators_main,\n 'mediatorRdfResolveHypermediaLinksQueue': urn_comunica_default_rdf_resolve_hypermedia_links_queue_mediators_main,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_rdf_update_quads_actors_hypermedia = new (require('@comunica/actor-rdf-update-quads-hypermedia').ActorRdfUpdateQuadsHypermedia)({\n 'cacheSize': 100,\n 'httpInvalidator': https___linkedsoftwaredependencies_org_bundles_npm__comunica_actor_rdf_update_quads_hypermedia__2_0_0_components_ActorRdfUpdateQuadsHypermedia_jsonld_IActorRdfUpdateQuadsHypermediaArgs_default_invalidator,\n 'mediatorDereferenceRdf': urn_comunica_default_dereference_rdf_mediators_main,\n 'mediatorMetadata': urn_comunica_default_rdf_metadata_mediators_main,\n 'mediatorMetadataExtract': urn_comunica_default_rdf_metadata_extract_mediators_main,\n 'mediatorRdfUpdateHypermedia': urn_comunica_default_rdf_update_hypermedia_mediators_main,\n 'name': 'urn:comunica:default:rdf-update-quads/actors#hypermedia',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_update_quads__2_0_0_components_ActorRdfUpdateQuads_jsonld_ActorRdfUpdateQuads_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_clear = new (require('@comunica/actor-query-operation-update-clear').ActorQueryOperationClear)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-clear',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_create = new (require('@comunica/actor-query-operation-update-create').ActorQueryOperationCreate)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-create',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_delete_insert = new (require('@comunica/actor-query-operation-update-deleteinsert').ActorQueryOperationUpdateDeleteInsert)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-delete-insert',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_drop = new (require('@comunica/actor-query-operation-update-drop').ActorQueryOperationDrop)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-drop',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_update_load = new (require('@comunica/actor-query-operation-update-load').ActorQueryOperationLoad)({\n 'mediatorUpdateQuads': urn_comunica_default_rdf_update_quads_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#update-load',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_join = new (require('@comunica/actor-query-operation-join').ActorQueryOperationJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#join',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_leftjoin = new (require('@comunica/actor-query-operation-leftjoin').ActorQueryOperationLeftJoin)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#leftjoin',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_minus = new (require('@comunica/actor-query-operation-minus').ActorQueryOperationMinus)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#minus',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_query_operation_actors_path_seq = new (require('@comunica/actor-query-operation-path-seq').ActorQueryOperationPathSeq)({\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorQueryOperation': urn_comunica_default_query_operation_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#path-seq',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_join_actors_inner_multi_smallest = new (require('@comunica/actor-rdf-join-inner-multi-smallest').ActorRdfJoinMultiSmallest)({\n 'mediatorJoinEntriesSort': urn_comunica_default_rdf_join_entries_sort_mediators_main,\n 'mediatorJoin': urn_comunica_default_rdf_join_mediators_main,\n 'mediatorJoinSelectivity': urn_comunica_default_rdf_join_selectivity_mediators_main,\n 'name': 'urn:comunica:default:rdf-join/actors#inner-multi-smallest',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_join__2_0_0_components_ActorRdfJoin_jsonld_ActorRdfJoin_default_bus\n});\nconst urn_comunica_default_query_operation_actors_quadpattern = new (require('@comunica/actor-query-operation-quadpattern').ActorQueryOperationQuadpattern)({\n 'mediatorResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'name': 'urn:comunica:default:query-operation/actors#quadpattern',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_query_operation__2_0_0_components_ActorQueryOperation_jsonld_ActorQueryOperation_default_bus\n});\nconst urn_comunica_default_rdf_resolve_quad_pattern_actors_federated = new (require('@comunica/actor-rdf-resolve-quad-pattern-federated').ActorRdfResolveQuadPatternFederated)({\n 'mediatorResolveQuadPattern': urn_comunica_default_rdf_resolve_quad_pattern_mediators_main,\n 'skipEmptyPatterns': false,\n 'name': 'urn:comunica:default:rdf-resolve-quad-pattern/actors#federated',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_rdf_resolve_quad_pattern__2_0_0_components_ActorRdfResolveQuadPattern_jsonld_ActorRdfResolveQuadPattern_default_bus\n});\nconst urn_comunica_default_http_actors_proxy = new (require('@comunica/actor-http-proxy').ActorHttpProxy)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'name': 'urn:comunica:default:http/actors#proxy',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_http__2_0_0_components_ActorHttp_jsonld_ActorHttp_default_bus,\n 'beforeActors': [\n urn_comunica_default_http_actors_fetch\n]\n});\nconst urn_comunica_default_dereference_actors_http = new (require('@comunica/actor-dereference-http').ActorDereferenceHttp)({\n 'mediatorHttp': urn_comunica_default_http_mediators_main,\n 'maxAcceptHeaderLength': 1024,\n 'maxAcceptHeaderLengthBrowser': 128,\n 'name': 'urn:comunica:default:dereference/actors#http',\n 'bus': https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_dereference__2_0_0_components_ActorDereference_jsonld_ActorDereference_default_bus,\n 'beforeActors': [\n urn_comunica_default_dereference_actors_fallback\n]\n});\nconst urn_comunica_default_Runner = (https___linkedsoftwaredependencies_org_bundles_npm__comunica_bus_init__2_0_0_components_ActorInit_jsonld_ActorInit_default_bus, [\n urn_comunica_default_context_preprocess_actors_source_to_destination,\n urn_comunica_default_hash_bindings_actors_sha1,\n urn_comunica_default_init_actors_query,\n urn_comunica_default_optimize_query_operation_actors_join_bgp,\n urn_comunica_default_optimize_query_operation_actors_bgp_to_join,\n urn_comunica_default_optimize_query_operation_actors_join_connected,\n urn_comunica_default_query_parse_actors_sparql,\n urn_comunica_default_query_parse_actors_graphql,\n urn_comunica_default_query_result_serialize_actors_json,\n urn_comunica_default_query_result_serialize_actors_rdf,\n urn_comunica_default_query_result_serialize_actors_simple,\n urn_comunica_default_query_result_serialize_actors_csv,\n urn_comunica_default_query_result_serialize_actors_sparql_json,\n urn_comunica_default_query_result_serialize_actors_sparql_tsv,\n urn_comunica_default_query_result_serialize_actors_sparql_xml,\n urn_comunica_default_query_result_serialize_actors_stats,\n urn_comunica_default_query_result_serialize_actors_table,\n urn_comunica_default_query_result_serialize_actors_tree,\n urn_comunica_default_dereference_actors_http,\n urn_comunica_default_dereference_actors_fallback,\n urn_comunica_default_dereference_rdf_actors_parse,\n urn_comunica_default_rdf_join_entries_sort_actors_cardinality,\n urn_comunica_default_rdf_join_selectivity_actors_variable_counting,\n urn_comunica_default_rdf_metadata_actors_primary_topic,\n urn_comunica_default_rdf_metadata_actors_all,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_controls,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_count,\n urn_comunica_default_rdf_metadata_extract_actors_hydra_pagesize,\n urn_comunica_default_rdf_metadata_extract_actors_request_time,\n urn_comunica_default_rdf_metadata_extract_actors_allow_http_methods,\n urn_comunica_default_rdf_metadata_extract_actors_put_accepted,\n urn_comunica_default_rdf_metadata_extract_actors_patch_sparql_update,\n urn_comunica_default_rdf_metadata_extract_actors_sparql_service,\n urn_comunica_default_rdf_parse_actors_n3,\n urn_comunica_default_rdf_parse_actors_jsonld,\n urn_comunica_default_rdf_parse_actors_rdfxml,\n urn_comunica_default_rdf_parse_actors_xmlrdfa,\n urn_comunica_default_rdf_parse_actors_html,\n urn_comunica_default_rdf_parse_html_actors_microdata,\n urn_comunica_default_rdf_parse_html_actors_rdfa,\n urn_comunica_default_rdf_parse_html_actors_script,\n urn_comunica_default_rdf_resolve_hypermedia_actors_qpf,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_sparql,\n urn_comunica_default_rdf_resolve_hypermedia_actors_none,\n urn_comunica_default_rdf_resolve_hypermedia_links_actors_next,\n urn_comunica_default_rdf_resolve_hypermedia_links_queue_actors_fifo,\n urn_comunica_default_rdf_serialize_actors_n3,\n urn_comunica_default_rdf_serialize_actors_jsonld,\n urn_comunica_default_rdf_update_hypermedia_actors_patch_sparql_update,\n urn_comunica_default_rdf_update_hypermedia_actors_put_ldp,\n urn_comunica_default_rdf_update_hypermedia_actors_sparql,\n urn_comunica_default_rdf_update_quads_actors_hypermedia,\n urn_comunica_default_rdf_update_quads_actors_rdfjs_store,\n urn_comunica_default_http_actors_proxy,\n urn_comunica_default_http_actors_fetch,\n urn_comunica_default_query_operation_actors_ask,\n urn_comunica_default_query_operation_actors_bgp,\n urn_comunica_default_query_operation_actors_construct,\n urn_comunica_default_query_operation_actors_describe,\n urn_comunica_default_query_operation_actors_distinct,\n urn_comunica_default_query_operation_actors_extend,\n urn_comunica_default_query_operation_actors_filter,\n urn_comunica_default_query_operation_actors_from,\n urn_comunica_default_query_operation_actors_group,\n urn_comunica_default_query_operation_actors_join,\n urn_comunica_default_query_operation_actors_leftjoin,\n urn_comunica_default_query_operation_actors_minus,\n urn_comunica_default_query_operation_actors_nop,\n urn_comunica_default_query_operation_actors_orderby,\n urn_comunica_default_query_operation_actors_project,\n urn_comunica_default_query_operation_actors_quadpattern,\n urn_comunica_default_query_operation_actors_reduced,\n urn_comunica_default_query_operation_actors_service,\n urn_comunica_default_query_operation_actors_slice,\n urn_comunica_default_query_operation_actors_sparql_endpoint,\n urn_comunica_default_query_operation_actors_union,\n urn_comunica_default_query_operation_actors_values,\n urn_comunica_default_query_operation_actors_path_alt,\n urn_comunica_default_query_operation_actors_path_inv,\n urn_comunica_default_query_operation_actors_path_link,\n urn_comunica_default_query_operation_actors_path_nps,\n urn_comunica_default_query_operation_actors_path_one_or_more,\n urn_comunica_default_query_operation_actors_path_seq,\n urn_comunica_default_query_operation_actors_path_zero_or_more,\n urn_comunica_default_query_operation_actors_path_zero_or_one,\n urn_comunica_default_query_operation_actors_update_add,\n urn_comunica_default_query_operation_actors_update_clear,\n urn_comunica_default_query_operation_actors_update_composite,\n urn_comunica_default_query_operation_actors_update_copy,\n urn_comunica_default_query_operation_actors_update_create,\n urn_comunica_default_query_operation_actors_update_delete_insert,\n urn_comunica_default_query_operation_actors_update_drop,\n urn_comunica_default_query_operation_actors_update_load,\n urn_comunica_default_query_operation_actors_update_move,\n urn_comunica_default_rdf_join_actors_inner_none,\n urn_comunica_default_rdf_join_actors_inner_single,\n urn_comunica_default_rdf_join_actors_inner_multi_empty,\n urn_comunica_default_rdf_join_actors_inner_multi_bind,\n urn_comunica_default_rdf_join_actors_inner_hash,\n urn_comunica_default_rdf_join_actors_inner_symmetric_hash,\n urn_comunica_default_rdf_join_actors_inner_nested_loop,\n urn_comunica_default_rdf_join_actors_inner_multi_smallest,\n urn_comunica_default_rdf_join_actors_minus_hash,\n urn_comunica_default_rdf_join_actors_minus_hash_undef,\n urn_comunica_default_rdf_join_actors_optional_bind,\n urn_comunica_default_rdf_join_actors_optional_nested_loop,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_federated,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_hypermedia,\n urn_comunica_default_rdf_resolve_quad_pattern_actors_rdfjs_source\n]);\nmodule.exports = urn_comunica_default_init_actors_query;\n\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2021 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (object === null || typeof object !== 'object' || object.toJSON != null) {\n return JSON.stringify(object);\n }\n\n if (Array.isArray(object)) {\n return '[' + object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return t + comma + serialize(value);\n }, '') + ']';\n }\n\n return '{' + Object.keys(object).sort().reduce((t, cv, ci) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return t + comma + serialize(cv) + ':' + serialize(object[cv]);\n }, '') + '}';\n};\n","(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(typeof self !== 'undefined' ? self : this);\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeNames = exports.elementNames = void 0;\nexports.elementNames = new Map([\n [\"altglyph\", \"altGlyph\"],\n [\"altglyphdef\", \"altGlyphDef\"],\n [\"altglyphitem\", \"altGlyphItem\"],\n [\"animatecolor\", \"animateColor\"],\n [\"animatemotion\", \"animateMotion\"],\n [\"animatetransform\", \"animateTransform\"],\n [\"clippath\", \"clipPath\"],\n [\"feblend\", \"feBlend\"],\n [\"fecolormatrix\", \"feColorMatrix\"],\n [\"fecomponenttransfer\", \"feComponentTransfer\"],\n [\"fecomposite\", \"feComposite\"],\n [\"feconvolvematrix\", \"feConvolveMatrix\"],\n [\"fediffuselighting\", \"feDiffuseLighting\"],\n [\"fedisplacementmap\", \"feDisplacementMap\"],\n [\"fedistantlight\", \"feDistantLight\"],\n [\"fedropshadow\", \"feDropShadow\"],\n [\"feflood\", \"feFlood\"],\n [\"fefunca\", \"feFuncA\"],\n [\"fefuncb\", \"feFuncB\"],\n [\"fefuncg\", \"feFuncG\"],\n [\"fefuncr\", \"feFuncR\"],\n [\"fegaussianblur\", \"feGaussianBlur\"],\n [\"feimage\", \"feImage\"],\n [\"femerge\", \"feMerge\"],\n [\"femergenode\", \"feMergeNode\"],\n [\"femorphology\", \"feMorphology\"],\n [\"feoffset\", \"feOffset\"],\n [\"fepointlight\", \"fePointLight\"],\n [\"fespecularlighting\", \"feSpecularLighting\"],\n [\"fespotlight\", \"feSpotLight\"],\n [\"fetile\", \"feTile\"],\n [\"feturbulence\", \"feTurbulence\"],\n [\"foreignobject\", \"foreignObject\"],\n [\"glyphref\", \"glyphRef\"],\n [\"lineargradient\", \"linearGradient\"],\n [\"radialgradient\", \"radialGradient\"],\n [\"textpath\", \"textPath\"],\n]);\nexports.attributeNames = new Map([\n [\"definitionurl\", \"definitionURL\"],\n [\"attributename\", \"attributeName\"],\n [\"attributetype\", \"attributeType\"],\n [\"basefrequency\", \"baseFrequency\"],\n [\"baseprofile\", \"baseProfile\"],\n [\"calcmode\", \"calcMode\"],\n [\"clippathunits\", \"clipPathUnits\"],\n [\"diffuseconstant\", \"diffuseConstant\"],\n [\"edgemode\", \"edgeMode\"],\n [\"filterunits\", \"filterUnits\"],\n [\"glyphref\", \"glyphRef\"],\n [\"gradienttransform\", \"gradientTransform\"],\n [\"gradientunits\", \"gradientUnits\"],\n [\"kernelmatrix\", \"kernelMatrix\"],\n [\"kernelunitlength\", \"kernelUnitLength\"],\n [\"keypoints\", \"keyPoints\"],\n [\"keysplines\", \"keySplines\"],\n [\"keytimes\", \"keyTimes\"],\n [\"lengthadjust\", \"lengthAdjust\"],\n [\"limitingconeangle\", \"limitingConeAngle\"],\n [\"markerheight\", \"markerHeight\"],\n [\"markerunits\", \"markerUnits\"],\n [\"markerwidth\", \"markerWidth\"],\n [\"maskcontentunits\", \"maskContentUnits\"],\n [\"maskunits\", \"maskUnits\"],\n [\"numoctaves\", \"numOctaves\"],\n [\"pathlength\", \"pathLength\"],\n [\"patterncontentunits\", \"patternContentUnits\"],\n [\"patterntransform\", \"patternTransform\"],\n [\"patternunits\", \"patternUnits\"],\n [\"pointsatx\", \"pointsAtX\"],\n [\"pointsaty\", \"pointsAtY\"],\n [\"pointsatz\", \"pointsAtZ\"],\n [\"preservealpha\", \"preserveAlpha\"],\n [\"preserveaspectratio\", \"preserveAspectRatio\"],\n [\"primitiveunits\", \"primitiveUnits\"],\n [\"refx\", \"refX\"],\n [\"refy\", \"refY\"],\n [\"repeatcount\", \"repeatCount\"],\n [\"repeatdur\", \"repeatDur\"],\n [\"requiredextensions\", \"requiredExtensions\"],\n [\"requiredfeatures\", \"requiredFeatures\"],\n [\"specularconstant\", \"specularConstant\"],\n [\"specularexponent\", \"specularExponent\"],\n [\"spreadmethod\", \"spreadMethod\"],\n [\"startoffset\", \"startOffset\"],\n [\"stddeviation\", \"stdDeviation\"],\n [\"stitchtiles\", \"stitchTiles\"],\n [\"surfacescale\", \"surfaceScale\"],\n [\"systemlanguage\", \"systemLanguage\"],\n [\"tablevalues\", \"tableValues\"],\n [\"targetx\", \"targetX\"],\n [\"targety\", \"targetY\"],\n [\"textlength\", \"textLength\"],\n [\"viewbox\", \"viewBox\"],\n [\"viewtarget\", \"viewTarget\"],\n [\"xchannelselector\", \"xChannelSelector\"],\n [\"ychannelselector\", \"yChannelSelector\"],\n [\"zoomandpan\", \"zoomAndPan\"],\n]);\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Module dependencies\n */\nvar ElementType = __importStar(require(\"domelementtype\"));\nvar entities_1 = require(\"entities\");\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nvar foreignNames_1 = require(\"./foreignNames\");\nvar unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n if (!attributes)\n return;\n return Object.keys(attributes)\n .map(function (key) {\n var _a, _b;\n var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = foreignNames_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return key + \"=\\\"\" + (opts.decodeEntities !== false\n ? entities_1.encodeXML(value)\n : value.replace(/\"/g, \""\")) + \"\\\"\";\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nvar singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nfunction render(node, options) {\n if (options === void 0) { options = {}; }\n var nodes = \"length\" in node ? node : [node];\n var output = \"\";\n for (var i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexports.default = render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n case ElementType.Directive:\n case ElementType.Doctype:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nvar foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = foreignNames_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: false });\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: \"foreign\" });\n }\n var tag = \"<\" + elem.name;\n var attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += \" \" + attribs;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += \"\";\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return \"<\" + elem.data + \">\";\n}\nfunction renderText(elem, opts) {\n var data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (opts.decodeEntities !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data = entities_1.encodeXML(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return \"\";\n}\nfunction renderComment(elem) {\n return \"\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for